Perintah nice Linux: atur prioritas CPU saat memulai perintah

Perintah nice menjalankan perintah baru dengan penyesuaian nilai nice yang memengaruhi penjadwalan CPU. Nilai nice yang lebih besar biasanya memberikan prioritas CPU yang lebih rendah, sehingga cocok untuk pekerjaan yang dapat mengalah kepada pekerjaan lain ketika CPU diperebutkan.

Pada Linux modern, rentang nilai nice adalah -20 sampai 19: angka yang lebih kecil berarti prioritas lebih tinggi. Nice bukan pengatur batas persentase CPU dan tidak menjamin waktu selesai tertentu. Untuk mengubah pekerjaan yang sudah berjalan, gunakan renice dengan sasaran yang diperiksa, bukan menjalankan nice terhadap PID lama.

Sintaks dan arti nilai penyesuaian

nice -n PENYESUAIAN PERINTAH [ARGUMEN...]

PENYESUAIAN merupakan bilangan yang ditambahkan pada nilai nice yang diwarisi oleh perintah baru. Opsi -n 10 berarti menambah 10, bukan selalu menetapkan nilai akhir menjadi 10. Jika nilai awalnya 0, hasil yang diharapkan adalah 10; jika nilai awalnya 5, penambahan 10 menghasilkan 15 dalam rentang yang diizinkan.

Periksa implementasi dengan type nice, nice --version, dan man nice. Panduan ini memakai bentuk GNU coreutils. Menjalankan nice tanpa perintah menampilkan nilai nice saat ini, sedangkan menjalankan nice disertai perintah tanpa -n memakai penambahan bawaan 10. Keduanya merupakan bentuk pemakaian yang berbeda.

Jalankan perhitungan checksum dengan prioritas lebih rendah

Contoh berikut membaca berkas dan menghitung checksum SHA-256, yaitu ringkasan isi berkas untuk pemeriksaan kesamaan data. Pastikan large.log adalah berkas yang memang ada, dapat dibaca, dan boleh Anda proses. Untuk latihan, buat berkas teks uji dalam direktori tersendiri lalu gunakan nama large.log di sana.

nice -n 10 sha256sum large.log

Perintah menjalankan sha256sum dengan penambahan nice sebesar 10. Keluaran yang diharapkan memuat checksum dan nama berkas; nilai checksum bergantung pada isi berkas. Nice tidak mengubah isi large.log atau membuat keluaran checksum yang berbeda hanya karena prioritasnya berubah.

nice sha256sum large.log

Pada GNU nice, bentuk kedua juga memakai penambahan bawaan 10. Jika isi berkas sama dan kedua perintah berhasil, checksumnya seharusnya sama. Perbedaan lama eksekusi tidak dapat dijamin: berkas kecil, CPU yang tidak sibuk, atau pekerjaan yang dibatasi kecepatan penyimpanan dapat membuat pengaruh nice tidak terlihat.

Berkas yang tidak ada atau tidak dapat dibaca tetap menyebabkan kegagalan sha256sum. Menambahkan nice tidak memperbaiki jalur berkas maupun izin baca.

Periksa nilai NI pada proses yang benar

Untuk proses yang sedang berjalan, ps dengan format kolom yang dipilih dapat menampilkan nilai nice melalui kolom NI:

ps -p 1234 -o pid,ni,cmd

Angka 1234 adalah PID ilustratif. Ganti dengan process ID (PID), yaitu nomor identitas proses, yang baru Anda periksa. Kolom pid menunjukkan sasaran, ni menunjukkan nilai nice, dan cmd membantu memastikan perintahnya. Sha256sum pada berkas kecil dapat sudah selesai sebelum sempat diperiksa, sehingga gunakan latihan sleep berikut untuk mengamati nilai.

Latihan sleep dan pemeriksaan PID

Periksa nilai awal dengan nice tanpa argumen, lalu jalankan dua baris berikut pada shell yang sama. Lakukan pemeriksaan sebelum sleep selesai:

