Load Average Nedir? 1, 5 ve 15 Dakikalık Değerler Nasıl Yorumlanır?

Load average, Linux'ta belirli bir zaman aralığında çalışan veya çalışmayı bekleyen süreçlerin ortalama sayısıdır; kesintisiz disk beklemesindeki (D durumu) süreçleri de içerir. uptime ve top komutları son 1, 5 ve 15 dakikanın değerini gösterir. Değer çekirdek sayısıyla birlikte okunur: 4 çekirdekli bir sunucuda sürekli 4'ün üzerindeki yük, kuyruk oluştuğunu gösterir.

Aynı sayı farklı sunucularda farklı anlama gelir. Bu yazıda değerleri çekirdek sayısına göre yorumlayan bir tablo, Linux'a özgü D durumu ayrımı ve yük yükseldiğinde yapılacak ilk kontroller yer alıyor. Yükün kaynağını bulup kalıcı olarak düşürmek için destek isterseniz sunucu performans optimizasyonu için teklif alabilirsiniz.

Load average nedir?

Load average, sistemin ne kadar iş talebiyle karşı karşıya olduğunu gösteren tek bir sayıdır: belirli bir süre boyunca CPU'da çalışan, CPU sırası bekleyen ve kesintisiz beklemedeki görevlerin ortalamasıdır.

Linux çekirdeği her görevi bir durumda tutar. R (running/runnable) durumundaki görevler CPU'da çalışıyor ya da çalışmak için sıra bekliyordur; bu sıraya çalıştırma kuyruğu (run queue) denir. D (uninterruptible sleep) durumundaki görevler ise genellikle bir disk işleminin bitmesini bekler ve bu sırada sinyallerle kesilemez. /proc/loadavg kılavuz sayfası, ilk üç alanın R ve D durumundaki görevlerin 1, 5 ve 15 dakikalık ortalaması olduğunu belirtir.

Adında "ortalama" geçse de bu basit bir aritmetik ortalama değildir. Çekirdek, üstel olarak sönümlenen hareketli ortalama kullanır: yeni değerlerin ağırlığı yüksektir, eski değerlerin etkisi zamanla azalır ama hemen sıfırlanmaz. Bu yüzden ani bir yük sıçraması bittikten sonra da değer bir süre yüksek görünür.

1, 5 ve 15 dakikalık değerler ne anlatır?

Üç değer birlikte okunduğunda yükün yönünü gösterir. Tek başına 1 dakikalık değer kısa süreli dalgalanmalara çok duyarlıdır.

Trend okuma

Örüntü (1 / 5 / 15 dk)AnlamıNe yapılmalı?
6,1 / 3,2 / 1,4Yük yeni ve hızla artıyorŞimdi neyin başladığına bakın: trafik sıçraması, zamanlanmış görev, yedekleme
1,2 / 3,5 / 5,8Yük geçmişte yüksekti, azalıyorOlayın nedenini günlüklerden arayın, tekrarını önleyin
4,1 / 4,0 / 3,9Yük sabitÇekirdek sayısıyla karşılaştırın; sürekli fazlaysa kapasite sorunu vardır

Tablodaki sayılar örnektir. Yorum her zaman çekirdek sayısına göre yapılır; aynı 4,0 değeri bir sunucuda sorun, diğerinde normaldir.

Load average kaç olmalı?

Kısa cevap: sürekli olarak çekirdek sayısının altında olmalıdır. Değer çekirdek sayısına eşitse CPU'lar tam doludur; üzerindeyse bazı görevler sıra bekliyordur.

Pratikte değeri çekirdek sayısına bölerek çekirdek başına yükü hesaplamak işi kolaylaştırır. Yaygın bir başlangıç kuralı şudur: 0,7'nin altı rahat, 0,7–1,0 arası dolu ama sağlıklı, sürekli 1'in üzeri kuyruk demektir. Bu kesin bir eşik değil; kısa süreli aşımlar normaldir, önemli olan 5 ve 15 dakikalık değerlerin sürekli yüksek kalmasıdır.

