Memahami Purata Beban pada Linux

Understanding Load Average Linux



Purata beban adalah pengukuran jumlah kerja berbanding kitaran CPU percuma yang terdapat pada pemproses sistem. Dalam artikel ini saya akan menentukan istilah, menunjukkan bagaimana Linux mengira nilai ini, dan kemudian memberikan gambaran tentang cara menafsirkan beban sistem.

Sebelum kita menyelami rata-rata beban Linux, kita mesti meneroka pelbagai cara pengiraan beban dan menangani pengukuran beban CPU yang paling biasa - peratusan.







Windows mengira beban berbeza dari Linux, dan sejak Windows secara historis lebih popular di desktop, definisi beban Windows secara umum difahami oleh kebanyakan pengguna komputer. Sebilangan besar pengguna Windows telah melihat beban sistem di task manager ditampilkan sebagai peratusan antara 0% hingga 100%.



Di Windows ini diperoleh dengan memeriksa betapa sibuknya Proses Idle Sistem adalah dan menggunakan kebalikan untuk mewakili beban sistem. Sebagai contoh, jika thread terbiar menjalankan 99% waktu, beban CPU di Windows akan menjadi 1%. Nilai ini mudah difahami tetapi memberikan sedikit perincian keseluruhan mengenai status sebenar sistem.



Di Linux, rata-rata beban digambarkan dengan nombor perpuluhan bermula dari 0,00. Nilai dapat ditakrifkan secara kasar sebagai jumlah proses selama satu minit terakhir yang harus menunggu giliran untuk pelaksanaan. Tidak seperti Windows, rata-rata beban Linux bukanlah ukuran segera. Beban diberikan dalam tiga nilai - purata satu minit, rata-rata lima minit, dan rata-rata lima belas minit.





Memahami Purata Beban di Linux

Pada mulanya, lapisan perincian tambahan ini nampaknya tidak diperlukan jika anda hanya ingin mengetahui keadaan beban CPU semasa dalam sistem anda. Tetapi kerana rata-rata tiga jangka masa diberikan, bukannya pengukuran segera, anda boleh mendapatkan idea yang lebih lengkap mengenai perubahan beban sistem dari masa ke masa dalam satu sekilas tiga angka

Memaparkan purata beban adalah sederhana. Pada baris arahan, anda boleh menggunakan pelbagai perintah. Saya hanya menggunakan perintah w:



akar@Virgo[~]# dalam
dua puluh satu: 08:43naik38hari,4:3. 4,4 pengguna, purata beban:3.11,2.75,2.70

Selebihnya arahan akan menunjukkan siapa yang log masuk dan apa yang mereka laksanakan, tetapi untuk tujuan kami maklumat ini tidak relevan jadi saya memotongnya dari paparan di atas.

Dalam sistem yang ideal, tidak ada proses yang harus ditahan oleh proses lain (atau utas), tetapi dalam sistem pemproses tunggal, ini berlaku apabila beban melebihi 1.00.

Perkataan sistem pemproses tunggal sangat penting di sini. Kecuali anda menjalankan komputer kuno, mesin anda mungkin mempunyai banyak teras CPU. Di mesin yang saya gunakan, saya mempunyai 16 teras:

akar@Virgo[~]# nproc
16

Dalam kes ini, purata beban 3.11 sama sekali tidak membimbangkan. Ini hanya bermaksud bahawa lebih daripada tiga proses siap dijalankan dan inti CPU hadir untuk menangani pelaksanaannya. Pada sistem tertentu ini, beban harus mencapai 16 untuk dipertimbangkan pada 100%.

Untuk menerjemahkannya ke beban sistem berdasarkan peratus, anda boleh menggunakan perintah mudah, jika tidak disalahgunakan ini:

kucing /peratus/muatan| potong -c 1-4 | membuang 'skala = 2; ($ (/`nproc`) * 100 ' | bc -tempat

Urutan arahan ini mengasingkan purata 1 minit melalui potongan dan echosnya, dibahagi dengan bilangan teras CPU, melalui bc, kalkulator baris perintah, untuk mendapatkan peratusan.

Nilai ini sama sekali tidak saintifik tetapi memberikan perkiraan kasar beban CPU dalam bentuk peratus.

Minit untuk Belajar, Sepanjang Hayat untuk Menguasai

Pada bahagian sebelumnya saya meletakkan contoh 100% beban 16.0 pada sistem teras CPU 16 dalam petikan kerana pengiraan beban di Linux sedikit lebih kabur daripada Windows. Pentadbir sistem mesti ingat bahawa:

  • Beban dinyatakan dalam proses menunggu dan utas
  • Ini bukan nilai seketika, sebaliknya rata-rata, dan
  • Tafsirannya mesti merangkumi bilangan teras CPU, dan
  • Mungkin I / O melambung tinggi seperti pembacaan cakera

Oleh kerana itu, menangani beban CPU pada sistem Linux tidak sepenuhnya merupakan masalah empirikal. Sekalipun demikian, beban CPU saja bukanlah ukuran yang mencukupi dari keseluruhan penggunaan sumber sistem. Oleh itu, pentadbir Linux yang berpengalaman akan mempertimbangkan pemuatan CPU bersamaan dengan nilai lain seperti menunggu I / O dan peratusan kernel berbanding waktu sistem.

Saya / O Tunggu

Penantian I / O paling mudah dilihat melalui arahan atas:

Dalam tangkapan skrin di atas saya telah menyerlahkan nilai tunggu I / O. Ini adalah peratusan waktu CPU menunggu perintah input atau output untuk diselesaikan. Ini biasanya menunjukkan adanya aktiviti cakera tinggi. Walaupun peratusan penantian yang tinggi sahaja tidak dapat menurunkan tugas yang terikat pada CPU secara signifikan, ia akan mengurangkan prestasi I / O untuk tugas lain dan akan membuat sistem terasa lembap.

Penantian I / O yang tinggi tanpa sebab yang jelas mungkin menunjukkan masalah pada cakera. Gunakan perintah dmesg untuk melihat apakah ada kesalahan yang berlaku.

Waktu Kernel vs Sistem

Nilai yang disorot di atas mewakili masa pengguna dan kernel (sistem). Ini adalah pecahan keseluruhan penggunaan masa CPU oleh pengguna (iaitu aplikasi, dll.) Dan kernel (iaitu interaksi dengan peranti sistem). Masa pengguna yang lebih tinggi akan menunjukkan lebih banyak penggunaan CPU oleh program di mana waktu kernel yang lebih tinggi akan menunjukkan lebih banyak pemprosesan peringkat sistem.

Beban Purata

Mempelajari hubungan purata beban dengan prestasi sistem sebenar memerlukan masa, tetapi tidak lama kemudian anda akan melihat korelasi yang berbeza. Berbekalkan kerumitan metrik prestasi sistem, anda akan dapat membuat keputusan yang lebih baik mengenai peningkatan perkakasan dan penggunaan sumber program.