Fahamu Wastani wa Upakiaji wa Linux na Ufuatilia Utendaji wa Linux


Katika makala hii, tutaelezea mojawapo ya kazi muhimu za usimamizi wa mfumo wa Linux - ufuatiliaji wa utendaji kuhusiana na mfumo/CPU ya mzigo na wastani wa mzigo.

Kabla hatujasonga mbele zaidi, hebu tuelewe vishazi hivi viwili muhimu katika mifumo yote inayofanana na Unix:

  • Upakiaji wa mfumo/Mzigo wa CPU - ni kipimo cha juu au chini ya matumizi ya CPU katika mfumo wa Linux; idadi ya michakato ambayo inatekelezwa na CPU au katika hali ya kusubiri.
  • Wastani wa upakiaji - ni wastani wa mzigo wa mfumo unaokokotolewa kwa kipindi fulani cha dakika 1, 5 na 15.

Katika Linux, wastani wa upakiaji unaaminika kitaalamu kuwa wastani wa michakato katika (kernel) foleni ya utekelezaji iliyotambulishwa kama inayoendeshwa au isiyokatizwa.

Kumbuka kwamba:

  • Mifumo yote ikiwa sio mingi inayoendeshwa na Linux au mifumo mingine kama Unix itaonyesha thamani za wastani za upakiaji mahali fulani kwa mtumiaji.
  • Mfumo wa Linux usio na kitu unaweza kuwa na wastani wa upakiaji wa sufuri, bila kujumuisha mchakato wa kutofanya kitu.
  • Takriban mifumo yote inayofanana na Unix huhesabu michakato katika hali zinazoendelea au zinazosubiri pekee. Lakini hii sivyo ilivyo kwa Linux, inajumuisha taratibu katika hali za usingizi usioingiliwa; wanaosubiri rasilimali nyingine za mfumo kama vile diski I/O n.k.

Jinsi ya Kufuatilia Wastani wa Upakiaji wa Mfumo wa Linux

Kuna njia nyingi za ufuatiliaji wa wastani wa upakiaji wa mfumo ikiwa ni pamoja na muda wa ziada unaoonyesha muda ambao mfumo umekuwa ukifanya kazi, idadi ya watumiaji pamoja na wastani wa upakiaji:

$ uptime

07:13:53 up 8 days, 19 min,  1 user,  load average: 1.98, 2.15, 2.21

Nambari zinasomwa kutoka kushoto kwenda kulia, na matokeo hapo juu inamaanisha kuwa:

  • wastani wa upakiaji katika dakika 1 iliyopita ni 1.98
  • wastani wa upakiaji katika dakika 5 zilizopita ni 2.15
  • wastani wa upakiaji katika dakika 15 zilizopita ni 2.21

Wastani wa juu wa upakiaji unamaanisha kuwa mfumo umejaa kupita kiasi; michakato mingi inasubiri wakati wa CPU.

Tutagundua hili katika sehemu inayofuata kuhusiana na idadi ya cores za CPU. Zaidi ya hayo, tunaweza pia kutumia zana zingine zinazojulikana kama vile kutazama ambazo zinaonyesha hali ya wakati halisi ya mfumo wa Linux unaoendesha, pamoja na zana zingine nyingi:

