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:
- Linux Performansını İzlemek için 20 Komut Satırı Aracı – Bölüm 1
- 13 Linux Performans İzleme Araçları – Bölüm 2
- Perf - Linux için Performans İzleme ve Analiz Aracı
- 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.