Kako naložiti visoko obremenitev procesorja in stresni test Linuxu z orodjem Stress-ng


Kot sistemski skrbnik boste morda želeli preučiti in spremljati stanje svojih sistemov Linux, kadar so pod velikim stresom. To je lahko dober način za sistemske skrbnike in programerje:

  1. natančno nastavite dejavnosti v sistemu.
  2. nadzira vmesnike jedra operacijskega sistema.
  3. preizkusite svoje strojne komponente Linuxa, kot so CPU, pomnilnik, diskovne naprave in mnogi drugi, da opazujete njihovo delovanje pod stresom.
  4. merite različne obremenitve porabe energije v sistemu.

V tem priročniku si bomo ogledali dve pomembni orodji, stres in stres-ng za testiranje izjemnih situacij v vaših sistemih Linux.

1. stres - je orodje za ustvarjanje delovne obremenitve, zasnovano tako, da vaš sistem podvrže nastavljivi meri CPU, pomnilnika, vhoda/izhoda in stresa na disku.

2. stress-ng - je posodobljena različica orodja za ustvarjanje obremenitve, ki preizkuša vaš sistem za naslednje funkcije:

  1. Izračun CPU
  2. voziti stres
  3. V/I sinhronizira
  4. Cevni vhod/izhod
  5. razbijanje predpomnilnika
  6. VM stres
  7. poudarjanje vtičnice
  8. ustvarjanje in zaključek procesa
  9. lastnosti preklapljanja konteksta

Čeprav so ta orodja dobra za pregled vašega sistema, jih ne sme uporabljati samo kateri koli uporabnik sistema.

Pomembno: Zelo priporočljivo je, da uporabljate ta orodja s skrbniškimi pravicami uporabnika, saj lahko tako hitro poudarijo vaš Linux in se izognejo nekaterim sistemskim napakam na slabo zasnovani strojni opremi.

Kako namestiti orodje 'stres' v Linux

Če želite namestiti orodje za stres na Debian in njegove izpeljanke, kot sta Ubuntu in Mint, zaženite naslednji ukaz.

$ sudo apt-get install stress

Če želite namestiti stres na RHEL/CentOS in Fedora Linux, morate vklopiti skladišče EPEL in nato vstaviti naslednji ukaz yum, da ga namestite:

# yum install stress

Splošna sintaksa za uporabo stresa je:

$ sudo stress option argument

Nekaj možnosti, ki jih lahko uporabite pri stresu.

  1. Če želite ustvariti N delavcev, ki se vrtijo na funkciji sqrt(), uporabite možnost –cpu N, kot sledi.
  2. Če želite ustvariti N delavcev, ki se vrtijo pri sinhronizaciji(), uporabite –io N, kot sledi.
  3. Če želite ustvariti N delavcev, ki se vrtijo na funkcijah malloc()/free(), uporabite možnost –vm N.
  4. Če želite dodeliti pomnilnik na vm delavca, uporabite možnost –vm-bytes N.
  5. Namesto da bi sprostili in prerazporedili pomnilniške vire, lahko pomnilnik znova umažete z možnostjo –vm-keep.
  6. Pred sprostitvijo pomnilnika nastavite stanje spanja na N sekund z možnostjo –vm-hang N.
  7. Če želite ustvariti N delavcev, ki se vrtijo na funkcije write()/unlink(), uporabite možnost –hdd N.
  8. Časovno omejitev po N sekundah lahko nastavite z možnostjo –tajmout N.
  9. Z uporabo možnosti –backoff N nastavite faktor čakanja N mikrosekund, preden se katero koli delo začne.
  10. Če želite prikazati podrobnejše informacije med izvajanjem stresa, uporabite možnost -v.
  11. Uporabite –help, če si želite ogledati pomoč pri uporabi stresa ali si oglejte stran.

1. Če želite preučiti učinek ukaza vsakič, ko ga zaženete, najprej zaženite ukaz uptime in zapišite povprečje obremenitve.

Nato zaženite ukaz za stres, da ustvarite 8 delavcev, ki se vrtijo na sqrt() s časovno omejitvijo 20 sekund. Po zagonu stresa znova zaženite ukaz uptime in primerjajte povprečje obremenitve.

[email  ~ $ uptime
[email  ~ $ sudo stress --cpu  8 --timeout 20
[email  ~ $ uptime
[email  ~ $ uptime    
 17:20:00 up  7:51,  2 users,  load average: 1.91, 2.16, 1.93     [<-- Watch Load Average]
[email  ~ $ 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
[email  ~ $ uptime
 17:20:24 up  7:51,  2 users,  load average: 5.14, 2.88, 2.17     [<-- Watch Load Average]

2. Če želite ustvariti 8 delavcev, ki se vrtijo na sqrt() s časovno omejitvijo 30 sekund in prikazujejo podrobne informacije o operaciji, zaženite ta ukaz:

[email  ~ $ uptime
[email  ~ $ sudo stress --cpu 8 -v --timeout 30s
[email  ~ $ uptime
[email  ~ $ uptime
 17:27:25 up  7:58,  2 users,  load average: 1.40, 1.90, 1.98     [<-- Watch Load Average]
[email  ~ $ 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] [email  ~ $ uptime
 17:27:59 up  7:59,  2 users,  load average: 5.41, 2.82, 2.28     [<-- Watch Load Average]

3. Če želite enega od delavcev funkcij malloc() in free() razdeliti s časovno omejitvijo 60 sekund, zaženite naslednji ukaz.

[email  ~ $ uptime
[email  ~ $ sudo stress --vm 1 --timeout 60s 
[email  ~ $ uptime
[email  ~ $ uptime
 17:34:07 up  8:05,  2 users,  load average: 1.54, 2.04, 2.11     [<-- Watch Load Average]
[email  ~ $ 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
[email  ~ $ uptime
 17:35:20 up  8:06,  2 users,  load average: 2.45, 2.24, 2.17     [<-- Watch Load Average]

4. Če želite razdeliti 4 delavce, ki se vrtijo na sqrt(), 2 delavca, ki se sinhronizirata(), 2 delavca na malloc()/free(), s časom 20 sekund in dodelite pomnilnik 256 MB na vm delavca, zaženite to ukaz spodaj.

[email  ~ $ uptime
[email  ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s 
[email  ~ $ uptime
[email  ~ $ uptime
 17:40:33 up  8:12,  2 users,  load average: 1.68, 1.84, 2.02     [<-- Watch Load Average]
[email  ~ $ 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
[email  ~ $ uptime
 17:40:58 up  8:12,  2 users,  load average: 4.63, 2.54, 2.24     [<-- Watch Load Average]