Chính sách lập lịch Linux mặc định là SCHED_OTHER
, không có mức độ ưu tiên nào khác ngoài mức nice
để tinh chỉnh bên trong chính sách.
Bạn sẽ phải thay đổi để một chính sách khác lịch sử dụng chức năng pthread_setschedparam
(xem thêm man sched_setscheduler
)
chính sách kế hoạch 'Normal': (từ sched_setscheduler(2)
)
SCHED_OTHER the standard round-robin time-sharing policy;
SCHED_BATCH for "batch" style execution of processes; and
SCHED_IDLE for running very low priority background jobs.
chính sách lập lịch trình thời gian thực :
SCHED_FIFO a first-in, first-out policy; and
SCHED_RR a round-robin policy.
Trong trường hợp của bạn, bạn có thể sử dụng SCHED_BATCH
vì điều này không yêu cầu quyền root.
Cảnh báo: việc sử dụng sai các chính sách lập lịch trong thời gian thực có thể treo hệ thống của bạn. Đó là lý do tại sao bạn cần quyền root để thực hiện loại thao tác này.
Chỉ cần chắc chắn về những gì máy của bạn có khả năng, bạn có thể sử dụng công cụ chrt
từ gói util-linux
.
Như một ví dụ:
$ chrt -m
SCHED_OTHER min/max priority : 0/0
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority : 1/99
SCHED_BATCH min/max priority : 0/0
SCHED_IDLE min/max priority : 0/0
Một cách để thải thời gian ít hơn (mà tôi thường sử dụng):
alias batchmake='time chrt --batch 0 make --silent'
Trong thời gian ở với quyền sử dụng, điều này đẩy các make
15% (trong tôi trường hợp).
Edit: giới thiệu nice
, SCHED_BATCH
, SCHED_IDLE
và chrt
công cụ. Cho chính xác ! :)
lại: 'SCHED_OTHER', điều này không hoàn toàn chính xác vì mức độ đẹp vẫn có hiệu lực. – Hasturkun
@ Hasturkun: bạn đúng là tinh chỉnh * đẹp *, là lời khuyên cho trình lên lịch (không phải là ưu tiên lên lịch!). Cảm ơn sự chính xác! – levif
bạn không thực sự cần quyền root, chỉ cần cài đặt các rlimits để prio tối đa bạn được phép thiết lập là> 0 – Spudd86