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


Kao Sistemski administrator, možda ćete želeti da ispitate i nadgledate status vaših Linux sistema kada su pod velikim opterećenjem. Ovo može biti dobar način da sistemski administratori i programeri:

  1. fino podešavanje aktivnosti na sistemu.
  2. nadgledaju interfejse kernela operativnog sistema.
  3. testirajte svoje Linux hardverske komponente kao što su CPU, memorija, disk uređaji i mnoge druge kako biste vidjeli njihove performanse pod stresom.
  4. mjeriti različita opterećenja na sistemu.

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

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

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

  1. CPU compute
  2. dovesti do stresa
  3. I/O sinhronizacije
  4. Pipe I/O
  5. cache thrashing
  6. VM stres
  7. naprezanje utičnice
  8. stvaranje i završetak procesa
  9. svojstva promjene konteksta

Iako su ovi alati dobri za ispitivanje vašeg sistema, ne bi trebalo da ih koristi bilo koji korisnik sistema.

Važno: Preporučljivo je da koristite ove alate s privilegijama root korisnika, jer mogu tako brzo opteretiti vašu Linux mašinu i izbjeći određene sistemske greške na loše dizajniranom hardveru .

Kako instalirati "stres" alat u Linux

Da biste instalirali alat za stres na Debian i njegove derivate 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 spremište i zatim upisati sljedeću yum komandu da instalirate isto:

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 okreću na sqrt() funkciji, koristite opciju –cpu N kako slijedi.
  2. Za pokretanje N radnika koji se okreću na funkciji sync(), koristite opciju –io N kako slijedi.
  3. Za pokretanje N radnika koji se okreću na malloc()/free() funkcijama, koristite opciju –vm N.
  4. Da dodijelite memoriju po vm radniku, koristite opciju –vm-bytes N.
  5. Umjesto oslobađanja i preusmjeravanja memorijskih resursa, možete preprljati memoriju korištenjem opcije –vm-keep.
  6. Postavite stanje mirovanja na N sekundi prije oslobađanja memorije pomoću opcije –vm-hang N.
  7. Da biste pokrenuli N radnika koji se okreću na funkcijama write()/unlink(), koristite opciju –hdd N.
  8. Možete postaviti vremensko ograničenje nakon N sekundi koristeći opciju –timeout N.
  9. Postavite faktor čekanja od N mikrosekundi prije početka bilo kakvog rada koristeći opciju –povrat N kako slijedi.
  10. Da biste prikazali detaljnije informacije kada radite pod stresom, koristite opciju -v.
  11. Koristite –pomoć da vidite pomoć za korištenje stresa ili pogledate man stranicu.

Kako da koristim stres na Linux sistemima?

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

Zatim pokrenite naredbu stress da pokrenete 8 radnika koji se okreću na sqrt() sa vremenskim ograničenjem od 20 sekundi. Nakon stresnog rada, ponovo pokrenite naredbu uptime i uporedite prosjek opterećenja.


tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu  8 --timeout 20
tecmint@tecmint ~ $ uptime
Sample Output
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. Da biste pokrenuli 8 radnika koji se vrte na sqrt() sa 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
Sample Output
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
Sample Output
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 spwan 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 dodjeljuju memoriju 256MB po vm radniku, pokrenite ovu naredbu ispod.

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