Weboldal keresés

Nagy CPU-terhelés és stresszteszt végrehajtása Linuxon a „Stress-ng” eszközzel


Rendszeradminisztrátorként érdemes lehet megvizsgálni és figyelni a Linux-rendszerek állapotát, amikor nagy terhelésnek vannak kitéve. Ez jó módja lehet a rendszergazdáknak és programozóknak, hogy:

  1. tevékenységek finomhangolása egy rendszeren.
  2. figyeli az operációs rendszer kernel interfészeit.
  3. tesztelje Linux hardverösszetevőit, például CPU-t, memóriát, lemezeszközöket és sok mást, hogy megfigyelje teljesítményüket feszültség alatt.
  4. különböző energiaigényű terhelések mérése egy rendszeren.

Ebben az útmutatóban két fontos eszközt fogunk megvizsgálni, a stress-t és a stress-ng-et a Linux rendszereken végzett stressztesztekhez.

1. stressz – egy munkaterhelés-generáló eszköz, amelyet arra terveztek, hogy a rendszert a CPU, a memória, az I/O és a lemezfeszültség konfigurálható mértékének alávesse.

2. stress-ng – a stressz-terhelést generáló eszköz frissített változata, amely a következő funkciókat teszteli a rendszerben:

  1. CPU számítás
  2. stresszt okoz
  3. I/O szinkronizálás
  4. Cső I/O
  5. gyorsítótár csépelése
  6. VM stressz
  7. aljzat hangsúlyozása
  8. folyamat létrehozása és befejezése
  9. kontextusváltási tulajdonságok

Bár ezek az eszközök alkalmasak a rendszer vizsgálatára, nem csak a rendszerfelhasználók használhatják őket.

Fontos: erősen ajánlott, hogy ezeket az eszközöket root felhasználói jogosultságokkal használja, mert olyan gyorsan megterhelhetik a Linux gépet, és elkerülhetők bizonyos rendszerhibák a rosszul tervezett hardvereken. .

A „stressz” eszköz telepítése Linuxon

A stressz-eszköz telepítéséhez a Debian és származékaira, például az Ubuntura és a Mintre, futtassa a következő parancsot.

sudo apt-get install stress

A stressz telepítéséhez RHEL/CentOS és Fedora Linuxra, be kell kapcsolnia az EPEL-tárat, majd be kell írnia a következő yum parancsot a azonos:

yum install stress

A stressz használatának általános szintaxisa a következő:

sudo stress option argument

Néhány lehetőség, amelyet stressz esetén használhat.

  1. Az sqrt() függvényen forgó N dolgozók létrehozásához használja a –cpu N opciót az alábbiak szerint.
  2. A sync() függvényen pörgő N dolgozók létrehozásához használja a –io N opciót az alábbiak szerint.
  3. A malloc()/free() függvényeken pörgő N dolgozók létrehozásához használja a –vm N opciót.
  4. Ha virtuális gépenkénti memóriát szeretne lefoglalni, használja a –vm-bytes N opciót.
  5. A memória-erőforrások felszabadítása és újraelosztása helyett a –vm-keep opció használatával újraszennyezheti a memóriát.
  6. Állítsa az alvó állapotot N másodpercre, mielőtt felszabadítaná a memóriát a –vm-hang N opció használatával.
  7. A write()/unlink() függvényeken pörgő N dolgozók spawnjához használja a –hdd N opciót.
  8. Az –időtúllépés N opcióval N másodperc után beállíthat időtúllépést.
  9. Állítson be N mikroszekundumos várakozási tényezőt a munka megkezdése előtt a –backoff N opció használatával az alábbiak szerint.
  10. Stressz közbeni részletesebb információk megjelenítéséhez használja a -v kapcsolót.
  11. A –help segítségével megtekintheti a stressz használatához szükséges súgót, vagy megtekintheti a kézikönyvoldalt.

Hogyan használhatom a stresszt Linux rendszereken?

1. A parancs hatásának vizsgálatához minden alkalommal, amikor futtatja, először futtassa az uptime parancsot, és jegyezze fel a terhelés átlagát.

Ezután futtassa a stress parancsot, hogy 8 dolgozót hozzon létre, akik az sqrt()-en pörögnek 20 másodperces időtúllépéssel. A stressz futtatása után futtassa újra az uptime parancsot, és hasonlítsa össze a terhelési átlagot.


tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu  8 --timeout 20
tecmint@tecmint ~ $ uptime
Minta kimenet
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. Ha 8 dolgozót szeretne létrehozni, akik az sqrt() függvényen pörögnek 30 másodperces időtúllépéssel, és részletes információkat jelenítenek meg a műveletről, futtassa ezt a parancsot:

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
tecmint@tecmint ~ $ uptime
Minta kimenet
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. A malloc() és a free() függvények egy-egy dolgozójának felforgatásához 60 másodperces időtúllépéssel, futtassa a következő parancsot.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
tecmint@tecmint ~ $ uptime
Minta kimenet
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. 4 dolgozó sqrt()-en, 2 sync()-en, 2 malloc()/free(()-en pörgető munkás 20 másodpercen túli idővel történő felpörgetése és a memória lefoglalása 256 MB virtuális gépenként, futtassa az alábbi parancsot.

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