nice -n 10 sleep 60 &
ps -o ni,comm -p $!

Tanda & memulai pekerjaan latar belakang. Parameter $! menunjuk PID proses terakhir pada pekerjaan latar belakang terakhir; pada contoh satu perintah ini, PID tersebut dipakai untuk memilih proses uji. Jalankan baris ps segera setelah baris pertama agar pekerjaan latar belakang lain tidak mengubah sasaran $!.

Contoh keluaran ilustratif jika nilai nice awal 0 dan penyesuaian berhasil:

 NI COMMAND
 10 sleep

Nilai 10 merupakan hasil penambahan dari 0, bukan nilai akhir yang selalu dijamin oleh -n 10. Jika nilai awal berbeda atau batas sistem berlaku, hasilnya dapat berbeda. Comm adalah nama perintah proses; opsi dan format keluaran contoh ini mengikuti ps dari procps-ng pada Linux.

Sleep adalah pekerjaan tunggu, sehingga latihan ini memeriksa nilai NI, bukan mengukur pembagian CPU di bawah beban. Biarkan pekerjaan uji selesai secara alami. Jika perlu menghentikannya lebih cepat, identifikasi kembali PID atau nomor pekerjaannya dan gunakan prosedur penghentian yang sesuai untuk pekerjaan uji milik Anda.

Bentuk pemanggilan GNU nice

Bentuk Kegunaan
-n NILAI Menambahkan NILAI pada nice yang diwarisi perintah baru.
--adjustment=NILAI Bentuk opsi panjang untuk penyesuaian yang sama.
Tanpa perintah Menampilkan nilai nice saat ini.

Sintaks, penambahan bawaan 10, rentang, dan status keluar dijelaskan dalam manual GNU coreutils nice. Nice tidak mengubah nilai nice shell induk hanya karena Anda menjalankan satu perintah anak melalui nice.

Izin dan batas pengaruhnya pada kinerja

Menambah nilai nice untuk mengurangi prioritas umumnya dapat dilakukan oleh pengguna biasa. Mengurangi nilai nice agar prioritas naik dapat memerlukan hak atau batas sumber daya yang mengizinkannya. Jangan menganggap pengguna biasa selalu dapat mengembalikan angka ke nilai lebih rendah setelah dinaikkan. Aturan Linux dijelaskan dalam manual sistem nice dan batas izinnya.

Nice terutama relevan untuk kebijakan penjadwalan normal seperti SCHED_OTHER dan SCHED_BATCH. Pengaruh yang terlihat juga bergantung pada pekerjaan pesaing, kelompok penjadwalan, serta pengaturan CPU sistem. Nice bukan cara menetapkan kebijakan waktu nyata dan tidak mengatur batas penggunaan memori atau prioritas I/O disk. Lihat manual penjadwalan CPU Linux untuk cakupan kebijakan dan kelompok tersebut.

Jika masalah utamanya adalah I/O penyimpanan, kekurangan memori, atau layanan yang menunggu jaringan, mengubah nice belum tentu menyelesaikan penyebabnya. Tentukan proses dan jenis sumber daya yang menjadi hambatan sebelum membandingkan hasil. Untuk perbandingan, gunakan pekerjaan serta kondisi beban yang sama dan ubah satu pengaturan pada satu waktu.

FAQ

Apakah nice -n 10 membuat perintah sepuluh kali lebih cepat?

Tidak. Angka 10 adalah penyesuaian nilai nice, bukan pengali kecepatan. Nilai yang lebih besar biasanya menurunkan prioritas CPU relatif ketika ada persaingan.

Apakah nice -n 10 selalu menghasilkan NI 10?

Tidak. Opsi tersebut menambahkan 10 pada nilai yang diwarisi. NI 10 pada contoh mengasumsikan nilai awal 0 dan penyesuaian berhasil.