Sampai baru-baru ini saya pikir rata-rata beban (seperti yang ditunjukkan misalnya di atas) adalah rata-rata bergerak pada n nilai terakhir dari jumlah proses dalam keadaan "runnable" atau "running". Dan n akan ditentukan oleh "panjang" rata-rata bergerak: karena algoritma untuk menghitung rata-rata beban tampaknya memicu setiap 5 detik, n akan menjadi 12 untuk rata-rata beban 1 menit, 12x5 untuk rata-rata beban 5 menit dan 12x15 untuk rata-rata muatan 15 menit.
Tetapi kemudian saya membaca artikel ini: http://www.linuxjournal.com/article/9001 . Artikel ini cukup tua tetapi algoritma yang sama diterapkan hari ini di kernel Linux. Rata-rata beban bukan rata-rata bergerak tetapi suatu algoritma yang saya tidak tahu namanya. Lagi pula saya membuat perbandingan antara algoritma Linux kernel dan rata-rata bergerak untuk beban periodik imajiner:
.
Terdapat sebuah perbedaan yang besar.
Akhirnya pertanyaan saya adalah:
- Mengapa implementasi ini dipilih dibandingkan dengan moving average yang sebenarnya, yang memiliki arti nyata bagi siapa pun?
- Mengapa semua orang berbicara tentang "rata-rata muatan 1 menit" karena lebih dari menit terakhir diperhitungkan oleh algoritma. (Secara matematis, semua ukuran sejak boot; dalam praktiknya, memperhitungkan kesalahan pembulatan - masih banyak tindakan)
sumber
Jawaban:
Perbedaan ini berasal dari Berkeley Unix yang asli, dan berasal dari fakta bahwa kernel tidak dapat benar-benar mempertahankan rolling average; perlu mempertahankan sejumlah besar bacaan di masa lalu untuk melakukannya, dan terutama di masa lalu tidak ada memori yang tersisa untuk itu. Algoritme yang digunakan sebagai gantinya memiliki keunggulan yang perlu dipertahankan oleh semua kernel adalah hasil dari perhitungan sebelumnya.
Perlu diingat algoritme itu sedikit lebih dekat dengan kebenaran ketika kecepatan komputer dan siklus clock terkait diukur dalam puluhan MHz, bukan GHz; ada lebih banyak waktu untuk perbedaan merayap di hari-hari ini.
sumber
uptime
danw
, diklaim; Anda harus melihat sumber kernel untuk mengetahui bahwa itu tidak benar.1min/5min/15min
memang masuk akal. Mereka menentukan waktu setelah mana pengaruh beban saat ini turun oleh beberapa faktor tetap (mungkin e = 2,71 .. atau mungkin 2). Coba saja.