Wéi eng héich CPU Belaaschtung a Stresstest op Linux opzesetzen Mat Stress-ng Tool


Als System Administrator wëllt Dir vläicht de Status vun Äre Linux Systemer iwwerpréiwen an iwwerwaachen wann se ënner Stress vun héijer Belaaschtung sinn. Dëst kann e gudde Wee fir Systemadministratoren a Programméierer sinn fir:

  1. Aktivitéiten op engem System feinjustéieren.
  2. monitor Betribssystem Kernel Interfaces.
  3. Test Är Linux Hardware Komponente wéi CPU, Memory, Disk Geräter a vill anerer fir hir Leeschtung ënner Stress ze beobachten.
  4. verschidde Stroumverbrauchend Lasten op engem System moossen.

An dësem Guide wäerte mir zwee wichteg Tools kucken, Stress a Stress-ng fir Stresstesten ënner Äre Linux Systemer.

1. Stress - ass e Workload Generator Tool entworf fir Äre System op eng konfiguréierbar Mooss vu CPU, Erënnerung, I/O an Scheifstress ze ënnerwerfen.

2. stress-ng - ass eng aktualiséiert Versioun vum Stress Workload Generator Tool deen Äre System fir folgend Funktiounen testt:

  1. CPU berechnen
  2. Stress fueren
  3. I/O Synchroniséierung
  4. Pipe I/O
  5. Cache-Trashing
  6. VM Stress
  7. Socket Stress
  8. Prozess Kreatioun an Enn
  9. Kontextschalteigenschaften

Och wann dës Tools gutt sinn fir Äre System z'ënnersichen, sollten se net nëmme vun all System Benotzer benotzt ginn.

Wichteg: Et ass héich recommandéiert datt Dir dës Tools mat Root Benotzer Privilegien benotzt, well se Är Linux Maschinn sou séier kënne stressen a verschidde Systemfehler op schlecht entwéckelt Hardware vermeiden.

Wéi installéiere 'Stress' Tool op Linux

Fir Stresstool op Debian a seng Derivate wéi Ubuntu a Mint z'installéieren, fuert de folgende Kommando.

$ sudo apt-get install stress

Fir Stress op engem RHEL/CentOS a Fedora Linux z'installéieren, musst Dir EPEL Repository ausschalten an dann de folgende yum Kommando tippen fir datselwecht z'installéieren:

# yum install stress

Déi allgemeng Syntax fir Stress ze benotzen ass:

$ sudo stress option argument

E puer Optiounen déi Dir mat Stress benotze kënnt.

  1. Fir N Aarbechter ze spawnen, déi op sqrt() Funktioun spinnen, benotzt d'-cpu N Optioun wéi follegt.
  2. Fir N Aarbechter ze spawnen, déi op der Synchroniséierung() Funktioun spinnen, benotzt d'-io N Optioun wéi follegt.
  3. Fir N Aarbechter ze spawnen déi op malloc()/free() Funktiounen spinnen, benotzt d'–vm N Optioun.
  4. Fir Erënnerung pro vm Aarbechter ze verdeelen, benotzt d'Optioun –vm-bytes N.
  5. Amplaz d'Erënnerungsressourcen ze befreien an nei ze verdeelen, kënnt Dir d'Erënnerung nei dreckeg maachen andeems Dir d' –vm-keep Optioun benotzt.
  6. Set de Schlof op N Sekonnen ier Dir d'Erënnerung befreit andeems Dir d'Optioun –vm-hang N benotzt.
  7. Fir N Aarbechter ze spawnen, déi op Write()/unlink() Funktiounen spinnen, benotzt d' –hdd N Optioun.
  8. Dir kënnt en Timeout no N Sekonnen astellen andeems Dir d'Optioun –timeout N benotzt.
  9. Setzt e Waardefaktor vun N Mikrosekonnen ier all Aarbecht ufänkt mat der –backoff N Optioun wéi follegt.
  10. Fir méi detailléiert Informatioun ze weisen wann Dir Stress leeft, benotzt d'Optioun -v.
  11. Benotzt -hëllef fir Hëllef fir Stress ze benotzen oder d'Manpage ze gesinn.

1. Fir d'Effekt vum Kommando z'ënnersichen all Kéier wann Dir se leeft, fuert als éischt den Uptime Kommando an notéiert d'Laaschtduerchschnëtt.

Nächst, lafen de Stress Kommando fir Spawn 8 Aarbechter spannen op sqrt() mat engem Timeout pa 20 Sekonnen. Nodeems Dir Stress leeft, lafen nach eng Kéier den Uptime Kommando a vergläicht d'Laaschtduerchschnëtt.

[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. Fir Spawn 8 Aarbechter spannen op sqrt() mat engem Timeout pa 30 Sekonnen, weist detailléiert Informatiounen iwwert d'Operatioun, lafen dëse Kommando:

[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. Spwan eent Aarbechter vun malloc() an fräi() Fonctiounen mat engem timeout pa 60 Sekonnen, lafen déi folgend Kommando.

[email nt ~ $ 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. Fir 4 Aarbechter, déi op sqrt spannen(), 2 Aarbechter, déi op Synchronisatioun(), 2 Aarbechter op malloc()/fräi(), mat enger Zäit aus 20 Sekonnen an allokéieren eng Erënnerung vun 256MB pro vm Aarbechter, lafen dës. Kommando ënnendrënner.

[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]