Bir işlemin CPU, Bellek veya Diske bağlı olup olmadığını nasıl öğrenebilirim?


42

Bir işlemin CPU, Bellek veya Diske bağlı olup olmadığını nasıl öğrenebilirim?


GNOME GUI kullanıyorsanız, Sistem Monitörü uygulamasını panelinize ekleyebilirsiniz. Ayarlarda IO-Wait olarak kaybedilen döngüleri beyaz olarak gösterilmesini ve Bellek, CPU ve Disk Okuma / Yazma grafiklerini gösterilecek şekilde ayarlayabilirsiniz. Kullanıcı / OS hafızasını ve disk okuma / yazmayı ayırt etmeyi kolaylaştırmak için genellikle varsayılan grafik renklerini değiştiririm. Bu gerçek bir çözüm değil, ancak cevaplarda belirtilen tüm araçların yanında olmak kullanışlı.
Jeremy

1
@ luis-alvarado Bu sorunun faydalı olmadığına katılıyorum, ancak bunun StackOverflow veya benzerlerine daha iyi uyabileceğini iddia ediyorum. Buraya bir çözüm aramaya geldim.
skeggse

Sorulan soru ile ilgili sorun, yürütme ortamını hesaba katmamasıdır. Bir iş / sürecin ana bileşeninin tıkanmasını keşfetmede en etkili olan yöntem, işin çalışma zamanı, uygulama ortamı, ana bilgisayar işletim sistemi, donanım vb. İle yakından ilgilidir ve her bir bileşen için bunları denetlemek için hangi araçların kullanılabilir olduğu. Bazı çalışma süreleri (örneğin, Erlang çalışma zamanı veya IBM'in JVM'si), bunun için tüm çevreyi kapsayacak derinlikte araçlara sahiptir, diğerleri ise hiçbir araçtan yoksundur ve sizi, ne olursa olsun / iotop / vb. sana gösterebilirim
zxq9

Yanıtlar:


19

Bu biraz vudu gerektiriyor. Değişir. Örnek:

  • Orada bellek yeter ve diskler çok meşgul görünmüyor, bu olabilir CPU bağlı. CPU kullanımına bakın ve% 100 sınırda ise CPU bağlı. Değilse, uygulamada yapay bir darboğaz var. Örneğin, çift çekirdekli bir işlemcide, tek bir iş parçacıklı işlem% 50 CPU kullanımının üstüne çıkmayacak.

  • CPU ve bellek varsa, ancak diskler çok meşgulse veya IO gecikmesi yüksek görünüyorsa, bunun muhtemelen IO'su bağlı. Daha fazla disk eklemenin (RAID?) Yardımcı olup olmadığına bakın.

  • Yukarıdakilerin hiçbiri? Kullanılabilir belleği kontrol edin.

  • Yeterli hafıza? Sürecin kendisinde yapay bir tıkanıklık olabilir, yani belki birileri bir uykuyu kaldırmayı unutmuş olabilir (1)? Naah genellikle o kadar kolay değil. ;)

Performansa duyarlı ürünlerle uğraşan çoğu şirkette performans mühendisleri için tam bir laboratuarımızın olmasının bir nedeni var!

Mükemmel sorunları ayıklamak için sar, vmstat, iostat, oprofile, lockstat, dtrace, ürüne özel perf izleme araçları vb. Gibi araçları kullanın.


2
Bunları birbirine bağlayan bir araç var mı?
ssanj

genellikle hayır, ancak sisteminizde dtrace varsa (Solaris / FreeBSD / Mac OS X?) bunu kullanarak çok uzağa gidebilirsiniz.
Sudhanshu

Aletin olgunluğundan emin değilim dışında, Linux üzerinde Systemtap olduğunu (dtrace'ye benzeyen) hatırladım.
Sudhanshu

vmstat kullanışlıdır.
James


9

Çok sayıda işlem istatistiklerini (bellek, cpu kullanımı, G / Ç vb.) Gerçek zamanlı olarak kontrol etmek için yararlı olabilecek bir araç çok önemlidir . Sudhanshu tarafından adlandırılan daha özel araçların yerini almaz, ancak iyi bir başlangıç ​​olabilir.


4

Bahsedilen diğer araçların yanı sıra ps l PIDilgili işlem kimliğini çalıştırın , ekleyin veya STATE ve WCHAN sütunlarına tepeye ya da tepeye bakın.

D (disk için) durumundaysa, dosya G / Ç yapıyor. Bu, çok fazla dosya okuduğu veya çok fazla bellek kullandığı ve değiştirdiği için olabilir. WCHAN sütunu, içindeki çekirdek fonksiyonunun ne olduğunu size söyleyecektir; onlar için googling yapmak veya buraya sormak size ne anlama geldiklerini gösteren bir işaret verebilir.

R (çalıştırma) durumundaysa, CPU'yu kullanıcı alanında kullanıyor, başka bir deyişle CPU şu anda bağlı.

S (uyku) durumundaysa, kesilebilir bir sistem çağrısının içindedir; bu, aslında ya uyku ya da ağ trafiğini beklemek veya kilitlemek gibi bir şey yapıyor olabilir. Yine, belirli bir wchan bakmak size daha fazla anlatacağım.

Ayrıca bkz . Bir işlemin "Bekleyen Kanalı" nedir?


2

Run topve cpu kullanımı çizgisinde bakış. Yüksek bir kullanıcı% cpu'ya bağlı olduğunu gösterir. Bekleme yüzdesi yüksek, IO'ya bağlı olduğunu gösterir.

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.