Menurut halaman manual, dan wikipedia; nice
berkisar dari -20 hingga 20.
Namun ketika saya menjalankan perintah berikut, saya menemukan beberapa proses memiliki nilai non numerik seperti (-). Lihat kolom keenam dari kiri dengan judul 'NI'.
Apa yang ditunjukkan dengan kebaikan (-)?
ps axl
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 1 0 20 0 19356 1548 poll_s Ss ? 0:00 /sbin/init
1 0 2 0 20 0 0 0 kthrea S ? 0:00 [kthreadd]
1 0 3 2 -100 - 0 0 migrat S ? 0:03 [migration/0]
1 0 4 2 20 0 0 0 ksofti S ? 0:51 [ksoftirqd/0]
1 0 5 2 -100 - 0 0 cpu_st S ? 0:00 [migration/0]
5 0 6 2 -100 - 0 0 watchd S ? 0:09 [watchdog/0]
1 0 7 2 -100 - 0 0 migrat S ? 0:08 [migration/1]
1 0 8 2 -100 - 0 0 cpu_st S ? 0:00 [migration/1]
1 0 9 2 20 0 0 0 ksofti S ? 1:03 [ksoftirqd/1]
5 0 10 2 -100 - 0 0 watchd S ? 0:09 [watchdog/1]
1 0 11 2 -100 - 0 0 migrat S ? 0:05 [migration/2]
Saya telah memeriksa 3 server yang berjalan: Ubuntu 12.04 dan CentOs 6.5 dan Mac OsX 10.9. Hanya mesin Ubuntu dan CentOs yang memiliki nilai kebaikan non-digit.
[brackets]
ada sebenarnya adalahkthread
s (utas kernel).Jawaban:
Perhatikan bahwa mereka juga memiliki skor PRI -100; ini menunjukkan proses dijadwalkan sebagai proses waktu nyata . Proses waktu nyata tidak menggunakan skor bagus dan selalu memiliki prioritas lebih tinggi dari yang normal, tetapi masih berbeda satu sama lain.
Anda dapat melihat detail per proses dengan
chrt
perintah (misalnyachrt -p 3
). Salah satu dari -100 Anda kemungkinan akan melaporkan "prioritas penjadwalan saat ini" dari 99 - tidak sepertinice
, di sini nilai-nilai tinggi adalah prioritas yang lebih tinggi, yang mungkin merupakan penyebab utama-100
nomor tersebut dibuat . Proses non-realtime akan selalu menunjukkan "prioritas penjadwalan saat ini" dari 0chrt
terlepas dari nilai yang bagus, dan di linux "kebijakan penjadwalan saat ini" dariSCHED_OTHER
.Beberapa versi
top
tampaknya melaporkan proses waktu nyata dengan dirt
bawah PRI dan kemudian di0
bawah NI .sumber
-100
tetapi tidak bisa mengetahuinya :)Jawaban @ Goldlilock mengarahkan saya untuk melakukan penelitian di jalan yang benar. Ini adalah detail penelitian saya.
Algoritma Penjadwalan tersedia untuk proses
Linux mendukung 3 kebijakan penjadwalan.
SCHED_FIFO
,,SCHED_RR
danSCHED_OTHER
.SCHED_OTHER
adalah kebijakan penjadwal pembagian waktu universal universal yang digunakan oleh sebagian besar proses;SCHED_FIFO
danSCHED_RR
dimaksudkan untuk aplikasi khusus waktu kritis yang membutuhkan kontrol yang tepat atas cara proses runnable dipilih untuk dieksekusi.Prioritas tersedia
Untuk memilih proses yang akan dijalankan, penjadwal Linux harus mempertimbangkan prioritas setiap proses. Sebenarnya ada dua macam prioritas.
Nilai prioritas statis diberikan untuk setiap proses dan penjadwalan tergantung pada prioritas statis ini. Proses yang dijadwalkan dengan
SCHED_OTHER
prioritas statis 0; proses dijadwalkan di bawahSCHED_FIFO
atauSCHED_RR
dapat memiliki prioritas statis dalam kisaran1
ke99
(99 adalah yang tertinggi).The
sys_sched_get_priority_max( )
pengembalian rutin prioritas statis dari proses, ia mengembalikan0
untuk proses non-realtime.Prioritas dinamis digunakan untuk aplikasi non-real time.
Semua proses real-time berada pada prioritas yang lebih tinggi daripada proses normal. Linux mengimplementasikan prioritas waktu nyata sesuai dengan POSIX. Grafik di bawah ini mungkin memberikan gambaran tentang bagaimana proses dijadwalkan dengan prioritasnya.
Sekarang, kita dapat mengeluarkan perintah di bawah ini untuk memeriksa prioritas waktu nyata dari suatu proses. Di sini saya menggunakan anjing penjaga karena memiliki nilai bagus terdaftar sebagai -.
Ini adalah output perintah di atas. Seperti yang dapat kita lihat prioritas realtime adalah 99 yang merupakan prioritas setinggi mungkin.
Jadi sesuai pemahaman saya prioritas waktu nyata dapat mengambil nilai maksimum 99 dan tidak ada nilai bagus di atasnya. Itulah alasannya, kami mendapatkan hasil yang bagus - untuk pengawas dan proses sistem lainnya.
Referensi
http://oreilly.com/catalog/linuxkernel/chapter/ch10.html http://atipaday.wordpress.com/2008/08/19/atad-21-linux-process-priority-range/
sumber