GNU/Linux >> Belajar Linux >  >> Linux

Mengevaluasi CPU I/O menunggu di Linux

Anda harus berhati-hati saat mengevaluasi angka-angka ini.

  1. IOWait terkait, tetapi tidak harus berkorelasi linier dengan aktivitas disk.
  2. Jumlah CPU yang Anda miliki memengaruhi persentase Anda.
  3. IOWait yang tinggi (bergantung pada aplikasi Anda) tidak harus menunjukkan masalah untuk Anda. Alternatifnya, IOWait kecil dapat diterjemahkan menjadi masalah bagi Anda. Ini pada dasarnya bermuara pada tugas apa yang menunggu.

IOWait dalam konteks ini adalah ukuran waktu selama periode tertentu yang dihabiskan CPU (atau semua CPUS) menganggur karena semua tugas yang dapat dijalankan sedang menunggu operasi IO dipenuhi.

Dalam contoh Anda, jika Anda memiliki 20 CPU, dengan satu tugas benar-benar memalu disk, tugas ini (sebenarnya) menghabiskan 100% waktunya di IOWait, selanjutnya CPU tempat tugas ini dijalankan menghabiskan hampir 100% waktunya di Saya menunggu. Namun, jika 19 CPU lain secara efektif menganggur dan tidak menggunakan disk ini, mereka melaporkan 0% IOWait. Ini menghasilkan persentase IOWait rata-rata 5%, padahal sebenarnya jika Anda mengintip penggunaan disk Anda, ini bisa melaporkan 100%. Jika aplikasi yang menunggu di disk sangat penting bagi Anda -- 5% ini agak menyesatkan karena tugas di kemacetan melihat kemungkinan masalah kinerja yang jauh lebih tinggi daripada lambat 5%.

ada banyak proses CPU yang menunggu daripada bekerja? (=> buruk)

Mungkin, ingat sebagian besar CPU menjalankan tugas dan tugas adalah permintaan IO. Jika dua tugas terpisah sibuk melakukan kueri pada disk yang sama pada dua CPU terpisah, ini akan menempatkan kedua CPU pada IOWait 100% (dan dalam contoh 20 CPU, IOWait rata-rata keseluruhan 10%).

Pada dasarnya jika Anda memiliki banyak tugas yang meminta IO, terutama dari disk yang sama, plus disk tersebut 100% digunakan (lihat iostat -mtx ) maka ini buruk.

proses kerja menunggu 5,0% dari rencana eksekusi mereka? (=> oke dalam hal ini)

Tidak. Proses kerja hampir pasti menunggu penuh waktu untuk IO. Ini hanya kasus laporan rata-rata ("CPU lain tidak sibuk") memalsukan persentase atau fakta bahwa CPU memiliki banyak tugas untuk dijalankan, banyak di antaranya tidak perlu melakukan IO.

Sebagai aturan umum, pada sistem multi-CPU, persentase IOWait yang sama dengan jumlah CPU yang Anda bagi dengan 100 mungkin perlu diselidiki.

sesuatu yang lain

Lihat di atas. Tetapi perhatikan bahwa aplikasi yang melakukan penulisan sangat berat akan dibatasi (berhenti menggunakan writeback, mulai menulis langsung ke disk). Ini menyebabkan tugas-tugas tersebut menghasilkan IOWait tinggi sementara tugas-tugas lain pada CPU yang sama menulis ke disk yang sama tidak. Jadi pengecualian memang ada.

Perhatikan juga jika Anda memiliki 1 CPU yang didedikasikan untuk menjalankan 2 tugas, satu adalah baca/penulis IO yang berat dan yang lainnya adalah pengguna CPU yang berat, maka CPU akan melaporkan 50% IOWait dalam hal ini, jika Anda memiliki 10 tugas seperti ini. akan menjadi 10% IOWait (dan beban yang mengerikan), sehingga jumlahnya dapat dilaporkan jauh lebih rendah daripada yang mungkin sebenarnya menjadi masalah.

Saya pikir Anda benar-benar perlu melihat iostat -mtx untuk mendapatkan beberapa metrik pemanfaatan disk, dan pidstat -d untuk mendapatkan beberapa metrik per proses, pertimbangkan apakah aplikasi yang mengenai disk tersebut dengan cara tersebut mungkin menyebabkan masalah atau tidak, atau aplikasi potensial lainnya yang mengenai disk tersebut kemungkinan besar menyebabkan masalah.

Metrik CPU benar-benar bertindak sebagai indikator untuk masalah mendasar, metrik tersebut bersifat umum sehingga memahami di mana letaknya terlalu umum adalah hal yang baik.


Linux
  1. Linux – Membuat Penyalinan Disk/disk Lebih Lambat?

  2. Kali Linux di DigitalOcean Cloud

  3. Bagaimana cara menghentikan proses 'tidak terputus' di Linux?

  1. Pelajari Dasar-dasar Cara Kerja Pengalihan I/O (Input/Output) Linux

  2. Men-debug latensi I/O Linux

  3. Penurunan kinerja I/O yang masif dan tidak dapat diprediksi di Linux

  1. Cara Mengetahui Apakah Disk Adalah SSD Atau HDD Di Linux

  2. Pelaporan I/O dari baris perintah Linux

  3. Linux – Bagaimana Cara Memantau Disk I/o Di Direktori Tertentu?