Sådan indføres høj CPU-belastning og stresstest på Linux ved hjælp af Stress-ng-værktøj


Som systemadministrator vil du muligvis undersøge og overvåge status på dine Linux-systemer, når de er under belastning af høj belastning. Dette kan være en god måde for systemadministratorer og programmører at:

  1. finjuster aktiviteter på et system.
  2. overvåg operativsystemets kerneinterfaces.
  3. test dine Linux-hardwarekomponenter såsom CPU, hukommelse, diskenheder og mange andre for at observere deres ydeevne under stress.
  4. måle forskellige strømforbrugende belastninger på et system.

I denne vejledning skal vi se på to vigtige værktøjer, stress og stress-ng til stresstest under dine Linux-systemer.

1. stress - er et arbejdsbelastningsgeneratorværktøj designet til at udsætte dit system for et konfigurerbart mål for CPU, hukommelse, I/O og diskstress.

2. stress-ng - er en opdateret version af stress-arbejdsbelastningsgeneratorværktøjet, der tester dit system for følgende funktioner:

  1. CPU-beregning
  2. kør stress
  3. I/O-synkronisering
  4. Rør I/O
  5. cache-thrashing
  6. VM-stress
  7. stikkontakt understreger
  8. procesoprettelse og afslutning
  9. kontekstskifteegenskaber

Selvom disse værktøjer er gode til at undersøge dit system, skal de ikke kun bruges af enhver systembruger.

Vigtigt: Det anbefales stærkt, at du bruger disse værktøjer med root-brugerrettigheder, fordi de kan stresse din Linux-maskine så hurtigt og for at undgå visse systemfejl på dårligt designet hardware.

Sådan installeres 'stress' værktøj i Linux

For at installere stressværktøj på Debian og dets derivater, såsom Ubuntu og Mint, skal du køre følgende kommando.

$ sudo apt-get install stress

For at installere stress på en RHEL/CentOS og Fedora Linux skal du aktivere EPEL repository og derefter skrive følgende yum-kommando for at installere det samme:

# yum install stress

Den generelle syntaks for brug af stress er:

$ sudo stress option argument

Nogle muligheder, som du kan bruge med stress.

  1. For at gyde N-arbejdere, der drejer på sqrt() -funktionen, skal du bruge –cpu N-indstillingen som følger.
  2. For at gyde N-arbejdere, der spinder på sync() -funktionen, skal du bruge –io N-indstillingen som følger.
  3. For at gyde N-arbejdere, der spinder på malloc()/free() -funktioner, skal du bruge –vm N-indstillingen.
  4. For at tildele hukommelse pr. vm-medarbejder skal du bruge indstillingen –vm-bytes N.
  5. I stedet for at frigøre og omfordele hukommelsesressourcer kan du omdirigere hukommelsen ved hjælp af –vm-keep-indstillingen.
  6. Indstil dvaletilstand til N sekunder, før du frigør hukommelse ved hjælp af indstillingen –vm-hang N.
  7. For at gyde N-medarbejdere, der spinder på skriv()/unlink() -funktioner, skal du bruge –hdd N-indstillingen.
  8. Du kan indstille en timeout efter N sekunder ved hjælp af indstillingen –timeout N.
  9. Indstil en ventefaktor på N mikrosekunder, før noget arbejde starter ved at bruge –backoff N-indstillingen som følger.
  10. Brug indstillingen -v for at få vist mere detaljerede oplysninger, når du kører stress.
  11. Brug –hjælp til at se hjælp til brug af stress eller se manpage.

1. For at undersøge effekten af kommandoen, hver gang du kører den, skal du først køre kommandoen oppetid og notere gennemsnittet for belastning.

Kør derefter stresskommandoen for at gyde 8 arbejdere, der spinder på sqrt() med en timeout på 20 sekunder. Efter at have kørt stress skal du igen køre kommandoen oppetid og sammenligne belastningsgennemsnittet.

[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. For at gyde 8 arbejdere, der spinder på sqrt() med en timeout på 30 sekunder, der viser detaljerede oplysninger om operationen, skal du køre denne 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. Hvis du vil spwan en medarbejder af malloc() og gratis() -funktioner med en timeout på 60 sekunder, skal du køre følgende kommando.

[email  ~ $ uptime
[email ecmint ~ $ 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. For at spwan 4 arbejdere spinding på sqrt(), 2 arbejdere spwaning på sync(), 2 arbejdere på malloc()/free(), med en tid på 20 sekunder og tildele en hukommelse på 256 MB pr. Vm arbejdstager, kør dette kommandoen nedenfor.

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