Yük dengesinin CPU'nun ne kadar meşgul olduğunu ölçmenin bir yolu olduğunu anlıyorum. Ancak, bir yük ortalamasının nasıl 0.00
olabileceğini anlamıyorum . Çekirdek her zaman çalışmaz mı? Bu CPU yükünün bir parçası değil mi?
Yük dengesinin CPU'nun ne kadar meşgul olduğunu ölçmenin bir yolu olduğunu anlıyorum. Ancak, bir yük ortalamasının nasıl 0.00
olabileceğini anlamıyorum . Çekirdek her zaman çalışmaz mı? Bu CPU yükünün bir parçası değil mi?
Yanıtlar:
Bir süre boyunca yük ortalaması, o zaman dilimi boyunca CPU için rekabet eden ortalama işlem sayısıdır. Yapılacak hiçbir şey yoksa "çekirdek" çalışmaz; daha spesifik olarak, yapılacak bir şey yoksa, CPU sayılmayan özel bir "boşta" iş parçacığına verilir (ve CPU koymak gibi şeyler yapabilir, bir kesinti beklediği bir durumdur).
Bu nedenle, örneğin, 5 dakika boyunca 0.6 yük ortalaması, CPU'nun bu 5 dakika boyunca bazı işlemler (veya çekirdek) tarafından toplam 3 dakika ve toplam 2 dakika boyunca kullanıldığı anlamına gelir. boştu. Ancak, @UKMonkey'in gözlemlediği gibi, 4 buçuk dakika hiçbir şey yapmadan sonra, CPU için son 30 saniye boyunca 6 işlemin rekabet ettiği anlamına gelebilir ...
CPU boşta, kodu çalıştırmak için kullanmak isteyen bir işlem yok, çünkü tüm işlemler ya bir giriş ya da çıkış işleminin tamamlanmasını bekliyor ya da belirli bir zamanda uyandırılmayı beklerken uyuyor.
@ Panther'in bağlantıları yük ortalamaları hakkında daha ayrıntılı tartışmalar sağlar.
Bir yük ortalaması, bir CPU çekirdeğinin bir kerede kullanmak isteyen işlem sayısı açısından ne kadar aşırı yüklendiğinin bir ölçüsüdür.
Aşağıdakiler tek çekirdekli (tek iş parçacıklı) bir CPU varsayar:
0.0
CPU hiçbir şey yapmıyor. Bir işlem CPU'yu kullanmaya başlasaydı, o zaman onu kullanan tek kişi olurdu.
Boş bir CPU, çalışan işlem olmadığı anlamına gelmez. Örneğin, arka plan hizmetleri ve çekirdek hala çalışıyor ve hala bellek kaplıyor. Herhangi bir CPU kullanmıyorlar, çünkü hiçbir şey yapmıyorlar.
1.0
CPU maksimum kullanımda, ancak CPU kullanım işlemleri arasında sıfır çekişme var. Yani, sadece tek bir işlem çalışıyor, bu yüzden CPU zamanının% 100'ünü kendisi için talep edebiliyor. Alternatif olarak, birden çok işlem çalışıyor ancak hiçbiri% 100 CPU talep etmiyor ve birleşik CPU kullanımı% 100'e kadar ekliyor. Hepsi de CPU'ya sahip olsalar bile koştukları kadar hızlı çalışıyorlar.
1.0'dan büyük
CPU maksimum kullanımda ve aynı anda kullanmak isteyen birden fazla işlem var, böylece aksi takdirde boştaki bir CPU'da çalışabileceklerinden daha yavaş çalışıyorlar. Örneğin, 3.0 ortalama yükü, işlemlerin çalıştırmak istedikleri hızın üçte birinde çalıştığını gösterir. 50.0 yük ortalaması, diğer tüm işlemler nedeniyle işlemlerin çalıştırmak istedikleri hızın 1 / 50'sinde çalıştığını gösterir. Yani, 1.0'dan yüksek rakamlar, mevcut CPU'nun giderek daha fazla işlem arasında gerildiğini gösterir.
Çok çekirdekli bir CPU'ya sahip olmak, rakamların ne anlama geldiğini değiştirmez, ancak yorumlarını değiştirebilir. Örneğin, 4 çekirdekli bir CPU'nuz varsa, 1.0 yükü hala bir çekirdekte% 100 CPU kullanan bir işleme eşdeğerdir, ancak üç çekirdek daha vardır. Yani 4 çekirdekli bir CPU'da maksimum verimlilik noktası 1.0 değil, 4.0'dır - ve her şeyin 1/3 verimlilikte çalıştığı nokta 3.0 değil 12.0'dır. Karmaşıklığı artırmak için, tek bir işlemin her biri kendi başına CPU olduğunu iddia eden birden fazla iş parçacığına sahip olabilir. Bu nedenle, tek bir işlem çok iş parçacıklıysa 4 çekirdeğin% 100'ünü kullanabilir.
Önemli Not
CPU kullanımı, bir işlemin performansını sınırlandırabilecek tek bir kaynaktır. G / Ç başka bir işlemdir ve CPU yüküne dahil değildir. Belli miktarda CPU kullanan bir işlemin, daha hafif yüklü bir makinede daha fazla kullanması gerekmeyebilir, çünkü diğer darboğazlara çarpabilirler.
En iyi yük ortalaması nedir
Gerçekten ne yaptığınıza ve yanıt vermeyi tercih edip etmediğinize veya CPU'nun mümkün olduğunca sıkı çalışmasına bağlıdır.
Mümkün olduğunca fazla yapılması gereken bir şey için, yük ortalaması çekirdek sayısının üzerinde veya biraz üzerinde olmalıdır. Bundan daha büyük herhangi bir şey, görevleri daha fazla bilgisayar / sunucu arasında ayırırsanız, daha hızlı bir şekilde daha fazla iş yapabileceğinizi gösterir.
Mümkün olduğunca hızlı tepki vermesi gereken bir şey için (hızlı tepki verin), yük ortalaması, herhangi bir yavaşlama meydana gelmeden önce aralıklı bir değişime izin veren yarım veya üçte biri gibi çekirdek sayısından daha az rahat bir marj olmalıdır.
Sanallaştırma konukları için (örn. KVM) yük ortalaması ne kadar düşükse, aslında aynı ana bilgisayardaki diğer konuklarla CPU paylaşıyorsunuz demektir.
D
durum süreçleri her zaman Linux'ta yük ortalamasına dahil edilir. Evet, kafa karıştırıcı. Evet, öncelikle yük ortalamasından başka metriklere bakmalıyız.
0,00 yük ortalaması temel olarak sisteminizin boşta olduğu ve ölçülen süre boyunca CPU'nuzda herhangi bir gecikme veya stres veya darboğaz olmadığı anlamına gelir.
Bu, CPU'nuzun devre dışı olduğu anlamına gelmez, sadece bir işlem CPU zamanı istiyorsa, beklemenin olmadığı anlamına gelir.
Yükünüzü nasıl ölçtüğünüze (sistem başına, kullanıcı başına?) Ve hangi süreye bağlı olabileceğinden, ne kadar az yayınladığınızdan daha fazlasını söylemek zordur.
Bazı ayrıntılar ve ilginç okumalar için bkz.
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/
http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html