Di mana jaringan yang menunggu berada di 'atas'?

9

Jika top menunjukkan beban tinggi, dan Anda tidak tahu apakah proses yang menyebabkannya melakukan waktu prosesor atau melakukan i / o jaringan (bukan i / o lokal) bagaimana Anda bisa mengetahui hal itu?

Di server kami, saya melihat nilai tinggi untuk memuat, tetapi dalam kombinasi dengan 60% -70% menganggur, dan sekitar 25% pengguna. Saya ingin tahu bagaimana cara memadukan nilai-nilai tersebut, tetapi di internet saya hampir selalu membaca bahwa Anda dapat menggunakan iostat untuk melihat apakah prosesnya merusak disk Anda. Tapi saya sudah tahu pasti, bukan itu masalahnya. Proses yang dipermasalahkan juga tidak mengalami kesulitan dalam menjalankan tugasnya, tetapi beban masih tinggi.

Jadi, apakah ada cara untuk mengetahui lebih banyak bagian mana yang disebabkan oleh menunggu jaringan dan bagian mana yang disebabkan oleh waktu prosesor yang sebenarnya? Dan apa arti 'idle' di atas?

Untuk kejelasan: dengan memuat maksud saya 3 angka yang menandakan proses antrian rata-rata per inti. Ada 8 core pada mesin ini dan angkanya mencapai 25, sehingga merupakan beban 2,5 per core.

Jan
sumber
Apa yang Anda panggil "load": Penggunaan CPU, atau 3 nilai "load average" (terlihat pada uptimeoutput)?
spuk
1
Pertanyaan tidak masuk akal ... menunggu IO jaringan tidak menggunakan waktu cpu.
psusi
2
Saya suka utilitas htopuntuk mengintip ke dalam proses. Secara khusus dapat memungkinkan Anda untuk memilih proses dan kemudian menggunakan lperintah, itu akan menunjukkan kepada Anda semua file yang terbuka menggunakan lsoftermasuk IPv4dan IPv6streaming perangkat dan semacamnya. Jika Anda telah stracemenginstal pada kotak Anda, Anda dapat melakukan debug sistem panggilan dan sinyal juga. Bukan jawaban tetapi alat lain yang saya pertimbangkan untuk apa yang Anda coba selidiki.
111 ---
Maksud saya 3 angka. Seperti yang saya mengerti mereka disebut "memuat", atau apakah saya salah di sini? Mereka mewakili jumlah proses dalam antrian yang dapat dieksekusi, tetapi apakah itu termasuk proses yang menunggu jaringan, atau apakah itu mengecualikan proses?
Jan
Dan apa yang Anda definisikan sebagai "tinggi"? Rata-rata beban tidak diskalakan untuk inti. mis. Sebuah sistem dengan rata-rata beban 1 dan 4 core adalah 1/4 seperti yang dimuat sebagai sistem dengan rata-rata beban 1 dan hanya 1 inti. Rata-rata beban adalah angka yang sangat kasar.
bahamat

Jawaban:

3

Jika top menunjukkan beban tinggi, dan Anda tidak tahu apakah proses yang menyebabkannya melakukan waktu prosesor atau melakukan i / o jaringan (bukan i / o lokal) bagaimana Anda bisa mengetahui hal itu?

Jaringan I / O tidak diperhitungkan dalam metrik Linux iowait, kecuali jika itu merupakan bagian dari transaksi NFS yang dalam hal ini dianggap sebagai disk I / O.

Jadi, apakah ada cara untuk mengetahui lebih banyak bagian mana yang disebabkan oleh menunggu jaringan dan bagian mana yang disebabkan oleh waktu prosesor yang sebenarnya?

Di luar menunggu NFS hipotetis, tidak ada bagian sama sekali dari beban rata-rata diambil oleh jaringan menunggu.

Dan apa arti 'idle' di atas?

Itu berarti persentase waktu CPU tidak di negara-negara lain yang terdaftar (pengguna, sistem, baik, iowait, perangkat keras mengganggu, perangkat lunak terganggu, dicuri). Ini termasuk menunggu jaringan. Saat idle, CPU pada dasarnya tidak melakukan apa pun. Perhatikan bahwa iowait juga idle time karena CPU juga tidak melakukan apa-apa.

Jlliagre
sumber
Terima kasih atas jawaban anda. Jadi dalam situasi saya di mana saya melihat nilai idle tinggi (60% - 70%) dan status pengguna lebih rendah (sekitar 25%) dan iowait rendah, ini bisa berarti server sedang menunggu sumber daya jaringan, jika saya mengerti Anda dengan benar.
Jan
1
Belum tentu menunggu sumber daya jaringan. Mungkin hanya CPU yang cukup cepat untuk menyelesaikan semua yang harus dilakukan. Rata-rata beban tinggi mungkin disebabkan oleh jumlah thread yang sangat tinggi yang secara bersamaan bersaing untuk mendapatkan CPU tetapi selama periode waktu yang sangat singkat.
jlliagre