Üst ve yük ortalamasını anlama


12

Her üç yük alanında da belirli bir makinede (yaklaşık 9) yüksek bir yük ortalaması gözlemliyorum. Yükü durum "çalışma" / şu anda CPU zamanı isteyen süreç sayısı olarak anlıyorum. Makinemde N işlemleri çalışıyorsa, bunun N'den daha büyük bir yük üretemeyeceği gerekçesiyle doğru muyum?

Ayrıca, yük süreçlere veya dişlere göre sayılır mı? Başka bir deyişle, çok iş parçacıklı bir işlem 1'den büyük bir yük üretebilir mi?


(Genellikle çok yakında planlanmaları beklendiğinden), "kesintisiz" durumundaki görevlerin de çalışma olarak sayıldığını unutmayın. Sorunuzu değiştiren bir şey değil, sadece bir ayrıntı.
mattdm

Yanıtlar:


7

Yük ortalaması genellikle "çalışma kuyruğunun ortalama uzunluğu" olarak tanımlanır. Bu nedenle, çok az CPU tüketen işlem veya iş parçacığı LA'yı 1'in üzerine çıkarabilir. LA'nın toplam CPU çekirdeği sayısından az olması sorun olmaz. Ancak CPU sayısından daha fazla olursa, bazı iş parçacıkları / süreçler kuyrukta, çalışmaya hazır halde kalır, ancak ücretsiz CPU bekler.


3

Yük ortalamasını hesaplamak için kullanılan sayılar, çalışma veya kesintisiz durumdaki görevler ve hareketli ortalamanın zaman diliminde yapılan iş miktarıdır. Bu görevler çok iş parçacıklı bir işlemin parçası olabilir. Alanlar, kullanılan algoritmadan elde edilen pürüzsüz sonuçlar nedeniyle zaman içinde daha bulanıktır.

1 yükü, bir CPU değerinde işin% 100'üne eşittir. Kullanılabilir CPU sayısından fazla sayıda aktif iş parçacığına sahip olmayı başaran çok iş parçacıklı bir uygulamanız varsa, tek bir işlemin 1'in üzerindeki yükü sürmesini sağlayabilirsiniz. yük ortalamasının daha uzun zaman dilim görünümleri.

Ayrıca, yük ortalaması çok çekirdekli sistemler bulunmadan geliştirildiğinden, yük sayılarının mevcut toplam çekirdek sayısına bölünmesi önemlidir. Bu, 4 soketli dört çekirdekli bir sistemde 9'luk sürekli bir yükse, bu 16'lık bir yüktür ve gerçekten bir sorun değildir.


1
- Henüz bir soketteki çoklu çekirdeklerin daha fazla CPU'dan başka bir şeye benzeyecek şekilde kullanıcı alanına maruz kaldığı bir sistem görmedim. Üstte, 4 soketli dört çekirdekli sistemde 16 CPU görülüyor. (Yani 9'un yükünün CPU sayısının altında olduğunu kolayca görebilirsiniz.)
mattdm

Rakamların logaritmik olduğunu anlıyorum, bu yüzden 1'in altında ya da üstünde. Sistemimde şunu bildirdim: yük ortalaması: 10.41, 9.57, 9.26. Ne?? Neden bir linux sistemi yük ortalaması rapor ediyor: 0.81, 1.57, 0.98, bu sistem yük ortalaması rapor ediyor: 10.41, 9.57, 9.26? Tüm unixler bu konuda aynı değil mi?
djangofan

3

Başlangıçta uzun ve mükemmel bir yorumu olan kernel / sched / loadavg.c dosyasına bakınız. I / O ya da bir kilit üzerinde beklemek).

Yorumun özü şu, ancak tam olarak okumaya değer:

 * The global load average is an exponentially decaying average of
 * nr_running + nr_uninterruptible.
 *
 * Once every LOAD_FREQ:
 *     nr_active = 0;
 *     for_each_possible_cpu(cpu)
 *         nr_active += cpu_of(cpu)->nr_running +
 *                      cpu_of(cpu)->nr_uninterruptible;
 *     avenrun[n] = avenrun[0] *
 *                  exp_n + nr_active *
 *                  (1 - exp_n)

Gerçek hayat, kodu biraz karmaşık hale getirir: CPU başına sayaçlar, tickless çekirdekler, hotswap CPU'lar, sabit nokta exp (n) uygulaması gerektiren kayan nokta kodunun olmaması. Ancak bunların hepsinin yorumda açıklanan yöntemi sadakatle uygulamaya yönelik olduğunu görmek kolaydır.

Linux'un sadece sorunuzu cevaplayan süreçleri değil, konuları da saydığını göreceksiniz .


0

3 yük ortalaması 1 sayısı etrafında dönen logaritmik bir fonksiyon gibidir. Teknik olarak, bir ortalaması simüle eden üstel bir bozunma fonksiyonunun sabit nokta temsili. CPU başına toplanırlar, bu nedenle tam yük dört çekirdekli bir sistemde 4.00 gibi görünebilir. İlk sayı son dakikadaki ortalama, ikincisi son beş dakikadaki ortalama ve üçüncüsü son 15 dakikadaki ortalama. Bundan bahseden bir cevabın buraya bırakılması gerektiğini düşündüm.


0

Anında yükleme: çalışan veya çalışmayı bekleyen görevlerin sayısı veya başka bir yolla, yürütmek isteyen görevlerin sayısı

Yük ortalaması: yukarıdaki ölçü, ancak aynı ölçüdeki önceki örneklerle katlanarak ortalaması alınmış

Bu sayıların her ikisi de sınırsızdır ve genellikle N'den çok daha büyüktür.

Açık olmak gerekirse: Linux'taki yük sayımı iş parçacıklarını içerir, bundan şüphe yoktur. Birçok iş parçacığı oluşturan tek bir işlemle keyfi olarak büyük bir yük üretebilirsiniz.

Burada daha fazlası

http://blog.angulosolido.pt/2015/04/linux-load-average-definitive-summary.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.