Linux CPU Load Değerlerini Anlamak

Linux sistemimizde bir şeylerin ters gittiğini düşündüğümüzde birçok kez ilk kontrol ettiğimiz verilerden birisi CPU Load (yük) değerleridir.

Genellikle bu değerlere w,uptime veya top (bu değerler /proc/loadavg dosyasından okunur) komutlarıyla ulaşabiliriz.Bu değerler genellikle aşağıdakine benzer çıktılar verir:

load average: 0,69, 1,13, 1,25

Load (yük) değerlerinin ne ifade ettiğine geçmeden önce neden üç değer olduğuna açıklık getirmek gerekir.Bu değerler bir,beş ve on beş dakikalık load (yük) değerlerinin ortalamasıdır.Yani yukarıdaki çıktı bize sistemimizin bir dakikadır ortalama 0.69, beş dakikadır 1.13 ve on beş dakikadır 1,25 CPU load (yük) değerlerinde çalıştığını göstermektedir.

Ubuntu kullanıyorsanız sistem monitör aracınızda bu değerlerin açıkça belirtildiğini görebilirsiniz.

Trafik Benzerliğini Kullanmak

Özellikle CPU load (yük) değerlerini anlamak açısından benim için en kolay yöntem trafik/Köprü benzerliğini kullanmak olmuştur.Bazen köprülerde hiç trafik olmazken bazen ise köprü dolu olmasına rağmen akıcı bir trafik vardır.Bazen ise trafik tamamen kilitlenir ve beklemek zorunda kalırsınız.(Küçük şehirlerde yaşamış birisi olarak İstanbul’da köprü üzerinde saatler geçirmek oldukça garip gelmişti)

Peki benzerlik nerede?

İşlemlerimizi birer araç olarak düşünebiliriz.CPU’umuz işlemlerimizi teker teker yapar (çoklu işleme özelliğine sahip işlemcileri şimdilik ele almıyorum).Yani işlemlerimiz bir köprüde olduğu gibi sıraya girerler ve sonrasında işlemler tamamlandığında çıkış yaparlar.

Load değerleriyle özdeşleştirmeye çalışırsak:

0.00 = Köprümüz üstünde herhangi bir araç bulunmamakta.

0.50 = Köprümüz üzerinde araçlar var ancak kapasitesinin ancak yarısını kullanmakta.

1.00 = Köprümüz dolu ancak araçlar akıcı bir şekilde ilerlemekte ve köprüye girmek için bekleyen araç yok.

1.50 = Köprümüze gelen trafik oldukça fazla olduğundan köprü kapasitemizin neredeyse yarısı kadar trafik köprüye girmek için beklemekte.

İdeali Nedir ?

İdeal trafik hiçbir aracın beklemediği bir yoğunluk 1.00 gibi görünmekte.Ancak anlık araç artışlarında beklemeler yaşanacaktır ve trafik bu noktadan sonra azalmaz ise yoğunluk maalesef devam edecektir. Bu yüzden trafiğin teknik olarak idealden biraz daha az olması bizim için daha idealdir.

Sistem yöneticileri için ideal değer 0.7 ve 0.8 arasındadır.Bu değer ani işlem artışlarına karşı tampon görevi üstlenmesi için seçilir.

Ne Zaman Endişelenmeliyim ?

Eğer load değerleriniz 0.7-0.8 üzerinde seyrediyorsa göz atmanız gereken bir durum söz konusudur.Eğer load (yük) değerleri 1.00 civarlarında ise sistemde problem olabilir ve başınızın ağrımasını istemiyorsanız kısa sürede sisteminizle ilgilenmeniz gerekir.Load (yük) değerleri 4-5 seviyelerinde ise başınız gerçekten beladadır ve çok acil olarak sisteminizle ilgilenmeniz gerekir.

Load Değerlerim 3 Ancak Her Şey Normal (Multicore/Multiprocessor)

Birden çok çekirdekli veya birden çok işlemciye sahip sistemlerde karşılaşabileceğimiz normal load (yük) değerlerinden biridir ve 4 çekirdekli bir işlemci kullanıyorsanız 3 değeri oldukça normaldir.Bu durumu da köprü üzerindeki trafiğe benzetebiliriz; 2 çekirdekli bir işlemciye sahipseniz artık köprümüzde ekstra bir şerit daha var demektir, 4 çekirdekli bir işlemciye sahipseniz artık 4 şeritli bir yolunuz var demektir.

Burada çizgiyi şu kurala göre çizebiliriz ; çekirdek sayısı = Maksimum Load (yük) değeri. >4 Çekirdek = Maksimum 4 Load (yük)

SONUÇ

Load değerleri ile ilgili genel bir yaklaşımı dile getirmiş olsam da load değerlerini disk I/O’u gibi etkenlerde etkileyebilir.Bu yüzden sisteminiz yavaşladığında sadece load değerlerini göz önüne almak yanlış olacaktır.

Bu yazımda birçok kaynaktan yardım almış olsam da trafik benzetmesiyle konuyu anlamama yardımcı olan ve neredeyse birebir çeviri yaptığımı söyleyebileceğim şu Understanding Linux CPU Load - when should you be worried? yazıyı okumanızı tavsiye ederim.

Disk I/O’unun load değerlerine etkisiyle ilgili şu iki güzel yazıyı da okumanızı tavsiye ederim;

Understanding Linux Load Average – Part 2

Understanding Disk I/O - when should you be worried?