Perintah nice Linux: Menetapkan Prioritas, Mengubahnya dengan renice, dan Mengukur Jatah CPU saat Berebut

Lingkungan ujiKeluarga RHELAlmaLinux 9.8akun root · pengguna biasaDiperiksa 2026-10-17

Perintah nice Linux adalah perintah untuk menetapkan nilai nice (-20~19) yang menentukan seberapa banyak CPU yang direlakan sebuah program saat dijalankan. Pada server AlmaLinux 9, dua tugas diikat ke satu core CPU dan nilai nice diubah-ubah saat diukur; hasilnya, jatah CPU hanya terbagi saat tugas berebut CPU, dan tugas nice 19 hanya memakai 1.4%.

Proses yang sudah berjalan diubah dengan renice, dan urusan mengalah di sisi disk ditangani ionice. Untuk ketiga perintah, output yang dimuat adalah hasil asli saat dijalankan langsung dengan akun root dan akun biasa.

1️⃣ Perintah nice Linux: rentang nilai dan jatah saat berebut CPU

Nilai nice adalah angka yang menentukan seberapa jauh sebuah proses mengalah saat waktu CPU dibagi, dan bisa ditetapkan dari -20 sampai 19. Program biasanya berjalan dengan 0; -20 diproses paling dulu dan 19 paling banyak mengalah.

Mudah mengira angka yang lebih besar diproses lebih dulu, tetapi nilai nice justru sebaliknya. Penjadwal Linux memberi bobot untuk setiap nilai nice dan membagi waktu CPU menurut perbandingan itu: nice 0 bernilai 1024, 10 bernilai 110, dan 19 bernilai 15.

Mengalah hanya terjadi saat tugas berebut CPU. Jika ada CPU yang menganggur, tugas nice 19 pun berjalan tanpa menunggu. Ini seperti kursi prioritas di bus: saat kosong siapa pun boleh duduk, dan kursi baru diberikan kepada orang lain saat bus penuh.

🧭 Nilai nice saat CPU longgar dan saat berebut
Diagram penjelasan
🖥️ CPU
⚖️ Tugas B
🖥️ Ada CPU yang menganggur, jadi setiap tugas mendapat satu core🖥️ Dua tugas memakai satu core CPU
Tugas Anice 0 · bobot 1024
100%50.0%90.3%98.6%
Tugas Bnice 0 · bobot 1024nice 10 · bobot 110nice 19 · bobot 15
100%50.0%9.7%1.4%
Saat CPU longgar, tidak ada yang perlu didahulukan, sehingga tugas B memakai CPU sepenuhnya berapa pun nilai nice-nya.
Saat berebut core yang sama, dua tugas nice 0 yang bobotnya sama membagi waktu CPU setengah-setengah.
Bobot nice 10 adalah 110, sekitar sepersembilan dari nice 0 (1024), sehingga waktu CPU dibagi kira-kira 90.3 : 9.7.
Bobot nice 19 adalah 15, dan saat berebut, tugas B hanya memakai sekitar 1.4% waktu CPU.

Tabel bobot ini adalah larik [sched_prio_to_weight] di kode sumber kernel Linux [kernel/sched/core.c], dan dirancang agar waktu CPU berkurang sekitar 10% setiap kali nilai nice naik 1.

2️⃣ Cara dasar memakai nice: +10 bila angka dihilangkan, dan nilai di luar rentang

Jika sebuah perintah ditulis setelah nice, perintah itu dijalankan dengan nilai nice yang diubah; jika nice diketik tanpa perintah, nilai nice shell saat ini akan ditampilkan.

nice
0

Contoh di bawah adalah perintah agar bash yang dijalankan menampilkan nilai nice-nya sendiri dengan [ps -o ni=]. Tanpa -n, nilai saat ini ditambah 10, dan -n 5 menambah 5.

nice bash -c 'ps -o ni= -p $$'
 10
nice -n 5 bash -c 'ps -o ni= -p $$'
  5

Nilai di luar rentang disesuaikan ke batasnya tanpa galat, sehingga -n 50 berjalan dengan 19.

nice -n 50 bash -c 'ps -o ni= -p $$'
 19

Mendahulukan dengan nilai negatif hanya bisa dilakukan akun root. Akun biasa mendapat peringatan [cannot set niceness], dan perintahnya tetap berjalan dengan nice 0.

# akun biasa
nice -n -5 bash -c 'ps -o ni= -p $$'
nice: cannot set niceness: Permission denied
  0
# akun root
nice -n -5 bash -c 'ps -o ni= -p $$'
 -5

Proses anak yang dijalankan lagi oleh perintah yang dijalankan dengan nice juga berjalan dengan nilai nice yang sama.

