Saat berjalan top
, saya bisa melihat output contoh ini (disingkat):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4586 ipc-adm+ 20 0 1303900 605152 92844 S 30,6 29,3 3:52.88 firefox
3985 ipc-adm+ 20 0 258588 124508 63072 S 12,2 6,0 0:40.04 compiz
3092 root 20 0 172392 56164 25980 S 6,1 2,7 0:30.13 Xorg
Ada dua nilai yang saya minati: PR
(Prioritas) dan NI
(Kesalehan).
Jika saya mengerti apa yang sudah saya temukan dengan benar, keduanya menentukan berapa banyak waktu CPU suatu proses akan berbeda dengan proses lainnya. Tapi apa perbedaan antara nilai-nilai itu?
Bisakah Anda juga menjelaskan bagaimana memanipulasi nilai-nilai dari suatu proses dan dalam keadaan apa ini mungkin berguna?
sumber
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?pr
20, jadi sama, tugas satu memilikini
0 dan tugas dua memilikini
20, jadi, ini berarti bahwa tugas dua akan menyerahkan sumber daya untuk tugas satu karena itu adalahnicer
Apa Prioritas dan Mengapa Saya Harus Peduli?
Ketika berbicara tentang proses, prioritas adalah tentang mengatur waktu prosesor. Prosesor atau CPU seperti juggling manusia beberapa tugas pada saat yang sama. Kadang-kadang kita dapat memiliki ruang yang cukup untuk melakukan beberapa proyek. Terkadang kita hanya bisa fokus pada satu hal pada satu waktu. Di lain waktu, sesuatu yang penting muncul dan kami ingin mencurahkan seluruh energi kami untuk menyelesaikan masalah itu sambil meletakkan tugas-tugas yang kurang penting di back burner.
Di Linux kita dapat menetapkan pedoman untuk diikuti CPU ketika sedang melihat semua tugas yang harus dilakukan. Pedoman ini disebut kebaikan atau nilai bagus. Skala kebaikan Linux berubah dari -20 ke 19. Semakin rendah angkanya, semakin prioritas tugas itu. Jika nilai kebaikannya tinggi seperti 19, tugas akan ditetapkan ke prioritas terendah dan CPU akan memprosesnya kapan pun ada kesempatan. Nilai bagus default adalah nol.
Dengan menggunakan skala ini kita dapat mengalokasikan sumber daya CPU kita dengan lebih tepat. Program dengan prioritas lebih rendah yang tidak penting dapat diatur ke nilai bagus yang lebih tinggi, sementara program prioritas tinggi seperti daemon dan layanan dapat diatur untuk menerima lebih banyak fokus CPU. Anda bahkan dapat memberi pengguna tertentu nilai bagus yang lebih rendah untuk semua prosesnya sehingga Anda dapat membatasi kemampuan mereka untuk memperlambat layanan inti komputer.
Sumber
Tetapkan prioritas untuk proses baru dengan
nice
, misuntuk proses yang ada
Untuk menetapkan prioritas yang
<0
Anda butuhkansudo
, misalnya:tetapi tidak untuk prioritas
>=0
Contoh
Contoh lainnya
Untuk memperbaiki semua proses yang berjalan untuk pengguna tertentu
sumber
renice 10
itu juga akan bekerja tanpasudo
, kan? Dan bisakah Anda menambahkan contoh untuk membuat semua proses pengguna tertentu lebih menyenangkan? Itu akan sangat berguna jika orang lain masuk pada saat yang sama dan menjalankan beberapa proses yang tidak perlu tetapi memakan sumber daya (seperti flash-game yang dijeda di Firefox, saudara kecil melakukan hal-hal seperti ...: - /)0
atau ... ada masalahnya;)ps
adalah :,PRI: 38, NI: -19
namun, dengantop
ituPR:1, NI -19
mengapa?Jawaban singkat
PR adalah level prioritas. Semakin rendah PR, semakin tinggi prioritas proses.
PR dihitung sebagai berikut:
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:
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:
Yang akan menampilkan daftar berikut:
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):
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:
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.
sumber