Jinsi ya Kuweka Mzigo wa Juu wa CPU na Mtihani wa Mfadhaiko kwenye Linux Kwa Kutumia Zana ya Stress-ng


Kama Msimamizi wa Mfumo, unaweza kutaka kuchunguza na kufuatilia hali ya mifumo yako ya Linux wakati iko chini ya mkazo wa mzigo mkubwa. Hii inaweza kuwa njia nzuri kwa Wasimamizi wa Mfumo na Waandaaji wa Programu:

  1. rekebisha vyema shughuli kwenye mfumo.
  2. fuatilia miingiliano ya kerneli ya mfumo wa uendeshaji.
  3. jaribu vipengele vyako vya maunzi vya Linux kama vile CPU, kumbukumbu, vifaa vya diski na vingine vingi ili kuona utendakazi wao chini ya mkazo.
  4. pima mizigo tofauti inayotumia nishati kwenye mfumo.

Katika mwongozo huu, tutaangalia zana mbili muhimu, mafadhaiko na mafadhaiko kwa majaribio ya mafadhaiko chini ya mifumo yako ya Linux.

1. mfadhaiko - ni zana ya jenereta ya mzigo wa kazi iliyoundwa ili kuweka mfumo wako kwa kipimo kinachoweza kusanidiwa cha CPU, kumbukumbu, I/O na mkazo wa diski.

2. stress-ng - ni toleo lililosasishwa la zana ya jenereta ya mzigo wa kazi ambayo hujaribu mfumo wako kwa vipengele vifuatavyo:

  1. Kokotoo la CPU
  2. endesha mkazo
  3. I/O inasawazisha
  4. Bomba I/O
  5. kuvuruga akiba
  6. Mkazo wa VM
  7. kusisitiza tundu
  8. uundaji na usitishaji wa mchakato
  9. sifa za kubadilisha muktadha

Ingawa zana hizi ni nzuri kwa kukagua mfumo wako, hazipaswi kutumiwa tu na mtumiaji yeyote wa mfumo.

Muhimu: Inapendekezwa sana utumie zana hizi kwa haki za mtumiaji wa mizizi, kwa sababu zinaweza kusisitiza mashine yako ya Linux haraka sana na kuepuka hitilafu fulani za mfumo kwenye maunzi yaliyoundwa vibaya.

Jinsi ya Kufunga Zana ya 'stress' kwenye Linux

Ili kusakinisha zana ya mafadhaiko kwenye Debian na viambajengo vyake kama vile Ubuntu na Mint, endesha amri ifuatayo.

$ sudo apt-get install stress

Ili kusakinisha mafadhaiko kwenye RHEL/CentOS na Fedora Linux, unahitaji kuwasha hazina ya EPEL kisha uandike yum amri ifuatayo ili kusakinisha hiyo hiyo:

# yum install stress

Syntax ya jumla ya kutumia mkazo ni:

$ sudo stress option argument

Baadhi ya chaguzi ambazo unaweza kutumia na dhiki.

  1. Ili kuzalisha wafanyakazi wa N wanaozunguka kwenye sqrt() chaguo la kukokotoa, tumia chaguo la -cpu N kama ifuatavyo.
  2. Ili kuzalisha wafanyakazi wa N wanaozunguka kwenye kitendakazi cha sync(), tumia chaguo la -io N kama ifuatavyo.
  3. Ili kuzalisha wafanyakazi wa N wanaozunguka kwenye vitendaji vya malloc()/free(), tumia chaguo la -vm N.
  4. Ili kutenga kumbukumbu kwa kila mfanyakazi wa vm, tumia chaguo la -vm-bytes N.
  5. Badala ya kufungia na kuhamisha rasilimali za kumbukumbu, unaweza kubadilisha kumbukumbu kwa kutumia chaguo la -vm-keep.
  6. Weka usingizi kuwa sekunde N kabla ya kukomboa kumbukumbu kwa kutumia chaguo la -vm-hang N.
  7. Ili kuzalisha wafanyakazi wa N wanaozunguka kwenye vitendaji vya write()/unlink(), tumia chaguo la -hdd N.
  8. Unaweza kuweka muda wa kuisha baada ya sekunde N kwa kutumia chaguo la -timeout N.
  9. Weka kipengele cha kusubiri cha sekunde ndogo za N kabla ya kazi yoyote kuanza kwa kutumia chaguo la -backoff N kama ifuatavyo.
  10. Ili kuonyesha maelezo ya kina zaidi unapoendesha mkazo, tumia chaguo la -v.
  11. Tumia -help kuona usaidizi wa kutumia mfadhaiko au kutazama manpage.

1. Kuchunguza athari za amri kila wakati unapoiendesha, kwanza endesha amri ya uptime na uangalie chini wastani wa mzigo.

Ifuatayo, endesha amri ya mkazo ili kuzaa wafanyikazi 8 wanaozunguka sqrt() na kuisha kwa sekunde 20. Baada ya kuendesha dhiki, endesha tena amri ya uptime na ulinganishe wastani wa mzigo.

[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. Ili kuzalisha wafanyikazi 8 wanaozunguka sqrt() kwa muda wa sekunde 30, kuonyesha maelezo ya kina kuhusu operesheni, endesha amri hii:

[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. Ili kubadilisha mfanyikazi mmoja wa kazi za malloc() na bure() kwa kuisha kwa sekunde 60, endesha amri ifuatayo.

[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. Ili kubadilisha wafanyikazi 4 wanaozunguka sqrt(), wafanyikazi 2 wanaozunguka kwenye usawazishaji(), wafanyikazi 2 kwenye malloc()/free(), kwa muda kati ya sekunde 20 na kutenga kumbukumbu ya 256MB kwa kila mfanyakazi wa vm, endesha hii. amri hapa chini.

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