GNU/Linux >> Belajar Linux >  >> Linux

Penggunaan CPU Linux dan Riwayat Eksekusi Proses

Solusi 1:

Ada beberapa cara yang memungkinkan untuk melakukan ini.Perhatikan bahwa sangat mungkin ada banyak proses dalam skenario pelarian yang menyebabkan hal ini, bukan hanya satu.

Cara pertama adalah menyiapkan pidstat agar berjalan di latar belakang dan menghasilkan data.

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

Ini akan memberi Anda pandangan yang cukup rinci tentang jalannya sistem pada interval sepuluh menit. Saya menyarankan ini menjadi tempat panggilan pertama Anda karena ini menghasilkan data yang paling berharga/dapat diandalkan untuk digunakan.

Ada masalah dengan ini, terutama jika kotak masuk ke loop cpu yang tidak terkendali dan menghasilkan beban yang sangat besar - Anda tidak menjamin bahwa proses Anda yang sebenarnya akan dieksekusi tepat waktu selama pemuatan (jika sama sekali) sehingga Anda benar-benar dapat melewatkan hasilnya !

Cara kedua untuk mencari ini adalah mengaktifkan proses akuntansi. Mungkin lebih merupakan opsi jangka panjang.

accton on

Ini akan memungkinkan proses akuntansi (jika belum ditambahkan). Jika tidak berjalan sebelumnya, ini perlu waktu untuk berjalan.

Setelah dijalankan, katakanlah 24 jam - Anda kemudian dapat menjalankan perintah seperti itu (yang akan menghasilkan keluaran seperti ini)

# 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    

Kolom diurutkan seperti:

  1. Jumlah panggilan
  2. Persentase panggilan
  3. Jumlah waktu nyata yang dihabiskan untuk semua proses jenis ini.
  4. Persentase.
  5. Waktu CPU pengguna
  6. Persentase
  7. Waktu CPU sistem.
  8. Rata-rata panggilan IO.
  9. Persentase
  10. Nama perintah

Yang akan Anda cari adalah jenis proses yang menghasilkan waktu CPU Pengguna/Sistem paling banyak.

Ini memecah data sebagai jumlah total waktu CPU (baris atas) dan kemudian bagaimana waktu CPU itu dibagi. Akuntansi proses hanya menghitung dengan benar saat aktif saat proses bertelur, jadi mungkin yang terbaik adalah memulai ulang sistem setelah mengaktifkannya untuk memastikan semua layanan diperhitungkan.

Ini, sama sekali tidak benar-benar memberi Anda gambaran pasti proses apa yang mungkin menjadi penyebab masalah ini, tetapi mungkin memberi Anda perasaan yang baik. Karena ini bisa menjadi snapshot 24 jam, ada kemungkinan hasil yang miring, jadi ingatlah itu. Itu juga harus selalu masuk karena ini adalah fitur kernel dan tidak seperti pidstat akan selalu menghasilkan keluaran bahkan selama beban berat.

Opsi terakhir yang tersedia juga menggunakan akuntansi proses sehingga Anda dapat mengaktifkannya seperti di atas, tetapi kemudian gunakan program "lastcomm" untuk menghasilkan beberapa statistik proses yang dijalankan sekitar waktu terjadinya masalah bersama dengan statistik cpu untuk setiap proses.

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

Ini mungkin memberi Anda beberapa petunjuk juga tentang apa yang mungkin menyebabkan masalah.

Solusi 2:

Atop adalah daemon yang sangat berguna untuk melihat perincian ke tingkat proses dan secara default mengarsipkan data ini selama 28 hari. Selain menghadirkan antarmuka pemantauan real-time yang mengagumkan, Anda dapat menentukan file log tersebut untuk dibuka dan ditelusuri.

Artikel tersebut memberikan beberapa gambaran tentang kemampuannya, dan Anda dapat menemukan lebih banyak lagi di halaman manual.

Ini benar-benar perangkat lunak yang luar biasa.

Solusi 3:

Program seperti psmon dan monit mungkin berguna bagi Anda. Mereka dapat memantau proses yang berjalan pada sistem Anda dan jika ada ambang batas (penggunaan CPU, penggunaan memori...) terlampaui, Anda dapat mengaturnya mengirimi Anda laporan email tentang apa yang terjadi.

Anda juga dapat memulai ulang proses yang bermasalah secara otomatis.


Linux
  1. Temukan Proses Berjalan Teratas berdasarkan Memori dan Penggunaan CPU Tertinggi di Linux

  2. Perintah Sed Linux:Penggunaan dan Contoh

  3. Cara Membatasi Penggunaan CPU Suatu Proses Di Linux

  1. Temukan Waktu Eksekusi Perintah Atau Proses Di Linux

  2. Ambil penggunaan CPU dan penggunaan memori dari satu proses di Linux?

  3. Bagaimana cara menghitung penggunaan CPU dari suatu proses oleh PID di Linux dari C?

  1. penggunaan wildcard linux di cp dan mv

  2. Linux top command:Apa kita, sy, ni, id, wa, hi, si dan st (untuk penggunaan CPU)?

  3. Ubuntu Linux:Memproses memori swap dan penggunaan memori