Πώς να επιβάλετε υψηλό φορτίο CPU και δοκιμή πίεσης στο Linux χρησιμοποιώντας το εργαλείο «Stress-ng».


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

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

Σε αυτόν τον οδηγό, θα εξετάσουμε δύο σημαντικά εργαλεία, το stress και το stress-ng για τον έλεγχο ακραίων καταστάσεων στα συστήματα Linux σας.

1. stress – είναι ένα εργαλείο δημιουργίας φόρτου εργασίας που έχει σχεδιαστεί για να υποβάλλει το σύστημά σας σε μια διαμορφώσιμη μέτρηση της CPU, της μνήμης, της πίεσης I/O και του δίσκου.

2. stress-ng – είναι μια ενημερωμένη έκδοση του εργαλείου δημιουργίας φόρτου εργασίας άγχους που ελέγχει το σύστημά σας για τα ακόλουθα χαρακτηριστικά:

  1. Υπολογισμός CPU
  2. οδηγούν το άγχος
  3. I/O συγχρονισμοί
  4. Σωλήνας I/O
  5. thrashing κρυφής μνήμης
  6. VM άγχος
  7. πίεση υποδοχής
  8. δημιουργία και τερματισμός της διαδικασίας
  9. ιδιότητες εναλλαγής περιβάλλοντος

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

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

Πώς να εγκαταστήσετε το εργαλείο «stress» στο Linux

Για να εγκαταστήσετε το εργαλείο stress στο Debian και τα παράγωγά του όπως το Ubuntu και το Mint, εκτελέστε την ακόλουθη εντολή.

sudo apt-get install stress

Για να εγκαταστήσετε το stress σε ένα RHEL/CentOS και Fedora Linux, πρέπει να ενεργοποιήσετε το αποθετήριο EPEL και στη συνέχεια να πληκτρολογήσετε την ακόλουθη εντολή yum για να εγκαταστήσετε το ίδιο:

yum install stress

Η γενική σύνταξη για τη χρήση του stress είναι:

sudo stress option argument

Ορισμένες επιλογές που μπορείτε να χρησιμοποιήσετε με άγχος.

  1. Για να δημιουργήσετε N εργαζόμενους που περιστρέφονται στη συνάρτηση sqrt(), χρησιμοποιήστε την επιλογή –cpu N ως εξής.
  2. Για να δημιουργήσετε N εργαζόμενους που περιστρέφονται στη συνάρτηση sync(), χρησιμοποιήστε την επιλογή –io N ως εξής.
  3. Για να δημιουργήσετε N εργαζόμενους που περιστρέφονται σε συναρτήσεις malloc()/free(), χρησιμοποιήστε την επιλογή –vm N.
  4. Για να εκχωρήσετε μνήμη ανά vm εργαζόμενο, χρησιμοποιήστε την επιλογή –vm-bytes N.
  5. Αντί να ελευθερώνετε και να ανακατανέμετε πόρους μνήμης, μπορείτε να επανατοποθετήσετε τη μνήμη χρησιμοποιώντας την επιλογή –vm-keep.
  6. Ρυθμίστε τον ύπνο σε N δευτερόλεπτα πριν ελευθερώσετε τη μνήμη χρησιμοποιώντας την επιλογή –vm-hang N.
  7. Για να δημιουργήσετε N εργαζόμενους που περιστρέφονται σε συναρτήσεις write()/unlink(), χρησιμοποιήστε την επιλογή –hdd N.
  8. Μπορείτε να ορίσετε ένα χρονικό όριο μετά από N δευτερόλεπτα χρησιμοποιώντας την επιλογή –timeout N.
  9. Ορίστε έναν παράγοντα αναμονής N μικροδευτερόλεπτων πριν από την έναρξη οποιασδήποτε εργασίας, χρησιμοποιώντας την επιλογή –backoff N ως εξής.
  10. Για να εμφανίσετε πιο λεπτομερείς πληροφορίες κατά το στρες, χρησιμοποιήστε την επιλογή -v.
  11. Χρησιμοποιήστε τη –βοήθεια για να προβάλετε βοήθεια για τη χρήση άγχους ή να προβάλετε τη σελίδα διαχείρισης.