nice -n 7 bash -c 'sleep 1 & ps -o ni= -p $!'
  7

Karena itu, jika satu skrip dijalankan dengan nice, seluruh perintah di dalamnya ikut mengalah.

3️⃣ renice: mengubah nilai nice proses yang sedang berjalan

nice hanya menetapkan nilai saat menjalankan, jadi proses yang sudah berjalan diubah dengan renice. Periksa dulu PID dan nilai saat ini di kolom NI top atau dengan ps.

ps -o pid,ni,cmd -p 201643
    PID  NI CMD
 201643   5 sleep 600
renice -n 10 -p 201643
201643 (process ID) old priority 5, new priority 10

Seperti terlihat di output, renice -n tidak menambahkan ke nilai saat ini melainkan menyetel ke nilai yang ditentukan, sehingga hasilnya 10, bukan 15 (5 ditambah 10). Ini bukan seperti menekan tombol ▲ di remote AC untuk naik satu tingkat, melainkan seperti menetapkan suhu yang diinginkan ke 24 derajat.

Dokumentasi resmi util-linux juga menjelaskan -n sebagai nilai absolut, sedangkan cara menambahkan ditangani opsi [--relative] di versi baru. util-linux 2.37.4 yang diuji belum memiliki opsi ini.

Akun biasa hanya bisa menaikkan nilai prosesnya sendiri, dan nilai yang sudah dinaikkan tidak bisa diturunkan lagi.

# akun biasa
renice -n 10 -p 201649
201649 (process ID) old priority 0, new priority 10
renice -n 5 -p 201649
renice: failed to set priority for 201649 (process ID): Permission denied

Akun root juga bisa menurunkannya, dan pada uji yang sama nilai 10 langsung diubah menjadi 3.

🔲 Simulator nice · renice

Di simulator di bawah yang masuk dengan akun biasa, Anda bisa mengetik nice dan renice sendiri dan melihat nilai nice berubah.

Simulator perintah nicenice 8.32 · renice 2.37.4
[root@server work]#
Hanya berjalan di dalam browser dan tidak menyentuh proses sungguhan. Ini server virtual yang masuk dengan akun biasa; Anda bisa menjalankan perintah dengan nilai nice yang diubah atau mengubah nilai backup.sh (PID 2481) dengan renice, lalu memeriksanya dengan ps -o pid,ni,cmd. Tombol ↑↓ di keyboard memanggil kembali perintah yang sudah diketik.

4️⃣ Mengukur jatah saat berebut CPU: nice 0 vs 0·10·19

Menaikkan nilai nice tidak selalu membuat tugas itu lebih lambat. Jatahnya hanya berkurang saat berebut CPU yang sama dengan tugas lain.

Dua tugas diikat ke satu core CPU (taskset), lalu skrip di bawah yang menghitung angka satu per satu selama 5 detik dijalankan bersamaan. Semakin besar angka yang dihitung, semakin banyak waktu CPU yang dipakai.

#!/bin/bash
end=$((SECONDS+5)); n=0
while [ $SECONDS -lt $end ]; do n=$((n+1)); done
echo $n

Skrip menambah n satu per satu sampai 5 detik berlalu, lalu menampilkan nilai terakhir.

📊5 detik berebut satu core CPUHitungan dalam 5 detik
Tugas pertama nice 0Tugas kedua
nice 0 vs nice 0
Dua tugas dengan bobot sama.
0250 rb500 rb750 rb1 jt
nice 0497,596 kali48.8%
nice 0522,040 kali51.2%
nice 0 vs nice 10
Hanya tugas kedua yang dijalankan dengan nice 10.
0250 rb500 rb750 rb1 jt
nice 0979,971 kali90.1%
nice 10107,671 kali9.9%
nice 0 vs nice 19
Hanya tugas kedua yang dijalankan dengan nice 19.
0250 rb500 rb750 rb1 jt
nice 0909,895 kali98.6%
nice 1913,010 kali1.4%
Angka ini adalah hasil di server AlmaLinux 9 pada 17 Oktober 2026, dengan dua tugas diikat ke satu core CPU dan dijalankan bersamaan masing-masing 5 detik.

Dua tugas nice 0 membagi setengah-setengah, nice 10 memakai sekitar 10%, dan nice 19 hanya 1.4%. Hasil ini sama dengan perbandingan yang dihitung dari bobot kernel (1024 : 110 menjadi 90.3 : 9.7, 1024 : 15 menjadi 98.6 : 1.4).

Saat nice 19 dijalankan sendirian di core yang sama, hitungannya sekitar 650,000–1,140,000 kali dalam 5 detik. Tanpa lawan untuk didahulukan, nice 19 pun memakai CPU sepenuhnya, dan beban server (load average) selama uji adalah 3–5.

