Πώς να περιορίσετε τη χρήση του χρόνου και της μνήμης των διεργασιών στο Linux


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

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

Για να εκτελέσετε αυτό το σενάριο, πρέπει να έχετε εγκαταστήσει το Perl 5 στο σύστημα Linux σας και να προσαρτήσετε το σύστημα αρχείων /proc.

Για να ελέγξετε την εγκατεστημένη έκδοση του Perl στο σύστημα Linux, εκτελέστε την ακόλουθη εντολή.

perl -v

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

cd ~/bin
git clone https://github.com/pshved/timeout.git
cd timeout

Ας δούμε τώρα πώς λειτουργεί το σενάριο timeout.

Βασικός περιορισμός μνήμης (100M εικονικής μνήμης):

Αυτό το πρώτο παράδειγμα δείχνει πώς να περιορίσετε τη χρήση μνήμης μιας διεργασίας σε 100 M εικονικής μνήμης, χρησιμοποιώντας τη σημαία -m. Η προεπιλεγμένη μονάδα για τη μνήμη είναι σε kilobyte.

Εδώ, η εντολή stress-ng εκτελεί 4 παράγοντες πίεσης εικονικής μνήμης (VMS) που συνδυάζονται για να χρησιμοποιήσουν το 40% της διαθέσιμης μνήμης για 10 λεπτά. Έτσι, κάθε στρεσογόνος παράγοντας χρησιμοποιεί 10% της διαθέσιμης μνήμης.

./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Λαμβάνοντας υπόψη την έξοδο της εντολής timeout παραπάνω, οι διαδικασίες εργασίας stress-ng τερματίστηκαν μετά από μόλις 1,16 δευτερόλεπτα. Αυτό συμβαίνει επειδή η συνδυασμένη κατανάλωση μνήμης του VMS (438660 kilobyte) είναι μεγαλύτερη από την επιτρεπόμενη χρήση εικονικής μνήμης για το stress-ng και το παιδί του διαδικασίες.

Βασικός χρονικός περιορισμός της διαδικασίας:

Για να ενεργοποιήσετε τον χρονικό περιορισμό της διαδικασίας, χρησιμοποιήστε τη σημαία -t όπως φαίνεται.

./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m

Στο παραπάνω παράδειγμα, όταν ο χρόνος stress-ng CPU+SYS υπερβαίνει την καθορισμένη τιμή του 4, οι διεργασίες εργασίας σκοτώνονται.

Περιορισμός τόσο του χρόνου όσο και της μνήμης της διαδικασίας

Μπορείτε επίσης να περιορίσετε ταυτόχρονα τη μνήμη και τον χρόνο ως εξής.

./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Το χρονικό όριο λήξης υποστηρίζει επίσης ορισμένες προηγμένες επιλογές, όπως --detect-hangups, που επιτρέπει τον εντοπισμό παύσης.

./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Μπορείτε να παρακολουθείτε το όριο μνήμης RSS (μέγεθος συνόλου κατοίκου) χρησιμοποιώντας τον διακόπτη --memlimit-rss ή -s .

./timeout -m 100000 -s  stress-ng --vm 4 --vm-bytes 40% -t 10m

Επιπλέον, για να επιστρέψετε τον κωδικό εξόδου ή το σήμα+128 μιας διεργασίας, χρησιμοποιήστε την επιλογή --confess ή -c όπως φαίνεται.

./timeout -m 100000 -c  stress-ng --vm 4 --vm-bytes 40% -t 10m

Για περισσότερες πληροφορίες και παράδειγμα χρήσης, ανατρέξτε στο timeout αποθετήριο Github: https://github.com/pshved/timeout.

Μπορεί επίσης να βρείτε αυτά τα παρακάτω σχετικά άρθρα εξίσου χρήσιμα:

  1. Πώς να βρείτε τις κορυφαίες 15 διεργασίες με χρήση μνήμης με «κορυφή» σε λειτουργία δέσμης
  2. CPUTool – Περιορισμός και έλεγχος χρήσης CPU οποιασδήποτε διαδικασίας στο Linux
  3. Πώς να περιορίσετε τη χρήση της CPU μιας διαδικασίας στο Linux με το εργαλείο CPULimit

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