Linux Yük Ortalamalarını Anlayın ve Linux Performansını İzleyin


Bu makalede, kritik Linux sistem yönetimi görevlerinden biri olan sistem/CPU yükü ve yük ortalamalarına ilişkin performans izlemeyi açıklayacağız.

Daha ileri gitmeden önce, Unix benzeri tüm sistemlerde şu iki önemli ifadeyi anlayalım:

  • Sistem yükü/CPU Yükü – bir Linux sisteminde CPU'nun fazla veya az kullanımının ölçümüdür; CPU tarafından yürütülen veya bekleme durumunda olan işlemlerin sayısı.
  • Yük ortalaması – 1, 5 ve 15 dakikalık belirli bir süre boyunca hesaplanan ortalama sistem yüküdür.

Linux'ta yük ortalamasının, teknik olarak, (çekirdek) yürütme kuyruğundaki, çalışıyor veya kesintisiz olarak etiketlenen süreçlerin çalışan ortalaması olduğuna inanılır.

Şunu unutmayın:

  • Linux veya diğer Unix benzeri sistemler tarafından desteklenen sistemlerin çoğu olmasa da tümü, muhtemelen bir kullanıcı için yük ortalama değerlerini bir yerde gösterecektir.
  • Tamamen boşta olan bir Linux sisteminin, boşta kalan süreç hariç, yük ortalaması sıfır olabilir.
  • Neredeyse tüm Unix benzeri sistemler yalnızca çalışan veya bekleme durumundaki işlemleri sayar. Ancak Linux'ta durum böyle değil, kesintisiz uyku durumlarındaki süreçleri içeriyor; disk G/Ç vb. gibi diğer sistem kaynaklarını bekleyenler.

Linux Sistem Yük Ortalaması Nasıl İzlenir?

Sistemin ne kadar süredir çalıştığını, kullanıcı sayısını ve yük ortalamalarını gösteren çalışma süresi de dahil olmak üzere sistem yük ortalamasını izlemenin çok sayıda yolu vardır:

uptime

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

Sayılar soldan sağa okunur ve yukarıdaki çıktı şu anlama gelir:

  • son 1 dakikadaki yük ortalaması 1,98
  • son 5 dakikadaki yük ortalaması 2,15
  • Son 15 dakikadaki yük ortalaması 2,21

Yüksek yük ortalamaları sistemin aşırı yüklendiği anlamına gelir; birçok işlem CPU zamanını bekliyor.

Bunu bir sonraki bölümde CPU çekirdeği sayısıyla ilgili olarak ortaya çıkaracağız. Ek olarak, çalışan bir Linux sisteminin gerçek zamanlı durumunu görüntüleyen top ve bakışlar gibi iyi bilinen diğer araçların yanı sıra diğer birçok aracı da kullanabiliriz:

Üst Komut

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

Bakış Aracı

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

Bu araçların gösterdiği yük ortalamaları, cat komutunu kullanarak aşağıdaki gibi görüntüleyebileceğiniz okunmuş /proc/loadavg dosyasıdır:

cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Yük ortalamalarını grafik formatında izlemek için şuraya göz atın: ttyload - Terminalde Linux Yük Ortalamasının Renk Kodlu Grafiği'ni gösterir

Masaüstü makinelerde sistem yük ortalamalarını görüntülemek için kullanabileceğimiz grafiksel kullanıcı arayüzü araçları bulunmaktadır.

CPU Sayısına İlişkin Sistem Ortalama Yükünü Anlama

CPU çekirdeği sayısının performans üzerindeki etkisine ışık tutmadan sistem yükünü veya sistem performansını muhtemelen açıklayamayız.

Çok işlemcili ve Çok çekirdekli

  • Çok işlemcili – iki veya daha fazla fiziksel CPU'nun tek bir bilgisayar sistemine entegre edildiği yerdir.
  • Çok çekirdekli işlemci – paralel olarak çalışan en az iki veya daha fazla ayrı çekirdeğe (veya işlem birimleri olarak da adlandırabiliriz) sahip tek bir fiziksel CPU'dur. Yani çift çekirdekli işlemcide 2 adet iki işlem birimi bulunurken, dört çekirdekli işlemcide 4 işlem birimi bulunur ve bu böyle devam eder.

Ayrıca, paralel hesaplamayı geliştirmek için ilk kez Intel tarafından tanıtılan ve hiper iş parçacığı adı verilen bir işlemci teknolojisi de vardır.

Hiper iş parçacığı altında, tek bir fiziksel CPU çekirdeği, bir işletim sisteminin iki mantıksal CPU çekirdeği olarak görünür (ancak gerçekte tek bir fiziksel donanım bileşeni vardır).

Tek bir CPU çekirdeğinin aynı anda yalnızca bir görevi yerine getirebileceğini, dolayısıyla birden fazla CPU/işlemci, çok çekirdekli CPU ve hiper iş parçacığı gibi teknolojilerin hayata geçirildiğini unutmayın.

Birden fazla CPU ile birden fazla program aynı anda çalıştırılabilir. Günümüz Intel CPU'ları hem çoklu çekirdeklerin hem de hiper iş parçacığı teknolojisinin bir kombinasyonunu kullanıyor.

Bir sistemde mevcut olan işlem birimlerinin sayısını bulmak için nproc veya lscpu komutlarını aşağıdaki gibi kullanabiliriz:

nproc
4

OR
lscpu

Gösterilen grep komutunu kullanarak işlem birimi sayısını bulmanın başka bir yolu.

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

4

Şimdi sistem yükünü daha iyi anlamak için birkaç varsayımda bulunacağız. Diyelim ki aşağıdaki yük ortalamalarımız var:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
Tek çekirdekli bir sistemde bu şu anlama gelir:
  • CPU ortalama olarak tamamen (%100) kullanıldı; Son 1 dakika içinde CPU'da (1.00) 1 işlem çalışıyordu.
  • CPU ortalama %60 boşta kaldı; son 5 dakika içinde hiçbir işlem CPU süresini (0,40) beklemiyordu.
  • CPU ortalama %235 oranında aşırı yüklendi; Son 15 dakikada 2,35 işlem CPU zamanı (3,35) bekliyordu.
Çift çekirdekli bir sistemde bu şu anlama gelir:
  • Bir CPU ortalama %100 boştaydı, bir CPU kullanılıyordu; son 1 dakika içinde hiçbir işlem CPU süresini (1,00) beklemiyordu.
  • CPU'lar ortalama %160 oranında boştaydı; hiçbir işlem CPU zamanını beklemiyordu. (0.40) son 5 dakikada.
  • CPU'lar ortalama %135 oranında aşırı yüklendi; 1.35 işlem CPU zamanını bekliyordu. (3.35) son 15 dakikada.

Bunları da beğenebilirsin:

  1. Linux Performansını İzlemek için 20 Komut Satırı Aracı – Bölüm 1
  2. 13 Linux Performans İzleme Araçları – Bölüm 2
  3. Perf - Linux için Performans İzleme ve Analiz Aracı
  4. Nmon: Linux Sistem Performansını Analiz Edin ve İzleyin

Sonuç olarak, eğer bir sistem yöneticisiyseniz, yüksek yük ortalamaları endişe vericidir. CPU çekirdeği sayısının üzerinde yüksek olmaları, CPU'lara olan talebin yüksek olduğu anlamına gelir ve CPU çekirdeği sayısının altındaki düşük yük ortalamaları bize CPU'ların gereğinden az kullanıldığını gösterir.