Çekirdek sayısına göre tablo

Aşağıdaki tablo, çekirdek sayılarını Bulutzone TR Cloud VDS paketlerinden alarak aynı kuralı uygular:

ÇekirdekÖrnek paketRahat (yaklaşık)Tam doluKuyruk var
1TR Cloud v10,7'nin altı1Sürekli 1'in üzeri
2TR Cloud v21,4'ün altı2Sürekli 2'nin üzeri
4TR Cloud v3, v42,8'in altı4Sürekli 4'ün üzeri
6TR Cloud v54,2'nin altı6Sürekli 6'nın üzeri
8TR Cloud v65,6'nın altı8Sürekli 8'in üzeri

Aynı "4" değeri 2 ve 8 çekirdekte

2 çekirdekli bir sunucuda 4'lük yük, çekirdek başına 2 görev demektir: her an çalışan görev kadar bekleyen görev de vardır ve yanıt süreleri uzar. 4 çekirdekte aynı değer CPU'ların tam dolu olduğunu, 8 çekirdekte ise kapasitenin yaklaşık yarısının kullanıldığını gösterir. uptime kılavuz sayfası da bu noktayı vurgular: load average çekirdek sayısına göre normalize edilmez.

Bir uyarı: 8 çekirdekli sunucudaki 4'lük yükün tamamı D durumundaki görevlerden geliyorsa CPU'lar boş olsa bile sunucu diski beklediği için yavaştır. Bu yüzden load average her zaman CPU kullanımıyla birlikte okunur.

Linux'ta load average neden sadece CPU değildir?

Çünkü Linux, CPU'yu bekleyen görevlerin yanında kesintisiz beklemedeki (D durumu) görevleri de sayar. Birçok Unix türevinde load average yalnızca CPU talebini ölçer; Linux'taki değer ise sistem genelindeki talebi gösterir.

D durumu (uninterruptible sleep) ve disk beklemesi

Brendan Gregg'in çekirdek geçmişine dayanan incelemesine göre bu davranış 1993'te eklenen bir yamaya dayanır. Yamanın gerekçesi şuydu: yalnızca CPU sayıldığında, hızlı bir swap diskini yavaşıyla değiştirmek sistem yavaşladığı halde load average'ı düşürüyordu. D durumunu saymak, değeri "sistemin ne kadar meşgul olduğuna" yaklaştırdı.

D durumundaki görevler çoğunlukla disk G/Ç'sini bekler; bazen NFS gibi ağ dosya sistemlerini veya çekirdek içi kilitleri bekleyen görevler de bu durumda görünür. Hangi görevlerin D durumunda olduğunu görmek için:

ps -eo state,pid,comm,wchan:32 | awk '$1=="D"'
vmstat 1 5      # r: CPU sırası bekleyenler, b: G/Ç bekleyenler

vmstat'taki r sütunu yükün CPU kısmını, b sütunu D durumu kısmını yaklaşık olarak ayırır. r yüksek ve top'ta us yüksekse sorun CPU'dadır; b yüksek ve wa (iowait) yüksekse sorun disktedir.

Linux 4.20 ile gelen PSI (Pressure Stall Information), bu ayrımı daha net yapar. /proc/pressure/cpu, /proc/pressure/io ve /proc/pressure/memory dosyaları, görevlerin son 10, 60 ve 300 saniyede ilgili kaynağı beklerken geçirdiği zamanın yüzdesini verir. Dosyalar yoksa çekirdeğiniz PSI'yı desteklemiyor ya da kapalı başlatılmış olabilir; bazı dağıtımlarda psi=1 çekirdek parametresi gerekir.

Load average nasıl görülür?

En hızlı yol uptime komutudur; ayrıntı için top ve /proc/loadavg kullanılır.

uptime, top, /proc/loadavg, nproc

