Bagaimana rata-rata memuat 0,00 ada?

12

Saya mengerti bahwa keseimbangan beban adalah cara mengukur seberapa sibuk CPU. Namun, saya tidak mengerti bagaimana rata-rata muatan 0.00bisa ada. Bukankah kernel selalu berjalan? Bukankah itu mengambil bagian dari beban CPU?

NerdOfLinux
sumber
6
Perhatikan bahwa dalam sebagian besar kasus, apa yang Anda lihat 0,00 benar-benar 0,0001 atau lebih
PlasmaHH
1
Di masa lalu, itu adalah panjang rata-rata antrian proses. Dengan kata lain, berapa banyak proses yang siap dijalankan (dan tidak menunggu I / O dll). Jika tidak ada, itu adalah 0,00. Hari-hari ini dalam pengalaman saya hanya mungkin jika Anda tidak menjalankan desktop grafis tetapi hanya server kurang-GUI.
Thorbjørn Ravn Andersen
Hanya untuk kelengkapan, saya pikir itu adalah salah satu BSD yang untuk sementara memiliki bug kernel di mana thread kernel menganggur dihitung ke rata-rata beban, menyebabkan rata-rata beban 1,00 ketika sistem tidak melakukan apa-apa sama sekali. Itu diperbaiki cukup cepat.
CVn

Jawaban:

16

Rata-rata beban selama periode waktu adalah jumlah rata-rata proses yang bersaing untuk CPU selama periode waktu tersebut. "Kernel" tidak berjalan jika tidak ada yang bisa dilakukan; lebih khusus, jika tidak ada yang harus dilakukan, CPU diberikan ke thread "idle" khusus yang tidak dihitung (dan yang dapat melakukan hal-hal seperti menempatkan CPU adalah keadaan di mana ia menunggu interupsi).

Jadi, misalnya, rata-rata beban 0,6 lebih dari 5 menit biasanya berarti bahwa selama 5 menit tersebut CPU digunakan selama total 3 menit oleh beberapa proses (atau oleh kernel), dan total 2 menit menganggur. Tapi, seperti yang diamati oleh @UKMonkey, itu mungkin berarti bahwa setelah 4 setengah menit tidak melakukan apa-apa, 6 proses berkompetisi untuk CPU selama 30 detik terakhir ...

CPU idle adalah tidak ada proses yang ingin menggunakannya untuk menjalankan kode, karena semua proses baik menunggu operasi input atau output selesai atau sedang tidur menunggu untuk dibangunkan di waktu mendatang.

@ Tautan Panther menyediakan lebih banyak diskusi mendalam tentang rata-rata beban.

AlexP
sumber
1
Rata-rata beban 0,6 selama 5 menit juga bisa berarti tidak melakukan apa-apa selama 4 setengah menit - dan kemudian dalam 30 detik terakhir ada sejumlah besar proses menunggu waktu CPU ... Ini bukan indikasi berapa banyak pekerjaan yang dilakukan CPU telah melakukan - tetapi berapa banyak proses telah menunggu untuk menggunakannya.
UKMonkey
@UKMonkey: Benar sekali ... Rata-rata adalah rata-rata dan rata-rata yang sama dapat diperoleh dalam banyak cara. Diedit jawaban untuk menjelaskan bahwa rata-rata sedang tidak berarti puncak juga masuk akal.
AlexP
13

Rata-rata beban adalah ukuran seberapa kelebihan inti CPU dalam hal jumlah proses yang ingin menggunakannya sekaligus.

