La política de programación de Linux predeterminada es SCHED_OTHER
, que no tienen prioridad pero un nivel nice
para ajustar dentro de la política.
Vas a tener que cambiar a otra política programación usando la función pthread_setschedparam
(véase también man sched_setscheduler
)
políticas de planificación 'normal': (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.
políticas de planificación en tiempo real :
SCHED_FIFO a first-in, first-out policy; and
SCHED_RR a round-robin policy.
En su caso, puede usar SCHED_BATCH
ya que esto no requiere privilegios de root.
Advertencia: uso incorrecto de las políticas de programación en tiempo real puede bloquear su sistema. Es por eso que necesita privilegios de root para hacer este tipo de operación.
Solo para asegurarse de lo que su máquina es capaz de hacer, puede usar la herramienta chrt
del paquete util-linux
.
A modo de ejemplo:
$ 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
Una manera de residuos menos tiempo (que a menudo utilizo):
alias batchmake='time chrt --batch 0 make --silent'
Durante su estancia con los privilegios del usuario, esto impulsa la make
en un 15% (en mi caso).
Editar: introducir nice
, SCHED_BATCH
, SCHED_IDLE
y chrt
herramienta. Para precisión ! :)
re: 'SCHED_OTHER', esto no es del todo correcto, ya que el nivel bueno todavía tiene efecto. – Hasturkun
@Hasturkun: está justo ahí está el * nice * tweak, como un consejo para el programador (¡no una prioridad del planificador!). Gracias por su precisión! – levif
en realidad no necesita privilegios de root, solo necesita tener los rlimits establecidos para que el prio máximo que puede establecer sea> 0 – Spudd86