Πώς να ορίσετε προτεραιότητες διαδικασίας με το nice and renice στο Linux

Οι εντολές nice και renice σάς επιτρέπουν να ρυθμίσετε με ακρίβεια τον τρόπο με τον οποίο ο πυρήνας αντιμετωπίζει τις διεργασίες σας προσαρμόζοντας τις προτεραιότητές τους. Διαβάστε αυτό το σεμινάριο για να μάθετε πώς να τα χρησιμοποιείτε σε λειτουργικά συστήματα Linux και παρόμοια με το Unix, όπως το macOS.

Όλα είναι θέμα διαδικασίας

Μέσα στον υπολογιστή σας Linux ή τύπου Unix, θα εκτελούνται πολλές διεργασίες ακόμη και πριν ξεκινήσετε την εφαρμογή που θέλετε να χρησιμοποιήσετε. Η πλειονότητα αυτών των διαδικασιών είναι ζωτικής σημασίας στοιχεία του ίδιου του Linux ή υποστηρικτικές διαδικασίες για το γραφικό περιβάλλον επιφάνειας εργασίας σας. Πολλά συμβαίνουν στα παρασκήνια. Φυσικά, υπάρχουν μόνο τόσοι πολλοί πόροι συστήματος και χρόνος CPU που πρέπει να περάσετε. Ο πυρήνας Linux είναι ο ελεγκτής για όλες αυτές τις διεργασίες.

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

Η ωραία αξία

Ένα από τα κριτήρια που χρησιμοποιούνται για τον προσδιορισμό του τρόπου με τον οποίο ο πυρήνας αντιμετωπίζει μια διαδικασία είναι η ωραία τιμή. Κάθε διαδικασία έχει μια ωραία αξία. Η τιμή nice είναι ένας ακέραιος αριθμός στην περιοχή από -19 έως 20. Όλες οι τυπικές διεργασίες ξεκινούν με μια ωραία τιμή μηδέν.

  Πώς να εγκαταστήσετε το Firefox Developer Edition σε Linux

Το κόλπο εδώ είναι ότι όσο υψηλότερη είναι η ωραία τιμή, τόσο πιο ωραία είναι η διαδικασία σας με τις άλλες διαδικασίες. Με άλλα λόγια, μια υψηλή ωραία τιμή λέει στον πυρήνα ότι αυτή η διαδικασία περιμένει με χαρά. Ένας αρνητικός αριθμός είναι το αντίθετο του να είσαι καλός. Όσο μεγαλύτερη είναι η αρνητική ωραία τιμή, τόσο πιο εγωιστική είναι η διαδικασία. Προσπαθεί να πάρει όσο περισσότερο χρόνο CPU μπορεί, χωρίς να λαμβάνει υπόψη τις άλλες διεργασίες.

Μπορούμε να χρησιμοποιήσουμε την εντολή nice για να ορίσουμε την τιμή nice όταν a δρομολογείται η διαδικασία και μπορούμε να χρησιμοποιήσουμε το renice για να προσαρμόσουμε την ωραία τιμή μιας τρέχουσας διαδικασίας.

Η ωραία εντολή

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

Ας υποθέσουμε ότι ένας προγραμματιστής έχει γράψει ένα πρόγραμμα που ονομάζεται ackermann. Αυτό υπολογίζει Λειτουργίες Ackerman. Είναι εντατική CPU και μνήμη. Ο προγραμματιστής μπορεί να ξεκινήσει το πρόγραμμα με την ακόλουθη εντολή:

./ackermann

Μπορούμε να χρησιμοποιήσουμε την εντολή top για να προβάλουμε το πρόγραμμα που εκτελείται.

top

Μπορούμε να δούμε τις λεπτομέρειες του προγράμματος ackermann στην κορυφή. Η ωραία τιμή είναι το σχήμα στη στήλη “NI”. Έγινε μηδέν όπως θα περιμέναμε.

  Πώς να εγκαταστήσετε το Spotify σε Linux

