Memahami Rata-Rata Beban di Linux

Understanding Load Average Linux



Rata-rata beban adalah pengukuran jumlah pekerjaan versus siklus CPU gratis yang tersedia pada prosesor sistem. Dalam artikel ini saya akan mendefinisikan istilah tersebut, mendemonstrasikan bagaimana Linux menghitung nilai ini, kemudian memberikan wawasan tentang cara menginterpretasikan beban sistem.

Sebelum kita masuk ke rata-rata beban Linux, kita harus menjelajahi berbagai cara beban dihitung dan mengatasi pengukuran beban CPU yang paling umum – persentase.







Windows menghitung beban secara berbeda dari Linux, dan karena Windows secara historis lebih populer di desktop, definisi beban Windows umumnya dipahami oleh sebagian besar pengguna komputer. Sebagian besar pengguna Windows telah melihat beban sistem di pengelola tugas ditampilkan sebagai persentase mulai dari 0% hingga 100%.



Di Windows ini diturunkan dengan memeriksa seberapa sibuknya Proses Sistem Idle adalah dan menggunakan kebalikannya untuk mewakili beban sistem. Misalnya, jika utas menganggur mengeksekusi 99% dari waktu, beban CPU di Windows akan menjadi 1%. Nilai ini mudah dipahami tetapi kurang memberikan detail keseluruhan tentang status sebenarnya dari sistem.



Di Linux, rata-rata beban diwakili oleh angka desimal mulai dari 0,00. Nilai dapat secara kasar didefinisikan sebagai jumlah proses selama satu menit terakhir yang harus menunggu giliran untuk dieksekusi. Tidak seperti Windows, rata-rata beban Linux bukanlah pengukuran instan. Beban diberikan dalam tiga nilai – rata-rata satu menit, rata-rata lima menit, dan rata-rata lima belas menit.





Memahami Rata-Rata Beban di Linux

Pada awalnya, lapisan detail tambahan ini tampaknya tidak perlu jika Anda hanya ingin mengetahui status beban CPU saat ini di sistem Anda. Tapi karena rata-rata dari tiga periode waktu diberikan, daripada pengukuran instan, Anda bisa mendapatkan gambaran yang lebih lengkap tentang perubahan beban sistem dari waktu ke waktu dalam sekali pandang dari tiga angka.

Menampilkan rata-rata beban sederhana. Pada baris perintah, Anda dapat menggunakan berbagai perintah. Saya cukup menggunakan perintah w:



akar@Virgo[~]# di dalam
dua puluh satu: 08:43ke atas38hari,4:3. 4,4 pengguna, memuat rata-rata:3.11,2.75,2.70

Perintah lainnya akan menampilkan siapa yang masuk dan apa yang mereka jalankan, tetapi untuk tujuan kami informasi ini tidak relevan jadi saya telah memotongnya dari tampilan di atas.

Dalam sistem yang ideal, tidak ada proses yang harus ditahan oleh proses (atau utas) lain, tetapi dalam satu sistem prosesor, ini terjadi ketika beban berjalan di atas 1,00.

Kata-kata sistem prosesor tunggal sangat penting di sini. Kecuali Anda menjalankan komputer kuno, mesin Anda mungkin memiliki banyak inti CPU. Di mesin yang saya gunakan, saya memiliki 16 core:

akar@Virgo[~]#nproc
16

Dalam hal ini, rata-rata beban 3,11 tidak mengkhawatirkan sama sekali. Ini berarti bahwa sedikit lebih dari tiga proses siap untuk dieksekusi dan inti CPU hadir untuk menangani eksekusi mereka. Pada sistem khusus ini, beban harus mencapai 16 untuk dianggap 100%.

Untuk menerjemahkan ini ke beban sistem berbasis persen, Anda dapat menggunakan perintah sederhana ini, jika tidak tumpul,:

kucing /persen/beban rata-rata| memotong -C 1-4 | dibuang 'skala=2; ($ (/`nproc`) * 100' | SM -NS

Urutan perintah ini mengisolasi rata-rata 1 menit melalui cut dan echo, dibagi dengan jumlah inti CPU, melalui bc, kalkulator baris perintah, untuk mendapatkan persentase.

Nilai ini sama sekali tidak ilmiah tetapi memberikan perkiraan kasar beban CPU dalam persen.

Satu Menit untuk Belajar, Seumur Hidup untuk Menguasai

Pada bagian sebelumnya saya memberikan contoh 100% beban 16.0 pada sistem inti CPU 16 dalam tanda kutip karena perhitungan beban di Linux sedikit lebih samar daripada Windows. Administrator sistem harus mengingat bahwa:

  • Beban dinyatakan dalam proses dan utas yang menunggu
  • Ini bukan nilai instan, melainkan rata-rata, dan
  • Interpretasinya harus mencakup jumlah core CPU, dan
  • Mungkin over-inflate I/O menunggu seperti disk membaca

Karena itu, menangani beban CPU pada sistem Linux tidak sepenuhnya merupakan masalah empiris. Sekalipun demikian, beban CPU saja bukanlah ukuran yang memadai untuk pemanfaatan sumber daya sistem secara keseluruhan. Dengan demikian, administrator Linux yang berpengalaman akan mempertimbangkan beban CPU bersamaan dengan nilai-nilai lain seperti I/O wait dan persentase kernel versus waktu sistem.

I/O Tunggu

I/O wait paling mudah dilihat melalui perintah atas:

Pada tangkapan layar di atas saya telah menyoroti nilai tunggu I/O. Ini adalah persentase waktu CPU menunggu perintah input atau output untuk diselesaikan. Ini biasanya menunjukkan aktivitas disk yang tinggi. Sementara persentase menunggu yang tinggi saja mungkin tidak secara signifikan menurunkan tugas-tugas yang terikat CPU, itu akan mengurangi kinerja I/O untuk tugas-tugas lain dan akan membuat sistem terasa lamban.

Penantian I/O yang tinggi tanpa penyebab yang jelas mungkin mengindikasikan masalah dengan disk. Gunakan perintah dmesg untuk melihat apakah ada kesalahan yang terjadi.

Kernel vs. Waktu Sistem

Nilai yang disorot di atas mewakili waktu pengguna dan kernel (sistem). Ini adalah rincian konsumsi keseluruhan waktu CPU oleh pengguna (yaitu aplikasi, dll.) dan kernel (yaitu interaksi dengan perangkat sistem). Waktu pengguna yang lebih tinggi akan menunjukkan lebih banyak penggunaan CPU oleh program di mana waktu kernel yang lebih tinggi akan menunjukkan lebih banyak pemrosesan tingkat sistem.

Beban Cukup Rata-Rata

Mempelajari hubungan rata-rata beban dengan kinerja sistem yang sebenarnya membutuhkan waktu, tetapi tak lama kemudian Anda akan melihat korelasi yang berbeda. Berbekal kerumitan metrik kinerja sistem, Anda akan dapat membuat keputusan yang lebih baik tentang peningkatan perangkat keras dan pemanfaatan sumber daya program.