Kako nametnuti visoko opterećenje CPU-a i test stresa na Linuxu pomoću alata 'Stress-ng'


Kao Administrator sustava, možda ćete htjeti ispitati i pratiti status svojih Linux sustava kada su pod velikim opterećenjem. Ovo može biti dobar način za administratore sustava i programere da:

  1. fino podešavanje aktivnosti na sustavu.
  2. nadzirati sučelja jezgre operativnog sustava.
  3. testirajte svoje Linux hardverske komponente kao što su CPU, memorija, diskovni uređaji i mnogi drugi kako biste promatrali njihovu izvedbu pod stresom.
  4. mjeriti različita opterećenja sustava koja troše energiju.

U ovom ćemo vodiču pogledati dva važna alata, stress i stress-ng za testiranje stresa pod vašim Linux sustavima.

1. stres – je alat za generiranje radnog opterećenja dizajniran da podvrgne vaš sustav podesivoj mjeri opterećenja CPU-a, memorije, I/O-a i diska.

2. stress-ng – je ažurirana verzija alata za generiranje stresnog opterećenja koji testira vaš sustav na sljedeće značajke:

  1. CPU računanje
  2. voziti stres
  3. I/O sinkronizacija
  4. Ulaz/izlaz cijevi
  5. cache thrashing
  6. VM stres
  7. naprezanje utičnice
  8. stvaranje i završetak procesa
  9. svojstva prebacivanja konteksta

Iako su ovi alati dobri za ispitivanje vašeg sustava, ne bi ih trebao koristiti samo bilo koji korisnik sustava.

Važno: Toplo se preporučuje da koristite ove alate s root korisničkim povlasticama jer mogu tako brzo opteretiti vaš Linux stroj i kako bi se izbjegle određene sistemske pogreške na loše dizajniranom hardveru .

Kako instalirati alat za 'stres' u Linuxu

Da biste instalirali alat za stres na Debian i njegove izvedenice kao što su Ubuntu i Mint, pokrenite sljedeću naredbu.

sudo apt-get install stress

Da biste instalirali stres na RHEL/CentOS i Fedora Linux, morate uključiti EPEL repozitorij i zatim upisati sljedeću naredbu yum za instalaciju isti:

yum install stress

Opća sintaksa za korištenje stresa je:

sudo stress option argument

Neke opcije koje možete koristiti kod stresa.

  1. Za pokretanje N radnika koji se vrte na funkciji sqrt(), upotrijebite opciju –cpu N kako slijedi.
  2. Za stvaranje N radnika koji se vrte na funkciji sync(), upotrijebite opciju –io N kako slijedi.
  3. Za stvaranje N radnika koji se vrte na funkcijama malloc()/free(), upotrijebite opciju –vm N.
  4. Za dodjelu memorije po vm radniku koristite opciju –vm-bytes N.
  5. Umjesto oslobađanja i preraspodjele memorijskih resursa, možete ponovno zaprljati memoriju pomoću opcije –vm-keep.
  6. Postavite mirovanje na N sekundi prije oslobađanja memorije pomoću opcije –vm-hang N.
  7. Da biste pokrenuli N radnike koji se vrte na funkcijama write()/unlink(), koristite opciju –hdd N.
  8. Možete postaviti vrijeme čekanja nakon N sekundi pomoću opcije –vrijeme čekanja N.
  9. Postavite faktor čekanja od N mikrosekundi prije početka bilo kakvog rada pomoću opcije –backoff N kako slijedi.
  10. Za prikaz detaljnijih informacija kada trčite pod stresom, koristite opciju -v.
  11. Upotrijebite –pomoć za pregled pomoći za korištenje stresa ili pogledajte stranicu priručnika.

Kako mogu koristiti stres na Linux sustavima?

1. Da biste ispitali učinak naredbe svaki put kada je pokrenete, prvo pokrenite naredbu uptime i zabilježite prosječno opterećenje.

Zatim pokrenite naredbu stress da stvorite 8 radnika koji se okreću na sqrt() s vremenskim ograničenjem od 20 sekundi. Nakon pokretanja stresa, ponovno pokrenite naredbu uptime i usporedite prosjek opterećenja.


tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu  8 --timeout 20
tecmint@tecmint ~ $ uptime
Uzorak izlaza
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. Za pokretanje 8 radnika koji se vrte na sqrt() s vremenskim ograničenjem od 30 sekundi, prikazujući detaljne informacije o operaciji, pokrenite ovu naredbu:

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
tecmint@tecmint ~ $ uptime
Uzorak izlaza
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. Za pokretanje jednog radnika funkcija malloc() i free() s vremenskim ograničenjem od 60 sekundi, pokrenite sljedeću naredbu.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
tecmint@tecmint ~ $ uptime
Uzorak izlaza
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. Za pokretanje 4 radnika koji se okreću na sqrt(), 2 radnika koji se okreću na sync(), 2 radnika na malloc()/free(), s vremenom od 20 sekundi i dodjeljivanje memorije za 256MB po vm radniku, pokrenite ovu naredbu u nastavku.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s 
tecmint@tecmint ~ $ uptime
Uzorak izlaza
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]