Ανεξάρτητα από το πόσο γρήγορη είναι η μηχανή σας Linux, θα υπάρχουν πάντα ορισμένες εργασίες που καταναλώνουν πολύ χρόνο CPU. Τα πάντα, από την κωδικοποίηση βίντεο έως τα μαθηματικά μοντέλα που εκτελούνται, μπορούν να προκαλέσουν τη λειτουργία του επεξεργαστή στο 100%. Αυτό είναι καλό αν το μηχάνημα δεν κάνει τίποτα άλλο. Αλλά αν είναι η κύρια επιφάνεια εργασίας σας ή χρησιμοποιείται ως διακομιστής, τότε εκτελώντας μια εργασία που το max CPU σας θα κάνει τη μηχανή αργή και δύσκολη στη χρήση. Η ομορφιά ενός λειτουργικού συστήματος πολλαπλών εντολών είναι ότι το μηχάνημα δεν θα παγώσει καθώς θα προγραμματίζει πάντα τον χρόνο CPU για άλλες εργασίες και τα πράγματα όπως η επιφάνεια εργασίας θα λειτουργούν ακόμα, αλλά πολύ πιο αργά. Ο προγραμματιστής δεν έχει κανέναν τρόπο να γνωρίζει ότι θέλετε η εργασία εντατικής επεξεργασίας CPU να εκτελείται με χαμηλότερη προτεραιότητα ή να περιορίζεται ο χρόνος της CPU. Ωστόσο, υπάρχουν μερικά εργαλεία που μπορούν να χρησιμοποιηθούν για τον έλεγχο της χρήσης της CPU διαδικασίας για αυτές τις εργασίες πεινασμένων πόρων.

Για να μιμηθούμε μια εργασία εντατικής CPU, μπορούμε να χρησιμοποιήσουμε ένα εργαλείο που ονομάζεται matho-prime οποίο δημιουργεί μια λίστα πρωτευόντων αριθμών. Εάν το ζητήσετε να δημιουργήσει μια αρκετά μεγάλη λίστα, θα κάνει μέγιστη χρήση της CPU ενώ λειτουργεί. Για να εγκαταστήσετε το matho-prime στο Ubuntu ή σε ένα Raspberry Pi χρησιμοποιήστε:

 sudo apt-get εγκαταστήστε mathomatic-primes 

Ας ξεκινήσουμε απλά την εργασία και δούμε τη χρήση της CPU:

 matho-primes 0 9999999999> p.txt & 

Αυτό λέει στους matho-primes να δημιουργήσουν μια λίστα με πριμ από 0 έως 9 δισεκατομμύρια εννιακόσια ενενήντα εννέα εκατομμύρια εννιακόσιες ενενήντα εννέα χιλιάδες εννιακόσιες ενενήντα εννέα! Η έξοδος ανακατευθύνεται στο αρχείο p.txt . Το ampersand στο τέλος λέει στο κέλυφος να τρέξει το πρόγραμμα στο παρασκήνιο, πράγμα που σημαίνει ότι επιστρέφετε στη γραμμή εντολών αμέσως μετά την έναρξη της εργασίας.

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

Τώρα ας σκοτώσουμε αυτό το καθήκον και εξετάσουμε πώς μπορούμε να το ξεκινήσουμε με χαμηλότερη προτεραιότητα. Πραγματοποιήστε έξοδο στην top πατώντας το q, έπειτα πληκτρολογήστε fg για να μεταφέρετε τα matho-primes στο προσκήνιο και, στη συνέχεια, πατήστε "Ctrl + C" για να εξαναγκάσετε το πρόγραμμα να βγει.

Τώρα ξεκινήστε πάλι το πρόγραμμα, αλλά στην αρχή της εντολής προσθέστε την nice λέξη:

 ωραία matho-primes 0 9999999999> p.txt & 

nice είναι ένα εργαλείο που λέει στο Linux να προγραμματίσει αυτό το έργο με χαμηλότερη προτεραιότητα. Η ωραίοτητα κυμαίνεται από -20 (ευνοϊκότερο προγραμματισμό) έως 19 (λιγότερο ευνοϊκό). Από προεπιλογή nice θα προγραμματίσει την εργασία με μια ωραία 10. Από προεπιλογή κανονικές εργασίες ξεκινούν με μια ωραία μηδενική. Αυτό σημαίνει ότι ένα καθήκον με 10 χαρακτήρες θα θεωρείται ως χαμηλότερης προτεραιότητας και θα του δοθούν πόροι CPU λιγότερο συχνά.

Μπορούμε τώρα να ξεκινήσουμε μια δεύτερη από αυτές τις γεννήτριες πρωτεύοντος αριθμού για να μιμηθούμε άλλες εργασίες που θέλετε να κάνετε στο μηχάνημά σας (όπως περιήγηση στο web ή γράψιμο εγγράφου). Αυτός θα έχει μια φυσιολογική ομορφιά, καθώς η χρήση της επιφάνειας εργασίας θα πρέπει να είναι μεγαλύτερη προτεραιότητα από την εκτέλεση της γεννήτριας πρωτεύοντος αριθμού.

 matho-primes 0 9999999999> p2.txt & 

Σημειώστε ότι η έξοδος από αυτό το αρχείο ανακατευθύνεται στο p2.txt . Η έξοδος από την top θα μοιάζει κάπως έτσι:

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

cpulimit

Υπάρχει μια άλλη εντολή που ονομάζεται "cpulimit" η οποία αντί να αλλάζει την προτεραιότητα προγραμματισμού, διακόπτει προσωρινά μια διαδικασία για να διασφαλίσει ότι δεν υπερβαίνει την επιθυμητή χρήση της CPU.

Για να την εγκαταστήσετε, πληκτρολογήστε:

 sudo apt-get να εγκαταστήσετε το cpulimit 

Τώρα εκτελέστε ξανά τη γεννήτρια πρωταρχικού αριθμού πρωτεύοντος CPU και σημειώστε τον αριθμό PID χρησιμοποιώντας αυτήν την εντολή:

 ps | grep matho-prime 

Η πρώτη στήλη της εξόδου είναι το PID. Τώρα περιορίστε τη χρήση της CPU αυτής της διαδικασίας όπως αυτή:

 sudo cpulimit -b-1 50 -ρ 16299 

Όπου 16299 είναι το PID της διαδικασίας matho-primes . Μια εμφάνιση με top θα δείξει κάτι σαν αυτό:

Συνεχίζοντας

Υπάρχει μια εντολή σύντροφος σε nice ονομάζεται renice που θα αλλάξει την ομορφιά μιας υπάρχουσας διαδικασίας. Δοκιμάζοντας τη χρήση top ή ps με grep για να πάρετε το PID μιας διαδικασίας και χρησιμοποιήστε renice +19 16299 για να ορίσετε την προτεραιότητα στο χαμηλότερο δυνατό (όπου 16299 είναι το PID της διαδικασίας).

Μπορείτε να προσθέσετε τη συζήτηση στο σχόλιο παρακάτω.