Lệnh đầy đủ bạn muốn là:
chrt -b 0 nice -n 19 ionice -c 2 -n 7 [command]
Các chrt
lệnh ngay từ đầu sẽ chuyển sang điều cần lớp lập kế hoạch lô, tương đương với thêm 0,5 đến giá trị tốt đẹp. Tùy chọn -n cho ionice là một ưu tiên đơn giản cho các tùy chọn thời gian thực ( -c 1
) và nỗ lực tốt nhất ( -c 2
), với các giá trị thấp hơn là mức ưu tiên cao hơn giống như các giá trị đẹp (nhưng trong phạm vi 0-7). Tuy nhiên, lệnh ionice không thực sự cần thiết, vì lớp lập lịch I / O và mức độ ưu tiên theo mặc định được lấy từ các tham số lập lịch CPU và nice -n 19
ngụ ý ionice -c 2 -n 7
.
Tuy nhiên, bạn có thể có được mức sử dụng tài nguyên tối thiểu tuyệt đối bằng cách đặt cả hai lớp lập lịch CPU và I / O ở chế độ chờ. Trong cả hai trường hợp, bộ lập lịch 'nhàn rỗi' không thực sự là bộ lập lịch nhàn rỗi và bạn vẫn có thể sử dụng tài nguyên, chỉ là mọi thứ sẽ có mức độ ưu tiên cao hơn.
Đối với lớp lập lịch CPU, điều này cũng sử dụng chrt
lệnh, mặc dù không cần nice
(ưu tiên phải được đặt thành 0
trong lớp lập lịch nhàn rỗi) và trông như thế này:
chrt -i 0 {command or PID}
Các nice
lệnh trên gương Linux phiên bản SVR4, có nghĩa là nó không thể thay đổi lớp lập kế hoạch, chỉ có giá trị tốt đẹp (mà cũng cư xử khác nhau trên Linux hơn cổ điển UNIX, nhưng đó là một chút OT). Vì các lớp lập lịch thay thế ban đầu là thời gian thực POSIX.1E SCHED_RR
và SCHED_FIFO
, lệnh để thiết lập các lớp lập lịch cuối cùng đã được gọi chrt
. Các -i
quy định cụ thể tùy chọn để sử dụng các SCHED_IDLE
lớp lịch
Đối với lớp lập lịch I / O, bạn sử dụng ionice
. Lệnh chính xác trông như thế này:
ionice -c 3 {command or PID}
Các -c
tùy chọn quy định cụ thể những gì lịch lớp để sử dụng, và 3 là số cho lớp nhàn rỗi. Lưu ý rằng tùy thuộc vào bộ lập lịch I / O khối nào đang được sử dụng, điều này có thể không thực sự ảnh hưởng đến bất cứ điều gì. Cụ thể, bộ lập lịch noop
I / O hoàn toàn không hỗ trợ các lớp ưu tiên hoặc lên lịch, và tôi khá chắc chắn rằng bộ lập deadline
lịch (cả kế thừa và cả blk-mq) đều không.
Nếu bạn muốn thực hiện việc này theo chương trình, cho chương trình của riêng bạn hoặc điều chỉnh mọi thứ cho các quy trình khác, hãy kiểm tra các trang hướng dẫn cho các cuộc gọi sched_setscheduler
và ioprio_set
hệ thống (mặc dù cả hai đều đáng đọc nếu bạn chỉ muốn có thêm nền tảng).