uptime              # saat, açık kalma süresi, oturum sayısı ve 1/5/15 dakikalık yük
nproc               # mantıksal çekirdek sayısı (yorum için gerekli)
cat /proc/loadavg   # ham değerler
top                 # ilk satırda load average, CPU satırında us/sy/wa/st

/proc/loadavg beş alan içerir: ilk üçü 1, 5 ve 15 dakikalık load average; dördüncüsü eğik çizgiyle ayrılmış iki sayıdır (şu an çalışabilir durumdaki görev sayısı / sistemdeki toplam görev sayısı); beşincisi en son oluşturulan sürecin PID'idir. nproc mantıksal çekirdekleri sayar; hyper-threading açık fiziksel sunucularda bu sayı fiziksel çekirdeğin iki katı olabilir. Sanal sunucularda ise size atanan vCPU sayısını gösterir.

Geçmiş değerler için sysstat'ın veri toplaması açıksa sar -q komutu gün içindeki load average ve kuyruk uzunluğunu listeler. Sürekli kayıt ve uyarı için ise bir izleme sistemi gerekir.

Sık sorulan sorular

Load average 1 ne demek?

Ortalamada bir görevin çalıştığı ya da çalışmayı beklediği anlamına gelir. Tek çekirdekli sunucuda CPU'nun tam dolu olduğunu, 4 çekirdekli sunucuda ise kapasitenin yaklaşık dörtte birinin kullanıldığını gösterir.

Load yüksek ama CPU düşükse ne anlama gelir?

Yükün büyük kısmı D durumundaki görevlerden geliyordur; görevler CPU'yu değil diski, ağ dosya sistemini veya bir kilidi bekliyordur. top'ta wa değerine, vmstat'ta b sütununa ve iostat'taki bekleme sürelerine bakın. Sık nedenler yavaş veritabanı sorguları, swap trafiği ve yoğun yedekleme işleridir.

Windows'ta karşılığı var mı?

Doğrudan bir load average değeri yoktur. En yakın karşılık, Performans İzleyicisi'ndeki System\Processor Queue Length sayacıdır; disk tarafı için PhysicalDisk\Avg. Disk Queue Length sayacı kullanılır.

Yük yüksekse ne yapılmalı?

Önce yükün CPU'dan mı diskten mi geldiğini ayırın, sonra onu üreten süreci bulun. Sırasıyla:

  1. Yükü ayırın: top'ta us ve wa, vmstat'ta r ve b değerlerine bakın.
  2. Süreci bulun: CPU için ps -eo pid,pcpu,comm --sort=-pcpu | head, disk için sudo iotop -oPa.
  3. Zamanlamayı kontrol edin: yük her gün aynı saatte yükseliyorsa yedekleme ve zamanlanmış görevleri inceleyin.
  4. Katmana göre düzeltin: CPU tarafında sayfa önbelleği ve PHP süreç ayarları, disk tarafında yavaş sorgular ve swap öne çıkar.

Adım adım teşhis için yüksek yükte teşhis akışı yazısını, kalıcı ayarlar için Linux sunucu optimizasyonu rehberini izleyebilirsiniz. Optimizasyondan sonra da yük sürekli çekirdek sayısını aşıyorsa sunucu kapasitesi yetmiyordur; daha fazla çekirdekli VDS paketleri bu durumda doğal bir sonraki adımdır.

Yükün kaynağını bulamıyorsanız performans analizini bir ekibe bırakabilirsiniz: tek seferlik sunucu optimizasyonu hizmeti için teklif alabilirsiniz. Yükün sürekli izlenmesini ve sorunların erken fark edilmesini istiyorsanız sunucunuzu uzman ekibe devredin; Profesyonel (SLA-2) ve üzeri yönetim paketleri sunucu izleme, servis kontrolü, sistem takibi ve log analizi içerir.

Kaynaklar

Sunucu Optimizasyonu konusundaki hizmetlerimiz için sunucu optimizasyonu hizmeti sayfasına göz atabilirsiniz.

İncele

İlgili rehberler