The nice
perintah memungkinkan Anda untuk mengatur prioritas penjadwalan ( "kebaikan") dari sebuah program. Pada semua sistem mirip Unix yang saya gunakan, kebaikan ditentukan oleh berbagai bilangan bulat, di mana -20 adalah prioritas penjadwalan yang paling menguntungkan, 0 adalah default, dan 19 adalah yang paling tidak menguntungkan.
Memiliki 0 sebagai standarnya sudah cukup intuitif, tetapi mengapa -20 dan 19 dipilih sebagai titik akhir kisaran? Mengapa tidak -128 dan 127, yang akan pas dengan byte 8-bit yang sudah ditandatangani? Atau mengapa tidak -100 hingga 100, yang lebih intuitif untuk manusia yang berpikiran desimal, atau serupa tetapi sedikit lebih ergonomis, -99 hingga 99? Apakah rentang -20 hingga 19 dipilih secara sewenang-wenang, atau apakah ada kaitannya dengan internal scheduler yang nice
awalnya berinteraksi? (Saya mengerti bahwa tidak ada hubungan seperti itu hari ini, setidaknya untuk Linux, yang penjadwal menggunakan prioritas dalam kisaran 0 hingga 139. Namun, saya tertarik pada alasan historis kisaran -20 hingga 19).
sumber
min(127, (recent CPU usage on a scale of 0 to 15) + 50 + pp->p_nice - 20
), dan prioritas <25 dicadangkan untuk proses melakukan hal-hal yang tidak pernah terputus. Jadi kebaikan harus semacam jangkauan terbatas.Jawaban:
Tingkat kebaikan internal adalah 0-39, tetapi kenaikannya positif atau negatif. Sumber . Jadi jawabannya adalah bahwa angka-angka (positif dan negatif) yang diterima oleh
nice
perintah adalah apa yang membuat Anda dari 20, tingkat default, ke mana saja di kisaran 0-39.Jadi mengapa 0-39? Kisaran spesifik adalah apa yang berhasil dalam implementasi asli desainer. Alasan nilai yang lebih positif lebih bagus adalah bahwa tingkat yang bagus ditambahkan ke penggunaan CPU baru-baru ini dalam menentukan prioritas. Untuk memberikan penjadwalan round-robin perkiraan, kernel melacak berapa banyak CPU setiap proses telah dibakar baru-baru ini dan beralih ke proses yang belum memiliki banyak. Semakin tinggi level yang bagus, semakin banyak waktu CPU sepertinya proses telah, dan semakin sering penjadwal akan menempatkan proses itu untuk tidur atau membiarkannya tertidur. Lihat Desain Sistem Operasi UNIX oleh Maurice J. Bach, Prentice-Hall 1986, detik. 8.1 (8.1.4 untuk kebaikan khususnya). ISBN 0-13-201799-7.
sumber
Anda salah: Jika Anda menggunakan UNIX di mana antarmuka nice () masih masuk akal,
NZERO
adalah nilai bagus default danNZERO is 20
.Untuk membuatnya lebih jelas: Anda bertanya tentang perintah
nice
dan pada saat yang sama menyebutkan level absolut, tetapi perintah yang bagus tidak mengelola nilai absolut melainkan kenaikan relatif ke level saat ini. Dalam hal keadaan default, level yang bagusNZERO
adalah 20.Nilai yang bagus adalah 0..2 * NZERO-1 atau 0..39
Perhatikan bahwa sementara penjadwal UNIX default mungkin masih dapat melakukan sesuatu yang bermanfaat dengan nilai yang bagus, tidak ada artinya jika Anda menggunakan penjadwal khusus, misalnya penjadwal waktu nyata.
sumber
nice
perintah shell.