$ top
top - 12:51:42 up  2:11,  1 user,  load average: 1.22, 1.12, 1.26
Tasks: 243 total,   1 running, 242 sleeping,   0 stopped,   0 zombie
%Cpu(s): 17.4 us,  2.9 sy,  0.3 ni, 74.8 id,  4.6 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8069036 total,   388060 free,  4381184 used,  3299792 buff/cache
KiB Swap:  3906556 total,  3901876 free,     4680 used.  2807464 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                        
 6265 tecmint   20   0 1244348 170680  83616 S  13.3  2.1   6:47.72 Headset                                                                                                                                        
 2301 tecmint    9 -11  640332  13344   9932 S   6.7  0.2   2:18.96 pulseaudio                                                                                                                                     
 2459 tecmint   20   0 1707692 315628  62992 S   6.7  3.9   6:55.45 cinnamon                                                                                                                                       
 2957 tecmint   20   0 2644644 1.035g 137968 S   6.7 13.5  50:11.13 firefox                                                                                                                                        
 3208 tecmint   20   0  507060  52136  33152 S   6.7  0.6   0:04.34 gnome-terminal-                                                                                                                                
 3272 tecmint   20   0 1521380 391324 178348 S   6.7  4.8   6:21.01 chrome                                                                                                                                         
 6220 tecmint   20   0 1595392 106964  76836 S   6.7  1.3   3:31.94 Headset                                                                                                                                        
    1 root      20   0  120056   6204   3964 S   0.0  0.1   0:01.83 systemd                                                                                                                                        
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                                                                                                                                       
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.10 ksoftirqd/0                                                                                                                                    
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H   
....
$ glances
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic)                                                                                                                                               Uptime: 2:16:06

CPU      16.4%  nice:     0.1%                                        LOAD    4-core                                        MEM     60.5%  active:    4.90G                                        SWAP      0.1%
user:    10.2%  irq:      0.0%                                        1 min:    1.20                                        total:  7.70G  inactive:  2.07G                                        total:   3.73G
system:   3.4%  iowait:   2.7%                                        5 min:    1.16                                        used:   4.66G  buffers:    242M                                        used:    4.57M
idle:    83.6%  steal:    0.0%                                        15 min:   1.24                                        free:   3.04G  cached:    2.58G                                        free:    3.72G

NETWORK     Rx/s   Tx/s   TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view
enp1s0     525Kb   31Kb
lo           2Kb    2Kb     CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR/s IOW/s Command 
wlp2s0        0b     0b     14.6  13.3 2.53G 1.03G  2957 tecmint      0 S 51:49.10     0   40K /usr/lib/firefox/firefox 
                             7.4   2.2 1.16G  176M  6265 tecmint      0 S  7:08.18     0     0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan
DISK I/O     R/s    W/s      4.9   3.9 1.63G  310M  2459 tecmint      0 R  7:12.18     0     0 cinnamon --replace
ram0           0      0      4.2   0.2  625M 13.0M  2301 tecmint    -11 S  2:29.72     0     0 /usr/bin/pulseaudio --start --log-target=syslog
ram1           0      0      4.2   1.3 1.52G  105M  6220 tecmint      0 S  3:42.64     0     0 /usr/lib/Headset/Headset 
ram10          0      0      2.9   0.8  409M 66.7M  6240 tecmint      0 S  2:40.44     0     0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2
ram11          0      0      2.9   1.8  531M  142M  1690 root         0 S  6:03.79     0     0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
ram12          0      0      2.6   0.3 79.3M 23.8M  9651 tecmint      0 R  0:00.71     0     0 /usr/bin/python3 /usr/bin/glances
ram13          0      0      1.6   4.8 1.45G  382M  3272 tecmint      0 S  6:25.30     0    4K /opt/google/chrome/chrome 
...

Wastani wa upakiaji ulioonyeshwa na zana hizi husomwa /proc/loadavg faili, ambayo unaweza kutazama kwa kutumia amri ya paka kama ilivyo hapo chini:

$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Ili kufuatilia wastani wa upakiaji katika umbizo la grafu, angalia: ttyload - Inaonyesha Grafu yenye Msimbo wa Rangi ya Wastani wa Upakiaji wa Linux kwenye Kituo

Kwenye mashine za mezani, kuna zana za kiolesura cha picha ambazo tunaweza kutumia ili kuona wastani wa upakiaji wa mfumo.

Kuelewa Mzigo Wastani wa Mfumo katika Idadi ya Uhusiano ya CPU

