Kuinka asettaa korkea suorittimen kuormitus ja stressitesti Linuxille "Stress-ng" -työkalun avulla


Järjestelmänvalvojana saatat haluta tutkia ja seurata Linux-järjestelmien tilaa, kun ne ovat suuren kuormituksen alaisena. Tämä voi olla hyvä tapa järjestelmänvalvojille ja ohjelmoijille:

  1. hienosäätää järjestelmän toimintaa.
  2. valvoa käyttöjärjestelmän ytimen rajapintoja.
  3. testaa Linux-laitteistosi komponentteja, kuten suoritinta, muistia, levylaitteita ja monia muita tarkkaillaksesi niiden suorituskykyä stressissä.
  4. mittaa järjestelmän erilaisia virtaa kuluttavia kuormia.

Tässä oppaassa tarkastellaan kahta tärkeää työkalua, stress ja stress-ng stressitestaukseen Linux-järjestelmissäsi.

1. Stress – on työkuorman luontityökalu, joka on suunniteltu alistamaan järjestelmäsi määritettävälle prosessorin, muistin, I/O:n ja levyn rasituksen mittaukselle.

2. stress-ng – on päivitetty versio stressityökuormitustyökalusta, joka testaa järjestelmän seuraavien ominaisuuksien varalta:

  1. CPU:n laskenta
  2. ajaa stressiä
  3. I/O-synkronointi
  4. Putken I/O
  5. välimuistin lyöminen
  6. VM stressi
  7. pistorasia rasittaa
  8. prosessin luominen ja lopettaminen
  9. kontekstin vaihto-ominaisuudet

Vaikka nämä työkalut ovat hyviä järjestelmän tutkimiseen, niitä ei tulisi käyttää vain kenenkään järjestelmän käyttäjän.

Tärkeää: On erittäin suositeltavaa käyttää näitä työkaluja pääkäyttäjän oikeuksin, koska ne voivat rasittaa Linux-konettasi niin nopeasti ja välttää tietyt järjestelmävirheet huonosti suunnitellussa laitteistossa. .

Kuinka asentaa "stressi"-työkalu Linuxiin

Asenna stressityökalu Debianiin ja sen johdannaisiin, kuten Ubuntuun ja Mintiin, suorittamalla seuraava komento.

sudo apt-get install stress

Jos haluat asentaa stressin RHEL/CentOS- ja Fedora Linuxiin, sinun on otettava EPEL-tietovarasto käyttöön ja kirjoittamalla seuraava yum-komento asentaaksesi sama:

yum install stress

Stressin käytön yleinen syntaksi on:

sudo stress option argument

Joitakin vaihtoehtoja, joita voit käyttää stressin kanssa.

  1. Jos haluat luoda N-työläisiä, jotka pyörivät sqrt()-funktiolla, käytä –cpu N -vaihtoehtoa seuraavasti.
  2. Jos haluat synnyttää N työntekijää, joka pyörii sync()-funktiolla, käytä –io N -vaihtoehtoa seuraavasti.
  3. Jos haluat saada N-työntekijää pyörimään malloc()/free()-funktioilla, käytä –vm N -vaihtoehtoa.
  4. Voit varata muistia virtuaalikonetyöntekijää kohti –vm-bytes N -vaihtoehdon avulla.
  5. Muistiresurssien vapauttamisen ja uudelleen jakamisen sijaan voit likata muistia –vm-keep-vaihtoehdolla.
  6. Aseta lepotilaksi N sekuntia ennen kuin vapautat muistia –vm-hang N -vaihtoehdon avulla.
  7. Käytä –hdd N -vaihtoehtoa, jos haluat syntyä N työntekijää, jotka pyörittävät write()/unlink()-funktioita.
  8. Voit asettaa aikakatkaisun N sekunnin kuluttua käyttämällä –aikakatkaisu N -vaihtoehtoa.
  9. Aseta odotuskerroin N mikrosekuntia ennen työn alkamista käyttämällä –backoff N -vaihtoehtoa seuraavasti.
  10. Jos haluat näyttää tarkempia tietoja stressin aikana, käytä -v-vaihtoehtoa.
  11. Käytä –apua nähdäksesi stressin käyttöön liittyviä ohjeita tai tarkastellaksesi ohjesivua.

Kuinka käytän stressiä Linux-järjestelmissä?

1. Jos haluat tutkia komennon vaikutusta joka kerta, kun suoritat sen, suorita ensin uptime-komento ja merkitse muistiin kuormituksen keskiarvo.

Suorita seuraavaksi stress-komento luodaksesi 8 työntekijää, jotka pyörivät sqrt()-tilassa 20 sekunnin aikakatkaisulla. Suorita stressin jälkeen uudelleen uptime-komento ja vertaa kuormituksen keskiarvoa.


tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu  8 --timeout 20
tecmint@tecmint ~ $ uptime
Näytelähtö
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. Jos haluat saada 8 työntekijää pyörimään sqrt():llä 30 sekunnin aikakatkaisulla ja näyttämään yksityiskohtaisia tietoja toiminnasta, suorita tämä komento:

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
tecmint@tecmint ~ $ uptime
Näytelähtö
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. Jos haluat saada yhden malloc()- ja free()-funktioiden työntekijän 60 sekunnin aikakatkaisulla, suorita seuraava komento.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
tecmint@tecmint ~ $ uptime
Näytelähtö
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. Swan 4 työntekijää pyörii sqrt(), 2 työntekijää pyörii sync(), 2 työntekijää malloc()/free(), aika on 20 sekuntia ja varaa muisti 256 Mt VM-työntekijää kohti, suorita tämä komento alla.

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