Πώς να εκχωρήσετε ένα πρόγραμμα σε έναν πυρήνα CPU χρησιμοποιώντας ένα σύνολο εργασιών

Καθώς οι πολυπύρηνοι επεξεργαστές γίνονται όλο και πιο συνηθισμένοι σε διακομιστές, φορητούς υπολογιστές ή επιτραπέζιους υπολογιστές, ακόμη και σε φορητές συσκευές, όλο και περισσότερες εφαρμογές βελτιστοποιούνται για αυτόν τον τύπο συστήματος. Ωστόσο, μερικές φορές μπορεί να είναι χρήσιμο να συνδέσετε ένα πρόγραμμα ή μια διαδικασία με έναν ή περισσότερους συγκεκριμένους πυρήνες. Ας δούμε πώς να το αποκτήσουμε ...

Εγκαταστήστε το σύνολο εργασιών

Το εργαλείο σετ εργασιών είναι μέρος του πακέτου "util-linux". Οι περισσότερες διανομές Linux παρέχονται από προεπιλογή με το πακέτο. Σε περίπτωση που το σύνολο εργασιών δεν είναι διαθέσιμο, μπορείτε να το εγκαταστήσετε ως εξής:

En Debian / Ubuntu και παράγωγα:

sudo apt-get install util-linux

En Μαλακό καπέλλο και παράγωγα:

sudo yum εγκαταστήστε το util-linux

Δείτε τη συνάφεια της CPU μιας διαδικασίας που εκτελείται

Για να ανακτήσετε πληροφορίες συγγένειας CPU για μια διαδικασία, χρησιμοποιήστε την ακόλουθη μορφή:

tasket -p PID

Για παράδειγμα, για να ελέγξετε τη συνάφεια της CPU μιας διαδικασίας με το PID 2915:

tasket -p 2915

Επιστρέφει το αποτέλεσμα:

τρέχουσα μάσκα συνάφειας pid 2915: ff

Το σύνολο εργασιών επιστρέφει την τρέχουσα συνάφεια της CPU σε δεκαεξαδική μορφή μάσκας bit. Στο παράδειγμα, η συνάφεια (αντιπροσωπεύεται σε δεκαεξαδική μάσκα bit) αντιστοιχεί στο "11111111" σε δυαδική μορφή, πράγμα που σημαίνει ότι η διαδικασία μπορεί να εκτελεστεί σε οκτώ διαφορετικούς πυρήνες CPU (0 έως 7).

Το χαμηλότερο bit σε μια δεκαεξαδική μάσκα bit αντιστοιχεί στον πυρήνα ID 0, το δεύτερο χαμηλότερο bit από το δικαίωμα στον πυρήνα ID 1, το τρίτο χαμηλότερο bit στον πυρήνα ID 2 κ.λπ. Έτσι, για παράδειγμα, μια συγγένεια CPU "0x11" αντιπροσωπεύει τα βασικά αναγνωριστικά 0 και 4.

Το σύνολο εργασιών μπορεί να εμφανίσει τη συνάφεια της CPU ως λίστα επεξεργαστών αντί για bitmask, κάτι που είναι πολύ πιο εύκολο να διαβαστεί. Για να χρησιμοποιήσετε αυτήν τη μορφή, πρέπει να εκτελέσετε σύνολο εργασιών με την επιλογή "-c". Για παράδειγμα:

σύνολο εργασιών -cp 2915

Επιστρέφει το αποτέλεσμα:

pid 2915 τρέχουσα λίστα συνάφειας: 0-7

Αναγκάστε μια διαδικασία να εκτελεστεί σε έναν συγκεκριμένο πυρήνα

Χρησιμοποιώντας ένα σύνολο εργασιών, μια τρέχουσα διαδικασία μπορεί να αντιστοιχιστεί σε έναν συγκεκριμένο πυρήνα CPU. Για να το κάνετε αυτό, πρέπει να χρησιμοποιήσετε την ακόλουθη μορφή:

tasket -p COREMASK PID tasket -cp CORE-LIST PID

Για παράδειγμα, για να αντιστοιχίσετε μια διαδικασία στους πυρήνες 0 και 4, θα εκτελέσετε:

tasket -p 0x11 9030

Τι επιστρέφει το αποτέλεσμα:

τρέχουσα μάσκα συγγένειας pid 9030: νέα μάσκα συγγένειας pid 9030: 11