5️⃣ ionice: mengalah di sisi disk dan memeriksa penjadwal

nice hanya menentukan jatah CPU, jadi untuk tugas yang lama membaca dan menulis disk seperti backup, gunakan ionice agar urutan disk juga mengalah. Jika dijalankan dengan -c3 (idle), tugas hanya diproses saat tidak ada program lain yang memakai disk.

ionice -c3 bash -c 'ionice -p $$'
idle
ionice -p $$
none: prio 0

Proses yang tidak diberi pengaturan apa pun ditampilkan sebagai [none]; menurut dokumentasi kernel, proses itu diperlakukan sebagai kelas best-effort dengan prioritas yang dihitung dari nilai nice CPU.

Kelas ionice hanya berpengaruh jika penjadwal disk mendukungnya, dan dokumentasi kernel menyebut bfq dan mq-deadline sebagai penjadwal yang mendukung. Yang ditampilkan dalam kurung siku adalah penjadwal yang sedang dipakai.

cat /sys/block/nvme0n1/queue/scheduler
[none] mq-deadline kyber bfq

Disk NVMe di server uji memakai [none], jadi menurut dokumentasi resmi ionice bisa jadi tidak berpengaruh, dan efeknya tidak diukur terpisah. Nama disk diperiksa dengan lsblk.

6️⃣ Kapan memakai nice: backup·cron·wp-cli

Tambahkan nice pada pekerjaan yang lama tetapi tidak mendesak. Kompresi backup memakai CPU dan disk sekaligus, jadi tetapkan nice dan ionice bersama.

nice -n 19 ionice -c3 tar czf backup.tgz /home/example

Jika pekerjaan yang sudah berjalan memperlambat server, periksa PID-nya di top lalu naikkan nilainya dengan renice; untuk pekerjaan cron yang berjalan setiap hari, tambahkan nice di depan perintah.

0 3 * * * nice -n 10 /usr/local/bin/backup.sh

Di server WordPress, jika pekerjaan wp-cli besar seperti search-replace atau pembuatan ulang gambar dijalankan dengan nice -n 10, php-fpm yang melayani permintaan pengunjung akan memakai CPU lebih dulu saat CPU sibuk.

nice -n 10 wp media regenerate --yes

Sebaliknya, jangan naikkan nilai nice php-fpm atau server web itu sendiri. Jika proses yang melayani pengunjung mengalah, respons halaman jadi lambat saat CPU sibuk.

🔢 FAQ & Konten yang Direkomendasikan

Untuk proses biasa, PR di top ditampilkan sebagai 20 ditambah nilai nice. Proses yang dijalankan dengan nice 5 tampil sebagai PR 25 dan NI 5, sedangkan kolom PRI di ps menghitung dengan cara lain sehingga proses yang sama tampil sebagai 14.

nice menambahkan nilai yang ditentukan ke nilai nice saat ini. [nice -n 5 nice -n 3 nice] menampilkan 8, berbeda dengan renice -n yang menyetel ke nilai yang ditentukan.

Jika [Nice=] ditulis di bagian [Service] pada file unit layanan, nilai nice untuk proses yang dijalankan layanan itu pun ditetapkan. Menurut dokumentasi resmi systemd.exec, nilainya bisa ditetapkan dari -20 sampai 19.

🧭 Konten rekomendasi proses dan penjadwalan tugas 11 artikel · 4 referensi
🗂️ Proses dan penjadwalan tugas
📄 Perintah ps 📄 Perintah top 📄 Perintah nice Linux 📄 Perintah kill 📄 Perintah killall 📄 Latar belakang&latar depan 📄 Perintah uptime
📄 Pengaturan crontab
📋 WP CLI: Instalasi dan Pengaturan 📄 WP-Cron(wp-cron.php) 📄 Mencari pola tersinkron: WP-CLI
📡 GNU Coreutils nice invocation 📡 renice(1) Linux manual page 📡 Block io priorities (dokumentasi kernel) 📡 sched_prio_to_weight (kode sumber kernel)

ℹ️ Pemberitahuan Afiliasi
Konten di situs ini berisi tautan afiliasi. Jika pengunjung membeli produk atau layanan melalui tautan tersebut, situs ini menerima komisi dari penjual. Harga yang dibayar pembeli(turun saat ada diskon promo ↓), tidak naik karena hal ini. Harga, diskon, dan informasi stok yang ditampilkan berlaku pada saat penulisan dan bisa berbeda dengan kondisi sebenarnya, jadi pastikan kembali di situs penjual sebelum membeli. Pemilihan dan penilaian produk dibuat berdasarkan standar kami sendiri, dan ada tidaknya komisi tidak memengaruhi urutan maupun isi penilaian.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Buktikan bahwa Anda manusia: 4   +   2   =