En los archivos de servicio systemd, uno puede configurar las siguientes opciones relacionadas con la programación (desde la systemd.exec
página del manual , corríjame si me equivoco):
Nice Establece el nivel agradable predeterminado (prioridad de programación) para los procesos ejecutados. Toma un número entero entre -20 (prioridad más alta) y 19 (prioridad más baja). Ver setpriority (2) para más detalles.
Cuál es el nivel agradable familiar. Parece que su efecto está 'subvertido' de alguna manera debido a la característica de 'grupo automático' de los últimos núcleos de Linux. Por lo tanto, las opciones a continuación pueden ser lo que realmente me gustaría establecer para que los procesos se comporten bien para mi experiencia de escritorio.
CPUSchedulingPolicy Establece la política de programación de la CPU para los procesos ejecutados. Toma uno de otro, lote, inactivo, fifo o rr. Ver sched_setscheduler (2) para más detalles.
CPUSchedulingPriority Establece la prioridad de programación de la CPU para los procesos ejecutados. El rango de prioridad disponible depende de la política de programación de CPU seleccionada (ver arriba). Para las políticas de programación en tiempo real, se puede utilizar un número entero entre 1 (prioridad más baja) y 99 (prioridad más alta). Ver sched_setscheduler (2) para más detalles.
CPUSchedulingResetOnFork Toma un argumento booleano. Si es cierto, las prioridades y políticas de programación de CPU elevadas se restablecerán cuando los procesos ejecutados se bifurcan, y por lo tanto no pueden filtrarse en procesos secundarios. Ver sched_setscheduler (2) para más detalles. Por defecto es falso.
Entiendo la última opción. De la explicación de los dos primeros deduzco que puedo elegir una política de programación y luego, dada esa política, una prioridad. No está del todo claro para mí qué debo elegir para qué tipo de tareas. Por ejemplo, ¿es seguro elegir 'inactivo' para tareas de copia de seguridad (relativamente intensivo de CPU, debido a la deduplicación), o es otro más adecuado?
En general, lo que busco es obtener una visión general comprensible de cada política, con cada una de sus prioridades e idoneidad para fines específicos. También la interacción con el nivel agradable es de interés.
Junto a la programación de la CPU, hay programación de E / S. Supongo que esto corresponde a ionice
(corrígeme si me equivoco).
IOSchedulingClass Establece la clase de programación de E / S para procesos ejecutados. Toma un número entero entre 0 y 3 o una de las cadenas ninguna, en tiempo real, mejor esfuerzo o inactivo. Ver ioprio_set (2) para más detalles.
IOSchedulingPriority Establece la prioridad de programación de E / S para los procesos ejecutados. Toma un número entero entre 0 (prioridad más alta) y 7 (prioridad más baja). Las prioridades disponibles dependen de la clase de programación de E / S seleccionada (ver arriba). Ver ioprio_set (2) para más detalles.
Aquí vemos la misma estructura que con la programación de la CPU. Estoy buscando el mismo tipo de información también.
Para todas las opciones de 'Programación', las páginas de manual referidas no son lo suficientemente claras para mí, principalmente al traducir cosas a un punto de vista de usuario de escritorio algo inclinado técnicamente.
nice
aplica el valor).