Ομοίως, μπορείτε να εκτελέσετε:

σύνολο εργασιών -cp 0,4 9030

Με την επιλογή "-c", μπορείτε να καθορίσετε μια λίστα αριθμητικών αναγνωριστικών πυρήνα, διαχωρισμένα με κόμματα ή ακόμη και να συμπεριλάβετε εύρη (για παράδειγμα, 0,2,5,6-10).

Ξεκινήστε ένα πρόγραμμα χρησιμοποιώντας έναν συγκεκριμένο πυρήνα

Το tasket επιτρέπει επίσης την έναρξη ενός νέου προγράμματος χρησιμοποιώντας έναν αριθμό συγκεκριμένων πυρήνων. Για να γίνει αυτό, πρέπει να χρησιμοποιηθεί στην ακόλουθη μορφή:

COREMASK EXECUTABLE σύνολο εργασιών

Για παράδειγμα, για να ξεκινήσετε το πρόγραμμα VLC στο CPU core ID 0, χρησιμοποιήστε την ακόλουθη εντολή:

σύνολο εργασιών -c 0 vlc

Αφιερώστε έναν πυρήνα μόνο σε ένα συγκεκριμένο πρόγραμμα

Παρόλο που το σύνολο εργασιών επιτρέπει την εκχώρηση ενός προγράμματος σε έναν συγκεκριμένο πυρήνα, αυτό δεν σημαίνει ότι δεν υπάρχουν άλλα προγράμματα ή διαδικασίες που το χρησιμοποιούν. Για να αποφύγετε αυτό και να αφιερώσετε έναν ολόκληρο πυρήνα σε ένα συγκεκριμένο πρόγραμμα, πρέπει να χρησιμοποιήσετε την παράμετρο πυρήνα "isolcpus", η οποία σας επιτρέπει να κάνετε κράτηση ενός πυρήνα κατά την εκκίνηση.

Για να το κάνετε αυτό, πρέπει να προσθέσετε την παράμετρο "isolcpus =" στη γραμμή του πυρήνα στο GRUB. Για παράδειγμα, για να δεσμεύσετε τους πυρήνες ID 0 και 1, προσθέστε το "isolcpus = 0,1".

Μόλις γίνει αυτό, ο προγραμματιστής Linux δεν θα εκχωρήσει κανονικές διαδικασίες στον δεσμευμένο πυρήνα, εκτός εάν έχει εκχωρηθεί συγκεκριμένα με το σύνολο εργασιών.

