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:
- suderinti veiklą sistemoje.
- stebėti operacinės sistemos branduolio sąsajas.
- 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.
- 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ų:
- CPU skaičiavimas
- skatina stresą
- Įvesties/išvesties sinchronizavimas
- Vamzdžių įvestis/išvestis
- talpyklos išmėtymas
- VM stresas
- lizdo įtempimas
- proceso kūrimas ir nutraukimas
- 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.
- Norėdami išgauti N darbuotojus, sukančius apie sqrt() funkciją, naudokite parinktį –cpu N taip:
- Norėdami išgauti N darbuotojus, sukančius sinchronizavimo() funkciją, naudokite –io N parinktį taip.
- Norėdami išgauti N darbuotojų, besisukančių ant malloc()/free(), naudokite parinktį –vm N.
- Norėdami paskirstyti atmintį vienam darbuotojui, naudokite parinktį –vm-baitai N.
- Užuot atlaisvinę ir perskirstę atminties išteklius, galite pakeisti atmintį naudodami parinktį –vm-keep.
- Prieš atlaisvindami atmintį, nustatykite miego režimą į N sekundę naudodami –vm-hang N parinktį.
- Norėdami išgauti N darbuotojus, kurie sukasi rašymo()/atsiejimo() funkcijose, naudokite –hdd N parinktį.
- Taikymą galite nustatyti po N sekundžių naudodami parinktį –outout N.
- Nustatykite N mikrosekundžių laukimo koeficientą prieš pradedant bet kokį darbą naudodami parinktį –back off N.
- Norėdami rodyti išsamesnę informaciją streso metu, naudokite parinktį -v.
- 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]