Kaip pritaikyti didelę procesoriaus apkrovą ir įtampos testą „Linux“ naudojant „Stress-ng“ įrankį


Kaip sistemos administratorius, galbūt norėsite ištirti ir stebėti savo „Linux“ sistemų būseną, kai joms tenka didelis krūvis. Tai gali būti geras būdas sistemos administratoriams ir programuotojams:

  1. suderinti veiklą sistemoje.
  2. stebėti operacinės sistemos branduolio sąsajas.
  3. išbandykite savo „Linux“ aparatinės įrangos komponentus, tokius kaip procesorius, atmintis, disko įrenginiai ir daugelis kitų, kad pastebėtumėte jų našumą esant įtampai.
  4. išmatuokite skirtingas energijos sąnaudas sistemoje.

Šiame vadove mes apžvelgsime du svarbius įrankius - stresą ir stresą-ng, kad galėtumėte išbandyti stresą savo „Linux“ sistemose.

1. stresas - tai darbo krūvio generavimo įrankis, skirtas pritaikyti jūsų sistemai konfigūruojamą procesoriaus, atminties, įvesties/išvesties ir disko įtampos matą.

2. stress-ng - tai atnaujinta įtempio darbo krūvio generavimo įrankio versija, išbandanti jūsų sistemą dėl šių funkcijų:

  1. CPU skaičiavimas
  2. skatina stresą
  3. Įvesties/išvesties sinchronizavimas
  4. Vamzdžių įvestis/išvestis
  5. talpyklos išmėtymas
  6. VM stresas
  7. lizdo įtempimas
  8. proceso kūrimas ir nutraukimas
  9. konteksto perjungimo ypatybės

Nors šie įrankiai yra tinkami jūsų sistemos tyrimams, jais naudotis turėtų ne tik bet kuris sistemos vartotojas.

Svarbu: labai rekomenduojama naudoti šiuos įrankius su root vartotojo teisėmis, nes jie gali taip greitai įtempti jūsų „Linux“ mašiną ir išvengti tam tikrų sistemos klaidų netinkamai suprojektuotoje aparatinėje įrangoje.

Kaip įdiegti „streso“ įrankį „Linux“

Norėdami įdiegti streso įrankį „Debian“ ir jo dariniuose, pvz., „Ubuntu“ ir „Mint“, vykdykite šią komandą.

$ sudo apt-get install stress

Norėdami įdiegti stresą „RHEL/CentOS“ ir „Fedora Linux“, turite įjungti EPEL saugyklą ir įveskite šią yum komandą, kad įdiegtumėte tą patį:

# yum install stress

Bendra streso naudojimo sintaksė yra:

$ sudo stress option argument

Keletas variantų, kuriuos galite naudoti esant stresui.

  1. Norėdami išgauti N darbuotojus, sukančius apie sqrt() funkciją, naudokite parinktį –cpu N taip:
  2. Norėdami išgauti N darbuotojus, sukančius sinchronizavimo() funkciją, naudokite –io N parinktį taip.
  3. Norėdami išgauti N darbuotojų, besisukančių ant malloc()/free(), naudokite parinktį –vm N.
  4. Norėdami paskirstyti atmintį vienam darbuotojui, naudokite parinktį –vm-baitai N.
  5. Užuot atlaisvinę ir perskirstę atminties išteklius, galite pakeisti atmintį naudodami parinktį –vm-keep.
  6. Prieš atlaisvindami atmintį, nustatykite miego režimą į N sekundę naudodami –vm-hang N parinktį.
  7. Norėdami išgauti N darbuotojus, kurie sukasi rašymo()/atsiejimo() funkcijose, naudokite –hdd N parinktį.
  8. Taikymą galite nustatyti po N sekundžių naudodami parinktį –outout N.
  9. Nustatykite N mikrosekundžių laukimo koeficientą prieš pradedant bet kokį darbą naudodami parinktį –back off N.
  10. Norėdami rodyti išsamesnę informaciją streso metu, naudokite parinktį -v.
  11. Naudokite –help, kad peržiūrėtumėte streso naudojimo pagalbą arba peržiūrėtumėte vadovą.

1. Norėdami patikrinti komandos poveikį kiekvieną kartą ją paleidę, pirmiausia paleiskite komandą „uptime“ ir užrašykite apkrovos vidurkį.

Tada paleiskite komandą „Stresas“, kad išgautumėte 8 darbuotojus, besisukančius ant sqrt() su 20 sekundžių skirtingu laiku. Po streso vėl vykdykite komandą „uptime“ ir palyginkite apkrovos vidurkį.

[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. Norėdami išgauti 8 darbuotojus, sukančius ant sqrt(), 30 sekundžių skirtingu laiku, parodydami išsamią informaciją apie operaciją, vykdykite šią komandą:

[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. Norėdami suplanuoti vieną „malloc“() ir „free“() funkcijų darbuotoją su 60 sekundžių skirtingu laiku, vykdykite šią komandą.

[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. Norėdami išsiaiškinti 4 darbuotojus, besisukančius ant sqrt(), 2 darbuotojus, kurie naudojasi sinchronizuodami(), 2 darbuotojus, veikiančius sinchronizavę(), 2 darbuotojus, naudojančius „malloc“()/free(), su laiku iš 20 sekundžių ir paskirti 256 MB atmintį vienam darbininkui, paleiskite tai komandą žemiau.

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