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:
- Çağrıların sayısı
- Aramaların yüzdesi
- Bu tür tüm işlemlere harcanan gerçek zaman miktarı.
- Yüzde.
- Kullanıcı cpu zaman
- Yüzde
- Sistem CPU zamanı.
- Ortalama GÇ çağrıları.
- Yüzde
- 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.