CPU veya diskin fazla kullanılmamasına rağmen yük neden yüksek


20

Aşağıdaki çıktıyı alıyorum top:

Cpu(s): 43.8%us, 32.5%sy,  4.8%ni,  2.0%id, 15.6%wa,  0.2%hi,  1.2%si,  0.0%st
Mem:  16331504k total, 15759412k used,   572092k free,  4575980k buffers
Swap:  4194296k total,   260644k used,  3933652k free,  1588044k cached

gelen çıktı iostat -xk 6aşağıdakileri gösterir:

Device: rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda       0.00   360.20   86.20  153.40  1133.60  2054.40    26.61     1.51    6.27   0.77  18.38
sdb       0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdd      22.60   198.80   17.40   31.60   265.60   921.60    48.46     0.18    3.70   1.67   8.20
sdc      16.80   218.20   22.20   23.40   261.60   966.40    53.86     0.21    4.56   1.49   6.78

Yukarıdakilere dayanarak, bir şeyin aşırı yüklenmesi gerektiği gibi görünüyor. Ama ne?

Sorular

  1. Sabit disk veya CPU değilse o zaman ne?
  2. İşlemcinin zamanının% 15,6'sını beklemeye harcanmış gibi görünüyor. Tam olarak ne bekleyebilirdi?

2
cpu özellikleri nedir ve yük ne kadar?
sepehr

Yük 100'ün üzerinde
user4951

yük cpu ve cpu çekirdek sayısına göreceli, sisteminizin cpu özellikleri nedir?
sepehr

Yanıtlar:


49

Açıklama noktası olarak, yük doğrudan CPU'ya bağlı değildir. Bu, yük ile ilgili en yaygın yanılgılardan biridir. Diskten bahsettiğiniz gerçeği, bunun farkında olduğunuzu kabul ediyor gibi görünüyor, ancak sadece bazılarının başka türlü inandığını gösteren yorumları gördüğümde bahsetmek istedim.

Yük, sistem kaynaklarında bekleyen işlemlerin sayısı olarak tanımlanır. Bu genellikle CPU, disk veya ağdır, ancak gerçekten herhangi bir donanım olabilir.
Bir "süreç" de tam bir süreç olmak zorunda değildir. Bir iş parçacığı "hafif işlem" olarak tanımlanır ve bekleyen her iş parçacığı yük sayısını artırır.


Hangi işlemlerin sorun olduğunu anlamak için:

Çalıştır top -H( -Hiş parçacıklarının gösterilmesini sağlar)

Klavye kısayolları sürüme göre değişir.

Daha yeni top ile (3.3 ve sonrası):

fAlan seçeneklerini getirmek için tuşuna basın .
Gitmek için ok tuşlarını kullanın S = Process Statusve tuşuna basın s. Ana sayfaya geri dönmek için
tuşuna basın q. Sıralamayı tersine çevirmek için +
tuşuna basın .ShiftR

Eski top ile (3.3'ten önce):

Sıralama seçeneklerini görüntülemek için Shift+ tuşuna basın o.
Sonra wişlem durumuna göre sıralayın.
Sonra Enterana sayfaya geri dönün.
Sonra sıralamayı tersine çevirmek için Shift+ R.

Sonra Ssütunda, Dveya R(şimdi üstte olmalıdır) olan işlemleri arayın . Bunlar sistem yüküne katkıda bulunan süreçler olacaktır.

Süreç a gösteriyorsa D, bu "kesintisiz uyku" anlamına gelir. Genellikle bu, işlem G / Ç'de (disk, ağ vb.) Beklendiğinde ortaya çıkar.
Süreç a gösteriyorsa R, bu sadece normal hesaplama yapıyor demektir.


Bu işlemlerin ne yaptığı hakkında daha fazla bilgi için:

Daha yeni top ile (3.3 ve sonrası):

fAlan seçeneklerini getirmek için tuşuna basın .
Gitmek için ok tuşlarını kullanın WCHAN = Sleeping in Functionve detkinleştirmek için tuşuna basın .
Sonra qana sayfaya geri dönmek için.

Eski top ile (3.3'ten önce):

Alanı etkinleştirmek için fardından düğmesine basın .yWCHAN

Sisteminizde gerekli çekirdek seçenekleri varsa ve sisteminizde wchan dosyası varsa (nerede olduğunu ve ne olduğunu unuttum) , WCHANalan size işlemin şu anda hangi çekirdek işlevini çalıştırdığını göstermelidir (alan yalnızca -ya da ?her şeyde, desteğiniz yok).
Burada biraz google ve yolda olmalısın.

Wchan desteğiniz yoksa, stracene yaptıklarını öğrenmek için işlemleri her zaman deneyebilirsiniz , ancak bu zor bir yoldur.


Sıralamayı değiştirmek için genellikle sadece sol oka basarım.
Nemo

2

İşleri derleme veya bir döngüdeki başarısız işlemler gibi kısa ömürlü işlemler, topiostat gibi izleme araçlarında genellikle görünmez .

Bu gibi durumlarda Linux Denetim Çerçevesi yardımcı olacaktır

Suçlu, örneğin bir başarısızlık döngüsü

while :; do gcc /dev/zero ; done >/dev/null 2>&1

Auditd / auditctl kullanmak için:

apt-get install auditd
auditctl -a task,always
ausearch -i -sc execve

tüm işlem lansmanlarında çalındı


Eğer görünmüyorlarsa top, ortalama yüke katkıda bulunmazlar. Yük ortalamasına katkıda bulunabilmesi için uzun bir süre bekleme durumunda olması gerekir. İstatistiksel olarak bu, ortaya çıkacağı anlamına gelir top. Değilse, önemli bir katkıda bulunmaz.
Patrick

0

NFS bağlarının bağlantısı kesildiğinde ve maalesef bir hata yaptım ve yumuşak bağlanma seçeneğini kullanmadığımda durumum vardı, bu nedenle Linux sunucumda izleme, lsof ve hatta bash oturumları da dahil olmak üzere çok fazla işlem yapıldı.

Kırık bağların bağlantısını kestikten sonra, sistem aşırı yüklendi:

top - 00:03:48 up 15 days, 14:56,  3 users,  load average: 29, 21, 20

Bu korkunç görünüyordu, ancak CPU kullanımı% 15'in altında ve disk G / Ç'si yok. Ben ps geçmesi için bazı tavsiyeler var, ama süreçler çoğunlukla uyku gibi görünüyordu bu yardımcı olmadı.

Sonra man psuykum için gecemi kurtardım ve araştırmadan sonra bakmak için çok önemli DURUM bayraklarını buldum, daha sonra tespit ettikleri gibi sıkışmış süreçler.

Yürütme:

ps -e v

ve STAT sütununda Dveya SLsütununda bulunan işlemleri arayın . Bunlar zombi süreçleri gibiydi ama Z-zombileri olarak tanımlanmadı.

D - çoğunlukla disk (G / Ç) etkinliği anlamına gelir, ancak aynı zamanda ps -e vbirkaç kez çalıştırırsanız iostat 3ve hiçbir etkinlik görmezseniz, bu durumun g / Ç'ye takılı olduğunu gösterir .

SL - bu, o sürecin hafızasında Kilitli sayfalanmış olduğu anlamına gelir, bu nedenle bu sürecin böyle davranmaması gerektiğini belirleyebiliyorsanız, daha uzun bir süre değişmeden yapışırsa bir sonraki olası adaydır.

Soruşturmadan sonra tek tek öldürdüm ve sistem yük ortalamam normalleşti.

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.