Untuk tes pembandingan cepat, bagaimana nice dan ionice dapat digabungkan ke efek maksimum, yaitu untuk perintah untuk menggunakan sumber daya sesedikit mungkin (tanpa menganggur sama sekali)?
(Saya pikir ini sesuatu seperti `nice -n 19 ionice -c 2 [perintah], tetapi tidak yakin tentang ionice" -n "(classdata param), halaman manualnya samar tentang relevansinya.)
performance
nice
ionice
mahemoff
sumber
sumber
Jawaban:
Perintah lengkap yang Anda inginkan adalah:
The
chrt
perintah di awal akan beralih hal yang kelas penjadwalan batch, yang setara dengan menambahkan 0,5 dengan nilai bagus. Opsi -n untuk ionice adalah prioritas sederhana untuk opsi realtime (-c 1
) dan best-effort (-c 2
), dengan nilai yang lebih rendah menjadi prioritas yang lebih tinggi seperti nilai yang bagus (tetapi dalam kisaran 0-7). Namun, perintah ionice tidak sepenuhnya diperlukan, karena kelas penjadwalan I / O dan prioritas secara default berasal dari parameter penjadwalan CPU, dannice -n 19
tersirationice -c 2 -n 7
.Namun, Anda bisa mendapatkan penggunaan sumber daya minimal absolut dengan mengatur kelas penjadwalan CPU dan I / O agar tidak digunakan. Dalam kedua kasus, penjadwal 'idle' sebenarnya bukan penjadwal idle, dan Anda masih dapat menggunakan sumber daya, hanya saja semuanya akan memiliki prioritas lebih tinggi.
Untuk kelas penjadwalan CPU, ini juga menggunakan
chrt
perintah, meskipun tanpa perlunice
(prioritas harus diatur ke0
dalam kelas penjadwalan siaga), dan terlihat seperti ini:The
nice
perintah pada cermin Linux versi SVR4, yang berarti bahwa ia tidak dapat mengubah kelas penjadwalan, hanya bagus nilai (yang juga berperilaku berbeda pada Linux dari UNIX klasik, tapi itu OT bit). Karena kelas penjadwalan alternatif asli adalah POSIX.1E realtimeSCHED_RR
danSCHED_FIFO
, perintah untuk mengatur kelas penjadwalan akhirnya dipanggilchrt
. The-i
menspesifikasikan opsi untuk menggunakanSCHED_IDLE
kelas penjadwalanUntuk kelas penjadwalan I / O, Anda gunakan
ionice
. Perintah persisnya terlihat seperti ini:The
-c
pilihan menspesifikasikan apa penjadwalan kelas untuk digunakan, dan 3 adalah nomor untuk kelas menganggur. Perhatikan bahwa tergantung pada penjadwal I / O blok mana yang sedang digunakan, ini mungkin tidak benar-benar berdampak apa pun. Secara khusus,noop
penjadwal I / O tidak mendukung prioritas atau kelas penjadwalan sama sekali, dan saya cukup yakindeadline
penjadwal (baik yang lama, dan yang blk-mq) juga tidak.Jika Anda ingin melakukan ini secara terprogram, baik untuk program Anda sendiri, atau untuk menyesuaikan hal-hal untuk proses lain, lihat halaman manual untuk panggilan sistem
sched_setscheduler
danioprio_set
(meskipun keduanya layak dibaca jika Anda hanya ingin latar belakang yang lebih banyak juga).sumber
Dengan asumsi Anda tidak ingin perintah itu sepenuhnya menunggu orang lain selesai, jadi jangan sampai berpotensi menderita kelaparan sumber daya , barisnya adalah:
Karena ionice akan ditetapkan secara proporsional pada kernel Linux modern.
By the way
chrt -b0
tidak ada hubungannya dengan kebaikan, tetapi seberapa sering CPU akan melompat dari satu proses ke proses lainnya. Baris ini membuat waktu lebih lama untuk program batch untuk memanfaatkan cache dengan lebih baik, tetapi untuk perintah lain tidak ada gunanya. Seperti yang terlihat di sini .sumber