Πώς μπορώ να χρησιμοποιήσω το άγχος σε συστήματα Linux;

1. Για να εξετάζετε την επίδραση της εντολής κάθε φορά που την εκτελείτε, εκτελέστε πρώτα την εντολή uptime και σημειώστε τον μέσο όρο φόρτωσης.

Στη συνέχεια, εκτελέστε την εντολή stress για να δημιουργήσετε 8 εργάτες που περιστρέφονται στο sqrt() με χρονικό όριο 20 δευτερολέπτων. Μετά την πίεση εκτέλεσης, εκτελέστε ξανά την εντολή uptime και συγκρίνετε τον μέσο όρο φόρτωσης.


tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu  8 --timeout 20
tecmint@tecmint ~ $ uptime
Δείγμα εξόδου
tecmint@tecmint ~ $ uptime    
 17:20:00 up  7:51,  2 users,  load average: 1.91, 2.16, 1.93     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 8 --timeout 20
stress: info: [17246] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: info: [17246] successful run completed in 21s
tecmint@tecmint ~ $ uptime
 17:20:24 up  7:51,  2 users,  load average: 5.14, 2.88, 2.17     [<-- Watch Load Average]

2. Για να δημιουργήσετε 8 εργαζόμενους που περιστρέφονται στο sqrt() με χρονικό όριο λήξης 30 δευτερολέπτων, εμφανίζοντας λεπτομερείς πληροφορίες σχετικά με τη λειτουργία, εκτελέστε αυτήν την εντολή:

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
tecmint@tecmint ~ $ uptime
Δείγμα εξόδου
tecmint@tecmint ~ $ uptime
 17:27:25 up  7:58,  2 users,  load average: 1.40, 1.90, 1.98     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
stress: info: [17353] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: dbug: [17353] using backoff sleep of 24000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 8 [17354] forked
stress: dbug: [17353] using backoff sleep of 21000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 7 [17355] forked
stress: dbug: [17353] using backoff sleep of 18000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 6 [17356] forked
stress: dbug: [17353] using backoff sleep of 15000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 5 [17357] forked
stress: dbug: [17353] using backoff sleep of 12000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 4 [17358] forked
stress: dbug: [17353] using backoff sleep of 9000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 3 [17359] forked
stress: dbug: [17353] using backoff sleep of 6000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 2 [17360] forked
stress: dbug: [17353] using backoff sleep of 3000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 1 [17361] forked
stress: dbug: [17353] tecmint@tecmint ~ $ uptime
 17:27:59 up  7:59,  2 users,  load average: 5.41, 2.82, 2.28     [<-- Watch Load Average]

3. Για να δημιουργήσετε έναν εργαζόμενο των συναρτήσεων malloc() και free() με χρονικό όριο λήξης 60 δευτερολέπτων, εκτελέστε την παρακάτω εντολή.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
tecmint@tecmint ~ $ uptime
Δείγμα εξόδου
tecmint@tecmint ~ $ uptime
 17:34:07 up  8:05,  2 users,  load average: 1.54, 2.04, 2.11     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
stress: info: [17420] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: info: [17420] successful run completed in 60s
tecmint@tecmint ~ $ uptime
 17:35:20 up  8:06,  2 users,  load average: 2.45, 2.24, 2.17     [<-- Watch Load Average]

4. Για spwan 4 εργαζομένων που περιστρέφονται σε sqrt(), 2 εργάτες spwaning στο sync(), 2 εργάτες στο malloc()/free(), με χρόνο εκτός 20 δευτερολέπτων και εκχώρηση μνήμης 256 MB ανά vm εργαζόμενο, εκτελέστε αυτήν την εντολή παρακάτω.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s 
tecmint@tecmint ~ $ uptime
Δείγμα εξόδου
tecmint@tecmint ~ $ uptime
 17:40:33 up  8:12,  2 users,  load average: 1.68, 1.84, 2.02     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s
stress: info: [17501] dispatching hogs: 4 cpu, 3 io, 2 vm, 0 hdd
stress: info: [17501] successful run completed in 20s
tecmint@tecmint ~ $ uptime
 17:40:58 up  8:12,  2 users,  load average: 4.63, 2.54, 2.24     [<-- Watch Load Average]