Hatuwezi kueleza upakiaji wa mfumo au utendakazi wa mfumo bila kuangazia athari ya idadi ya viini vya CPU kwenye utendakazi.

  • Vichakataji vingi - ni pale CPU mbili au zaidi halisi zinaunganishwa kwenye mfumo mmoja wa kompyuta.
  • Kichakataji cha msingi-nyingi - ni CPU moja halisi ambayo ina angalau cores mbili au zaidi tofauti (au ambazo tunaweza pia kurejelea kama vitengo vya uchakataji) vinavyofanya kazi sambamba. Maana ya msingi-mbili ina vitengo 2 vya usindikaji, quad-core ina vitengo 4 vya usindikaji na kadhalika.

Zaidi ya hayo, pia kuna teknolojia ya kichakataji ambayo ilianzishwa kwanza na Intel ili kuboresha kompyuta sambamba, inayojulikana kama hyper threading.

Chini ya utaftaji wa hali ya juu, msingi mmoja wa asili wa CPU huonekana kama msingi wa CPU mbili za kimantiki kwa mfumo wa uendeshaji (lakini kwa ukweli, kuna sehemu moja ya maunzi halisi).

Kumbuka kuwa msingi mmoja wa CPU unaweza tu kutekeleza kazi moja kwa wakati mmoja, kwa hivyo teknolojia kama vile CPU/vichakataji vingi, CPU za msingi nyingi na uchanganyaji mwingi zilianzishwa.

Kwa CPU zaidi ya moja, programu kadhaa zinaweza kutekelezwa kwa wakati mmoja. Intel CPU za kisasa hutumia mchanganyiko wa cores nyingi na teknolojia ya ku-threading.

Ili kupata idadi ya vitengo vya usindikaji vinavyopatikana kwenye mfumo, tunaweza kutumia amri za nproc au lscpu kama ifuatavyo:

$ nproc
4

OR
lscpu

Njia nyingine ya kupata idadi ya vitengo vya usindikaji kwa kutumia grep amri kama inavyoonyeshwa.

$ grep 'model name' /proc/cpuinfo | wc -l

4

Sasa, ili kuelewa zaidi mzigo wa mfumo, tutachukua mawazo machache. Wacha tuseme tunayo wastani wa mzigo hapa chini:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35

  • CPU ilitumika kikamilifu (100%) kwa wastani; Mchakato 1 ulikuwa ukiendelea kwenye CPU (1.00) katika dakika 1 iliyopita.
  • CPU ilikuwa bila kufanya kazi kwa 60% kwa wastani; hakuna michakato iliyokuwa ikingojea muda wa CPU (0.40) katika dakika 5 zilizopita.
  • CPU ilizidiwa kwa 235% kwa wastani; Michakato 2.35 ilikuwa ikingoja muda wa CPU (3.35) katika dakika 15 zilizopita.

  • CPU moja ilikuwa 100% bila kufanya kitu kwa wastani, CPU moja ilikuwa inatumika; hakuna michakato iliyokuwa ikingojea muda wa CPU (1.00) katika dakika 1 iliyopita.
  • CPU hazikuwa na shughuli kwa 160% kwa wastani; hakuna michakato iliyokuwa ikingojea wakati wa CPU. (0.40) katika dakika 5 zilizopita.
  • CPU zilizidiwa kwa 135% kwa wastani; Michakato 1.35 ilikuwa ikingojea wakati wa CPU. (3.35) katika dakika 15 zilizopita.

Unaweza pia kupenda:

  1. Zana 20 za Mstari wa Amri za Kufuatilia Utendaji wa Linux - Sehemu ya 1
  2. Zana 13 za Kufuatilia Utendaji wa Linux - Sehemu ya 2
  3. Perf- Zana ya Ufuatiliaji na Uchambuzi wa Utendaji kwa Linux
  4. Nmon: Changanua na Ufuatilie Utendaji wa Mfumo wa Linux

Kwa kumalizia, ikiwa wewe ni msimamizi wa mfumo basi wastani wa upakiaji wa juu ni wa kweli wa kuwa na wasiwasi. Wakati ziko juu, juu ya idadi ya core za CPU, inaashiria mahitaji makubwa ya CPU, na wastani wa chini wa mzigo chini ya idadi ya cores za CPU hutuambia kuwa CPU hazitumiki.