πηγή: xmodulo & σελίδες εργασίας.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   πετροχέκο dijo

    Καλή ανάρτηση :).

  2.   Luis dijo

    Καλή ανάρτηση αλλά χωρίς το πνεύμα των συρτών ...

    Ποια είναι η χρήση της εκχώρησης ενός προγράμματος σε έναν συγκεκριμένο πυρήνα ;;;

    Εννοώ; Εάν έχετε έναν υπολογιστή με 12 πυρήνες, το λογικό θα ήταν να εκτελεστεί ένα συγκεκριμένο πρόγραμμα χρησιμοποιώντας αυτούς τους 12 πυρήνες και να μην τον περιορίσουμε αφού έτσι έχουμε την υψηλότερη δυνατή απόδοση.

    Αυτό που βλέπω είναι χρήσιμο είναι η επιλογή που μας επιτρέπει να μην αντιστοιχίσουμε καμία διαδικασία σε έναν συγκεκριμένο πυρήνα, αφήνοντας την αποκλειστική χρήση του σε ένα συγκεκριμένο πρόγραμμα.

    1.    jvk85321 dijo

      Είναι λογικό αυτό που αναφέρετε, επιτρέποντας στον αρμόδιο για το σχεδιασμό να χρησιμοποιήσει όλους τους πυρήνες, οι πόροι είναι καλύτερα ισορροπημένοι, αλλά μερικές φορές απαιτείται ένας αποκλειστικός πυρήνας, όπως η εκτέλεση μιας εικονικής μηχανής με συγκεκριμένη εργασία, η απόδοση αυτού του μηχανήματος βελτιώνεται σημαντικά όταν δεν εκτελούνται άλλες διαδικασίες στον εκχωρημένο πυρήνα.

      atte
      jvk85321

      1.    ας χρησιμοποιήσουμε το linux dijo

        Ακριβής! Ευχαριστώ, jvk! 🙂

      2.    lf dijo

        Αλλά όταν δημιουργείτε την εικονική μηχανή, σας ζητά να επιλέξετε το ποσό της CPU που έχει διατεθεί ... ποια είναι η χρήση της επιλογής αυτής της τιμής εάν στο τέλος το λειτουργικό σύστημα το παραλείψει και το εκτελεί σε όλους τους CPU ... Για εκεί το παράδειγμα δεν είναι το καλύτερο ...

        Για να λειτουργήσει το Flash σε Windows 8.1 x64, AMD και Firefox, συνιστάται να επιλέξετε το Flash να λειτουργεί μόνο σε μία CPU, ωστόσο δεν λειτούργησε για μένα. Θα ήταν επίσης βολικό αν το προσθέσετε (εάν δεν υπάρχει ήδη) στους διαχειριστές εργασιών της διαφορετικής DE, ή τουλάχιστον στο KDE.

      3.    lf dijo

        Αχ, δεν είχα καταλάβει το τέλος του σχολίου ... Αλλά για αυτό, θα έπρεπε να απαγορευτούν όλες οι διαδικασίες στην CPU που εκτελούν την εικονική μηχανή. Ή εκχωρήστε τα σε άλλες CPU. Ενδιαφέρον και πολύ καλό σχόλιο.

    2.    Fernando dijo

      Χρησιμοποιείται για τη δημιουργία υπερυπολογιστών ιδιοφυίας

  3.   Luis dijo

    Ειναι κατανοητο.

    Ευχαριστώ για την διευκρίνιση.

  4.   Teck dijo

    Κατά την κράτηση ενός πυρήνα για ένα συγκεκριμένο πρόγραμμα, τι συμβαίνει με τα νήματα εκτέλεσης; Σε περίπτωση που το κάνετε με έναν πυρήνα με HT, διατηρεί 2 νήματα εκτέλεσης για το πρόγραμμα.

  5.   διακόπτης dijo

    Αυτή η εντολή μπορεί να μην φαίνεται πολύ χρήσιμη σε υπολογιστές με αρκετούς πυρήνες, αλλά για όσους από εμάς έχουν διπλό πυρήνα είναι αρκετά πρακτική. Για παράδειγμα, έχω ένα παιχνίδι που όταν το ανοίγω χρησιμοποιεί όλους τους πυρήνες του επεξεργαστή και αν έχω και άλλα προγράμματα που χρειάζονται την CPU (όπως κάποια αναζήτηση με grep σε μεγάλα αρχεία) τότε το σύστημα επιβραδύνεται. Η λύση είναι τόσο απλή όσο ο περιορισμός του παιχνιδιού στη χρήση μόνο ενός από τους πυρήνες.
    Συμφωνώ επίσης με την περίπτωση, θα πρέπει πραγματικά να το ενσωματώσουν σε διαχειριστές εργασιών (αυτούς που έχω δοκιμάσει μέχρι τώρα στο Gentoo, νομίζω ότι κανένας δεν το έχει), ειδικά όταν στα Windows είναι κάτι που υπάρχει από το XP (κάντε δεξί κλικ σε μια διαδικασία> "Ορισμός συνάφειας ...") αλλά πριν από λίγο καιρό βρήκα το ακόλουθο σενάριο που μετατρέπει το σύνολο εργασιών σε κάτι λίγο πιο διαισθητικό (αρχικά δημοσιεύτηκε Aquí και υπάρχουν ακόμη και μερικές περιπτώσεις στις οποίες είναι απαραίτητο να διαχειριστείτε τη χρήση των πυρήνων):
    #!/bin/bash
    read -p 'Ingrese el ID del proceso en cuestión: ' ID
    read -p 'Ingrese la lista de procesadores separados por comas: ' P
    echo 'Su ID es '$ID' y los procesadores son '$P
    sudo taskset -p -c $P $ID
    read -p 'Listo, presione enter para finalizar' P

    Με ορισμένες τροποποιήσεις, το όνομα της διαδικασίας θα μπορούσε να υποδειχθεί αντί του PID (ή ότι αποδέχεται και τα δύο και ότι αποφασίζει πότε η παράμετρος είναι η μία ή την άλλη).

  6.   κορσέδες dijo

    δεν υπάρχει γραφική διεπαφή για σύνολο εργασιών για νέους χρήστες θα ήταν ωραίο