La politique d'ordonnancement par défaut de Linux est SCHED_OTHER
qui n'ont pas d'autre choix prioritaire qu'une nice
à modifier à l'intérieur de la politique.
Vous devrez changer pour un autre politique de planification en utilisant la fonction pthread_setschedparam
(voir aussi man sched_setscheduler
)
Politiques d'ordonnancement "normales" : (de 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.
Politiques d'ordonnancement en temps réel :
SCHED_FIFO a first-in, first-out policy; and
SCHED_RR a round-robin policy.
Dans votre cas, vous pouvez peut-être utiliser SCHED_BATCH
car cela ne nécessite pas les privilèges de Root.
Attention : Une mauvaise utilisation des politiques de planification en temps réel peut bloquer votre système. C'est pourquoi vous avez besoin des privilèges de Root pour effectuer ce type d'opération.
Juste pour être sûr de ce que votre machine est capable de faire, vous pouvez utiliser chrt
outil de util-linux
paquet.
A titre d'exemple :
$ 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
Un moyen de déchets moins de temps (ce que j'utilise souvent) :
alias batchmake='time chrt --batch 0 make --silent'
Tout en restant dans le cadre des privilèges de l'utilisateur, cela propulse la make
de 15% (dans mon cas).
Editar: présentation de nice
, SCHED_BATCH
, SCHED_IDLE
y chrt
outil. Pour la précision ! :)