Linux CPU kullanımı ve İşlem Yürütme Geçmişi


37

Hangi işlemlerin en fazla CPU kullanımına neden olduğunu görmenin bir yolu var mı?

CPU kullanımı yüzde 100'e ulaşan ve sistemi yeniden başlatmamı sağlayan AMAZON EC2 Linux'um var. SSH ile giriş yapamıyorum (Macun kullanarak).

Bu kadar yüksek CPU kullanımına neyin neden olduğunu ve hangi işlemin buna neden olduğunu görmenin bir yolu var mı?

Biliyorum sarve topkomut aldım ancak işlem yürütme geçmişini hiçbir yerde bulamadım. Amazon EC2 izleme aracının görüntüsü aşağıdadır, ancak hangi işlemin buna neden olduğunu bilmek isterim:

görüntü tanımını buraya girin

Ben de denedim ps -eo pcpu,args | sort -k 1 -r | head -100ama böyle yüksek bir CPU kullanımı bulma şansım yok.

Yanıtlar:


34

Bunu yapmanın birkaç olası yolu vardır. Tamamıyla mümkün olmadığını, bunun bir kaçak senaryosundaki pek çok sürecinin, bunun yalnızca bir tane değil, tamamen mümkün olduğunu unutmayın.

İlki, pidstat'ı arka planda çalışacak ve veri üretecek şekilde ayarlamak.

pidstat -u 600 >/var/log/pidstats.log & disown $!

Bu, sistemin 10 dakikalık aralıklarla çalışmasıyla ilgili oldukça ayrıntılı bir görünüm verecektir. Çalışmanız için en değerli / güvenilir veriyi ürettiğinden, bu sizin ilk bağlantı noktanız olmasını öneririm.

Bununla ilgili bir sorun var, öncelikle kutu kaçak bir cpu döngüsüne girerse ve çok fazla yük üretiyorsa - asıl işleminizin yükleme sırasında zamanında çalışacağını garanti edemezsiniz (eğer varsa), aslında çıktıyı kaçırabilirsiniz !

Bunu aramanın ikinci yolu süreç muhasebesini mümkün kılmaktır. Muhtemelen daha uzun vadeli bir seçenek.

accton on

Bu, işlem muhasebesini etkinleştirecektir (önceden eklenmemişse). Daha önce çalışmamışsa, çalışması için zamana ihtiyaç olacaktır.

24 saat boyunca koştuktan sonra - böyle bir komutu çalıştırabilirsiniz (ki bunun gibi çıktı üretecektir)

# sa --percentages --separate-times
     108  100.00%       7.84re  100.00%       0.00u  100.00%       0.00s  100.00%         0avio     19803k
       2    1.85%       0.00re    0.05%       0.00u   75.00%       0.00s    0.00%         0avio     29328k   troff
       2    1.85%       0.37re    4.73%       0.00u   25.00%       0.00s   44.44%         0avio     29632k   man
       7    6.48%       0.00re    0.01%       0.00u    0.00%       0.00s   44.44%         0avio     28400k   ps
       4    3.70%       0.00re    0.02%       0.00u    0.00%       0.00s   11.11%         0avio      9753k   ***other*
      26   24.07%       0.08re    1.01%       0.00u    0.00%       0.00s    0.00%         0avio      1130k   sa
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28544k   ksmtuned*
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28096k   awk
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     29623k   man*
       7    6.48%       7.00re   89.26%       0.00u    0.00%       0.00s    

Sütunlar şöyle sıralanır:

  1. Çağrıların sayısı
  2. Aramaların yüzdesi
  3. Bu tür tüm işlemlere harcanan gerçek zaman miktarı.
  4. Yüzde.
  5. Kullanıcı cpu zaman
  6. Yüzde
  7. Sistem CPU zamanı.
  8. Ortalama GÇ çağrıları.
  9. Yüzde
  10. Komut adı

Aradığın şey, en fazla Kullanıcı / Sistem CPU zamanı üreten süreç türleri.

Bu, toplam CPU zamanı (en üst satır) ve daha sonra bu CPU zamanının nasıl bölündüğü olarak verileri parçalar. İşlem muhasebesi yalnızca işlemler başladığında açık bir şekilde hesap verir; bu nedenle, tüm hizmetlerin hesaba katılmasını sağlamak için sistemi etkinleştirdikten sonra sistemi yeniden başlatmak en iyisidir.

Bu, hiçbir şekilde, size, bu problemin sebebi ne olabileceği konusunda kesin bir fikir vermez, ancak size iyi bir his verebilir. 24 saatlik bir anlık görüntü olabileceğinden, çarpık sonuçların ortaya çıkma olasılığı vardır. Çekirdek özelliği olduğundan ve her zaman günlüğe kaydetmelidir çünkü pidstat'ın aksine her zaman ağır yük sırasında bile çıktı üretecektir.

Mevcut en son seçenek aynı zamanda işlem muhasebesini de kullanır, böylece yukarıdaki gibi açabilirsiniz, ancak daha sonra her işlem için cpu istatistiği ile birlikte problemin süresinde yürütülen işlemlerin bazı istatistiklerini üretmek için "lastcomm" programını kullanın.

lastcomm | grep "May  8 22:[01234]"
kworker/1:0       F    root     __         0.00 secs Tue May  8 22:20
sleep                  root     __         0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                   X root     pts/0      0.00 secs Tue May  8 22:49
ksmtuned          F    root     __         0.00 secs Tue May  8 22:49
awk                    root     __         0.00 secs Tue May  8 22:49

Bu size soruna neyin sebep olabileceği konusunda bazı ipuçları verebilir.


Çok güzel ve ayrıntılı cevap, iyi iş!
Bart De Vos,

2
MIfe, daha önce kullanmadığın bir şeyi dene! Pidstat ile aynı bilgileri toplar, ancak etkileşimli araştırmalar için çok daha uygun bir arayüzde sunar. Ayrıca sar stili raporları tercih ederseniz bir atopsar komutu vardır.
Sciurus

18

Atop , işlem seviyesini incelemelere bakmak için özellikle kullanışlı bir servistir ve varsayılan olarak bu verileri 28 gün boyunca arşivler. Harika bir gerçek zamanlı izleme arayüzü sunmanın yanı sıra, bu günlük dosyalarını açıp bunlardan geçmeleri için belirtebilirsiniz.

Makale yetenekleri hakkında bir fikir verir ve daha bulabilirsiniz manpage .

Gerçekten harika bir yazılım parçası.


3

Psmon ve monit gibi programlar sizin için yararlı olabilir. Bunlar sisteminizde çalışan işlemleri izleyebilir ve herhangi bir eşik (CPU kullanımı, bellek kullanımı ...) aşılırsa, neler olup bittiğiyle ilgili size bir e-posta raporu göndermelerini sağlayabilirsiniz.

Yaramazlık işlemlerini otomatik olarak yeniden başlatmak da mümkündür.


0

Çözümlerden biri, bir dakikalık cron üzerinden veya bir uyku döngüsünde çalıştırılan bir komut dosyası yazmak ve ilgili çıktıyla (dmesg, pstree -pa ve ps aux, muhtemelen ... vmstat) yük ortalamasını belli bir sınırın üzerinde bulduğu anda ...

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.