Yük ortalaması 0.00 nasıl olabilir?


12

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.00olabileceğini anlamıyorum . Çekirdek her zaman çalışmaz mı? Bu CPU yükünün bir parçası değil mi?


6
Olguların çoğunda 0.00 olarak gördüğünüz şeyin gerçekten 0.0001 ya da öylesine olduğunu unutmayın
PlasmaHH

1
Eski günlerde bu, çalışma kuyruğunun ortalama uzunluğuydu. Başka bir deyişle, kaç işlem yürütülmeye hazırdı (ve G / Ç vb. Eğer yoksa, 0.00 olur. Bu günlerde benim deneyimime göre sadece bir grafik masaüstü çalıştırmıyorsanız, sadece GUI'siz bir sunucu çalıştırıyorsunuz.
Thorbjørn Ravn Andersen

Sadece bütünlük için, bir süre için çekirdek boşta iş parçacığının yük ortalamasına sayıldığı bir çekirdek hatası olan BSD'lerden biri olduğunu düşünüyorum, bu da sistem hiçbir şey yapmadığında 1.00 ortalama yük ortalamasına neden oldu. Çok çabuk düzeldi.
CVn

Yanıtlar:


16

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.


1
5 dakika boyunca 0,6 yük ortalaması da 4 buçuk dakika boyunca hiçbir şey yapmadığı anlamına gelebilir - ve son 30 saniyede CPU süresini bekleyen önemli sayıda işlem vardı ... CPU yapıldı - ancak kaç işlem kullanmak için bekliyor.
UKMonkey

@UKMonkey: Mükemmel doğrudur ... Ortalamalar ortalamalardır ve aynı ortalama birçok yolla elde edilebilir. Orta dereceli bir ortalamanın piklerin de makul olduğu anlamına gelmediğini açıklamak için cevabı düzenledi.
AlexP

13

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.


Bazen "G / Ç üzerinde bekleyen" iş parçacığı yük ortalama serverfault.com/a/524818/27813 dahil olduğunu
görmeye şaşırdım

@rodgerpack Evet, Ddurum 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.
kubanczyk

2

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.