Izprotiet Linux slodzes vidējos rādītājus un uzraugiet Linux veiktspēju


Šajā rakstā mēs izskaidrosim vienu no kritiskajiem Linux sistēmas administrēšanas uzdevumiem - veiktspējas uzraudzību attiecībā uz sistēmas/CPU slodzi un slodzes vidējiem rādītājiem.

Pirms mēs virzāmies tālāk, sapratīsim šīs divas svarīgās frāzes visās Unix līdzīgajās sistēmās:

  • Sistēmas slodze/CPU slodze - ir CPU pārslodzes vai nepietiekamas izmantošanas mērījums Linux sistēmā; CPU izpildīto vai gaidīšanas režīmā esošo procesu skaits.
  • Vidējā slodze - ir vidējā sistēmas slodze, kas aprēķināta noteiktā laika periodā no 1, 5 un 15 minūtēm.

Tehniski tiek uzskatīts, ka operētājsistēmā Linux slodzes vidējais rādītājs ir tā darbības vidējais rādītājs tā (kodola) izpildes rindā, kas atzīmēta kā darbīga vai nepārtraukta.

Pieraksti to:

  • Visās, ja ne lielākajā daļā sistēmu, kuras darbina Linux vai citas Unix līdzīgas sistēmas, iespējams, lietotāja kaut kur rādītās vidējās slodzes vērtības.
  • Pilnīgi dīkstāves Linux sistēmā vidējā slodze var būt nulle, izņemot dīkstāves procesu.
  • Gandrīz visās Unix līdzīgās sistēmās tiek uzskaitīti tikai procesi darbības vai gaidīšanas stāvoklī. Bet tas nav gadījumā ar Linux, tas ietver procesus nepārtrauktā miega stāvoklī; tie, kas gaida citus sistēmas resursus, piemēram, diska I/O utt.

Kā pārraudzīt Linux sistēmas vidējo slodzi

Ir daudz veidu, kā uzraudzīt sistēmas vidējo slodzi, ieskaitot darbības laiku, kas parāda, cik ilgi sistēma darbojas, lietotāju skaitu kopā ar vidējiem slodzes rādītājiem:

$ uptime

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

Skaitļi tiek nolasīti no kreisās uz labo, un augšējā izeja nozīmē, ka:

  • vidējais slodzes līmenis pēdējās 1 minūtes laikā ir 1,98
  • vidējā slodze pēdējās 5 minūtēs ir 2,15
  • vidējā slodze pēdējās 15 minūtēs ir 2,21

Augstas slodzes vidējie rādītāji nozīmē, ka sistēma ir pārslogota; daudzi procesi gaida CPU laiku.

Mēs to atklāsim nākamajā sadaļā attiecībā uz CPU kodolu skaitu. Turklāt mēs varam izmantot arī citus labi zināmus rīkus, piemēram, skatienus, kas parāda darbojošās Linux sistēmas reāllaika stāvokli, kā arī daudzus citus rīkus:

$ 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 
...

Šo rīku parādītie slodzes vidējie rādītāji ir read/proc/loadavg fails, kuru varat apskatīt, izmantojot komandu cat šādi:

$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Lai monitorētu slodzes vidējos rādītājus diagrammas formātā, pārbaudiet: ttyload - rāda krāsu kodētu grafiku ar Linux slodzes vidējo rādītāju terminālā

Galddatoros ir grafiski lietotāja saskarnes rīki, kurus mēs varam izmantot, lai skatītu sistēmas slodzes vidējos rādītājus.

Izpratne par sistēmas vidējo slodzi attiecībā uz CPU skaitu

Mēs, iespējams, nevaram izskaidrot sistēmas noslodzi vai sistēmas veiktspēju, neuzkrājot CPU kodolu skaita ietekmi uz veiktspēju.

  • Daudzprocesors - vieta, kur divi vai vairāki fiziski centrālie procesori ir integrēti vienā datorsistēmā.
  • Daudzkodolu procesors - tas ir viens fizisks centrālais procesors, kuram ir vismaz divi vai vairāki atsevišķi kodoli (vai kurus mēs varam dēvēt arī par apstrādes vienībām), kas darbojas paralēli. Tas nozīmē, ka divkodolam ir 2 divi apstrādes bloki, četrkodolu ir 4 procesori un tā tālāk.

Turklāt ir arī procesoru tehnoloģija, kuru Intel pirmo reizi ieviesa, lai uzlabotu paralēlo skaitļošanu, kas tiek dēvēta par hiper pavedienu.

Saskaņā ar hiper pavedieniem viens fizisks CPU kodols parādās kā divi loģiski procesora kodoli operētājsistēmai (bet patiesībā ir viena fiziska aparatūras sastāvdaļa).

Ņemiet vērā, ka viens CPU kodols vienlaikus var veikt tikai vienu uzdevumu, tādējādi tika atdzīvinātas tādas tehnoloģijas kā vairāki procesori/procesori, daudzkodolu procesori un hiperizvade.

Izmantojot vairāk nekā vienu procesoru, vienlaikus var izpildīt vairākas programmas. Mūsdienu Intel centrālajos procesoros tiek izmantota gan vairāku kodolu, gan hiper pavedienu tehnoloģijas kombinācija.

Lai atrastu sistēmā pieejamo apstrādes vienību skaitu, mēs varam izmantot komandas nproc vai lscpu šādi:

$ nproc
4

OR
lscpu

Vēl viens veids, kā atrast apstrādes vienību skaitu, izmantojot komandu grep, kā parādīts.

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

4

Tagad, lai labāk izprastu sistēmas slodzi, mēs pieņemsim dažus pieņēmumus. Pieņemsim, ka mums ir zemāki slodzes vidējie rādītāji:

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

  • Procesors tika pilnībā (100%) izmantots vidēji; CPU (1.00) pēdējās 1 minūtes laikā darbojās 1 process.
  • CPU bija dīkstāvē vidēji par 60%; neviens process nebija gaidījis CPU laiku (0,40) pēdējo 5 minūšu laikā.
  • CPU bija pārslogots vidēji par 235%; CPU laiku (3,35) pēdējo 15 minūšu laikā gaidīja 2,35 procesi.

  • Viens centrālais procesors bija vidēji 100% dīkstāvē, tika izmantots viens procesors; neviens process nebija gaidījis CPU laiku (1.00) pēdējās 1 minūtes laikā.
  • CPU bija dīkstāvē vidēji par 160%; CPU laiku negaidīja neviens process. (0,40) pēdējās 5 minūtēs.
  • Procesori bija pārslogoti vidēji par 135%; CPU laiku gaidīja 1,35 procesi. (3.35) pēdējās 15 minūtēs.

Jums varētu patikt arī:

  1. 20 komandrindas rīki Linux veiktspējas uzraudzībai - 1. daļa
  2. 13 Linux veiktspējas uzraudzības rīki - 2. daļa
  3. Perf - Linux veiktspējas uzraudzības un analīzes rīks
  4. Nmon: analizējiet un pārraugiet Linux sistēmas veiktspēju

Visbeidzot, ja jūs esat sistēmas administrators, tad par lieliem slodzes vidējiem rādītājiem ir jāuztraucas. Kad tie ir augsti, virs CPU kodolu skaita, tas nozīmē lielu pieprasījumu pēc centrālajiem procesoriem, un zemas slodzes vidējie rādītāji zem CPU serdeņu skaita mums norāda, ka CPU tiek nepietiekami izmantoti.