Jawaban singkat
PR adalah level prioritas. Semakin rendah PR, semakin tinggi prioritas proses.
PR dihitung sebagai berikut:
- untuk proses normal: PR = 20 + NI (NI bagus dan berkisar -20 hingga 19)
- untuk proses waktu nyata: PR = - 1 - real_time_priority
(real_time_priority berkisar dari 1 hingga 99)
Jawaban panjang
Ada 2 jenis proses, yang normal dan waktu nyata
Untuk yang normal (dan hanya untuk itu), bagus diterapkan sebagai berikut:
Bagus
Skala "kebaikan" berubah dari -20 ke 19, sedangkan -20 adalah prioritas tertinggi dan 19 prioritas terendah. Tingkat prioritas dihitung sebagai berikut:
PR = 20 + NI
Di mana NI adalah level yang bagus dan PR adalah level prioritas. Jadi seperti yang bisa kita lihat, -20 sebenarnya memetakan ke 0, sedangkan 19 memetakan ke 39.
Secara default, nilai program bagus adalah 0, tetapi dimungkinkan bagi pengguna root untuk meluncurkan program dengan nilai bagus yang ditentukan dengan menggunakan perintah berikut:
nice -n <nice_value> ./myProgram
Waktu sebenarnya
Kita bisa melangkah lebih jauh. Prioritas yang bagus sebenarnya digunakan untuk program pengguna. Sedangkan prioritas keseluruhan UNIX / LINUX memiliki kisaran 140 nilai, nilai bagus memungkinkan proses untuk memetakan ke bagian terakhir dari rentang (dari 100 hingga 139). Persamaan ini membuat nilai dari 0 hingga 99 tidak dapat dijangkau yang akan sesuai dengan level PR negatif (dari -100 ke -1). Untuk dapat mengakses nilai-nilai itu, proses harus dinyatakan sebagai "waktu nyata".
Ada 5 kebijakan penjadwalan di lingkungan LINUX yang dapat ditampilkan dengan perintah berikut:
chrt -m
Yang akan menampilkan daftar berikut:
1. SCHED_OTHER the standard round-robin time-sharing policy
2. SCHED_BATCH for "batch" style execution of processes
3. SCHED_IDLE for running very low priority background jobs.
4. SCHED_FIFO a first-in, first-out policy
5. SCHED_RR a round-robin policy
Proses penjadwalan dapat dibagi menjadi 2 kelompok, kebijakan penjadwalan normal (1 hingga 3) dan kebijakan penjadwalan waktu nyata (4 dan 5). Proses waktu nyata akan selalu memiliki prioritas di atas proses normal. Proses waktu nyata dapat dipanggil menggunakan perintah berikut (Contohnya adalah bagaimana mendeklarasikan kebijakan SCHED_RR):
chrt --rr <priority between 1-99> ./myProgram
Untuk mendapatkan nilai PR untuk proses waktu nyata, persamaan berikut ini diterapkan:
PR = -1 - rt_prior
Dimana rt_prior sesuai dengan prioritas antara 1 dan 99. Untuk alasan itu proses yang akan memiliki prioritas lebih tinggi daripada proses lain akan disebut dengan nomor 99.
Penting untuk dicatat bahwa untuk proses waktu nyata, nilai yang bagus tidak digunakan.
Untuk melihat "kebaikan" saat ini dan nilai PR dari suatu proses, perintah berikut ini dapat dijalankan:
top
Yang menunjukkan output berikut:
Pada gambar, nilai PR dan NI ditampilkan. Adalah baik untuk mencatat proses dengan nilai PR -51 yang sesuai dengan nilai waktu nyata. Ada juga beberapa proses yang nilai PR-nya dinyatakan sebagai "rt". Nilai ini sebenarnya sesuai dengan nilai PR -100.
niceness
dapat digunakan untuk memberikan prioritas negatif sehingga tugas denganniceness
keluar dari jalan tugas prioritas tinggi? (Yaitu sedangnice
dan membiarkan sumber daya akses lainnya? Atau apakah ini hanya membingungkan saya?