Yang berikut ini mengasumsikan CPU single core (single thread):

  • 0,0

    CPU tidak melakukan apa-apa sama sekali. Jika suatu proses mulai menggunakan CPU maka itu akan menjadi satu-satunya yang menggunakannya.

    CPU yang menganggur tidak berarti tidak ada proses yang berjalan. Misalnya, layanan latar belakang dan kernel masih berjalan, dan masih menempati memori. Mereka hanya tidak menggunakan CPU apa pun, karena mereka tidak melakukan apa-apa.

  • 1.0

    CPU pada penggunaan maksimum, tetapi tidak ada pertentangan antara proses untuk menggunakan CPU. Artinya, hanya satu proses yang berjalan sehingga dapat mengklaim 100% dari waktu CPU untuk dirinya sendiri. Atau, beberapa proses berjalan tetapi tidak ada yang mengklaim CPU 100%, dan penggunaan CPU gabungannya menambahkan hingga 100%. Mereka semua masih berjalan secepat mereka akan berjalan bahkan jika mereka memiliki CPU untuk diri mereka sendiri.

  • Lebih besar dari 1,0

    CPU berada pada penggunaan maksimum, dan ada beberapa proses yang ingin menggunakannya secara bersamaan sehingga mereka berjalan secara efektif lebih lambat dari yang seharusnya dapat dijalankan pada CPU yang menganggur. Misalnya, rata-rata beban 3,0 menunjukkan proses berjalan pada sepertiga kecepatan yang ingin mereka jalankan. Rata-rata beban 50,0 menunjukkan proses berjalan pada 1/50 kecepatan yang ingin mereka jalankan, karena semua proses lain berjalan. Artinya, angka yang lebih tinggi dari 1,0 menunjukkan bahwa CPU yang tersedia sedang diregangkan antara semakin banyak proses.

Memiliki multi-core CPU tidak mengubah arti angka tetapi dapat mengubah interpretasinya. Misalnya, jika Anda memiliki CPU 4 inti, maka beban 1,0 masih setara dengan satu proses menggunakan CPU 100% pada satu inti, tetapi ada tiga core lainnya. Jadi pada CPU 4 inti, titik efisiensi maksimum adalah 4.0, bukan 1.0 - dan titik di mana semuanya berjalan pada efisiensi 1/3 adalah 12.0, bukan 3.0. Untuk menambah kompleksitas, satu proses mungkin memiliki lebih dari satu utas masing-masing mengklaim CPU sendiri. Jadi satu proses dapat menggunakan 100% dari semua 4 core jika multi-threaded.

Catatan penting

Penggunaan CPU hanya satu sumber daya yang dapat membatasi kinerja suatu proses. I / O adalah hal lain, dan tidak diperhitungkan sebagai beban CPU. Proses menggunakan CPU dalam jumlah tertentu tidak harus dapat digunakan lebih banyak pada mesin yang lebih ringan karena dapat menekan kemacetan lainnya.

Apa rata-rata beban terbaik

Ini benar-benar tergantung pada apa yang Anda lakukan dan apakah Anda lebih suka responsif, atau agar CPU bekerja sekeras mungkin.

Untuk sesuatu yang perlu dilakukan sebanyak mungkin, rata-rata beban harus berada pada atau sedikit di atas jumlah core. Apa pun yang lebih besar dari ini menunjukkan bahwa Anda bisa menyelesaikan lebih banyak, lebih cepat, jika Anda memisahkan tugas di lebih banyak komputer / server.

Untuk sesuatu yang perlu responsif mungkin (bereaksi cepat), rata-rata beban harus margin yang nyaman kurang dari jumlah core, seperti setengah atau sepertiga, yang memungkinkan beberapa variasi intermiten sebelum terjadi perlambatan.

Untuk tamu virtualisasi (mis. KVM), semakin rendah rata-rata beban, semakin baik, karena Anda sebenarnya berbagi CPU dengan tamu lain di host yang sama.

thomasrutter
sumber
Saya terkejut melihat bahwa kadang-kadang utas "menunggu di I / O" termasuk dalam load rata-rata serverfault.com/a/524818/27813 tampaknya ...
rogerdpack
@rodgerpack Ya, Dproses status selalu termasuk dalam rata-rata beban di Linux. Ya, ini membingungkan. Ya, kita harus melihat metrik lain selain memuat rata-rata.
kubanczyk
2

Rata-rata beban 0,00 pada dasarnya berarti sistem Anda idle dan tidak ada penundaan atau tekanan atau hambatan pada CPU Anda selama waktu yang diukur.

Itu tidak berarti CPU Anda tidak aktif, itu hanya berarti bahwa jika suatu proses menginginkan waktu CPU, tidak perlu menunggu.

Sulit untuk mengatakan lebih banyak dari jumlah kecil yang Anda poskan karena dapat bergantung pada bagaimana Anda mengukur beban Anda (sistem, per pengguna?) Dan dari waktu berapa.

Untuk beberapa detail dan bacaan yang menarik, lihat

https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/

http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

Harimau kumbang
sumber