Ας το επανεκκινήσουμε και αυτή τη φορά ας το κάνουμε λιγότερο απαιτητικό. Θα ορίσουμε μια ωραία τιμή 15 για το πρόγραμμα ackermann ως εξής. Πληκτρολογήστε ωραίο, ένα κενό, -15, ένα άλλο διάστημα και, στη συνέχεια, το όνομα του προγράμματος που θέλετε να εκκινήσετε. Στο παράδειγμά μας, ο πλασματικός προγραμματιστής μας χρησιμοποιεί ./ackermann.

nice -15 ./ackermann

Προσέξτε, το “-15” δεν είναι αρνητικό δεκαπέντε. Είναι θετικό δεκαπέντε. Το “-” απαιτείται για να πει ωραία ότι περνάμε σε μια παράμετρο. Για να υποδείξετε έναν αρνητικό αριθμό πρέπει να πληκτρολογήσετε δύο χαρακτήρες “-“.

Αν τώρα ξεκινήσουμε πάλι από την κορυφή, μπορούμε να δούμε την αλλαγή στη συμπεριφορά του Ackermann.

top

Με μια ωραία τιμή 15, το ackermann δεν καταναλώνει τον περισσότερο χρόνο CPU. Το GNOME και το Rhythmbox χρησιμοποιούν περισσότερα. Περιορίσαμε λίγο τον Άκερμαν.

Τώρα ας κάνουμε το αντίστροφο και ας δώσουμε στον Ackermann μια αρνητική ωραία τιμή. Σημειώστε τη χρήση δύο χαρακτήρων “-“. Για να κάνετε μια εφαρμογή πιο εγωιστική και λιγότερο ωραία, πρέπει να χρησιμοποιήσετε το sudo. Ο καθένας μπορεί να κάνει την αίτησή του πιο ωραία, αλλά μόνο οι υπερχρήστες μπορούν να κάνουν έναν ακόμα εγωιστή.

sudo nice --10 ./ackermann

Ας τρέξουμε ψηλά και ας δούμε τι διαφορά έχει κάνει αυτό.

top

Αυτή τη φορά το ackermann έχει μια ωραία τιμή -10. Επιστρέφει στην πρώτη γραμμή και καταναλώνει περισσότερο χρόνο CPU από πριν.

Η εντολή renice

Η εντολή renice μας επιτρέπει να προσαρμόσουμε την ωραία τιμή μιας εκτελούμενης διαδικασίας. Δεν χρειάζεται να το σταματήσουμε και να το επαναλανσάρουμε με ωραία. Μπορούμε να ορίσουμε μια νέα τιμή on-the-fly.

  Πώς να φιλοξενήσετε το δικό σας σύστημα RSS σε Linux με Tiny Tiny RSS

Η εντολή renice παίρνει το αναγνωριστικό διεργασίας ή PID της διεργασίας ως παράμετρο γραμμής εντολών. Μπορούμε είτε να εξαγάγουμε το αναγνωριστικό διεργασίας από τη στήλη “PID” στο επάνω μέρος ή να χρησιμοποιήσουμε το ps και το grep για να το βρούμε για εμάς, ως εξής. Προφανώς, θα πληκτρολογήσετε το όνομα του χρήστη σας αντί για το dave και το όνομα της διαδικασίας που σας ενδιαφέρει αντί για το ackermann.

ps -eu dave | grep ackermann

Τώρα που έχουμε το PID μπορούμε να το χρησιμοποιήσουμε με το renice. Θα επαναφέρουμε τον Άκερμαν σε μια πιο ωραία συμπεριφορά με ωραία τιμή πέντε. Για να αλλάξετε την ωραία τιμή για μια διαδικασία που εκτελείται, πρέπει να χρησιμοποιήσετε το sudo. Σημειώστε ότι δεν υπάρχει “-” στην παράμετρο 5. Δεν χρειάζεστε ένα για θετικούς αριθμούς και χρειάζεστε μόνο έναν, όχι δύο, για αρνητικούς αριθμούς.

sudo renice -n 5 2339

Λαμβάνουμε επιβεβαίωση ότι η renice άλλαξε την ωραία τιμή. Μας δείχνει την παλιά αξία και τη νέα αξία.

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