GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo saber el intervalo de tiempo del programador de Linux?

CFS (que es el programador predeterminado para procesos) no tiene un intervalo de tiempo fijo, se calcula en tiempo de ejecución según la latencia objetivo (sysctl_sched_latency ) y el número de procesos en ejecución. El intervalo de tiempo nunca podría ser inferior a la granularidad mínima (sysctl_sched_min_granularity ).

El intervalo de tiempo estará siempre entre sysctl_sched_min_granularity y sysctl_sched_latency , que tienen un valor predeterminado de 0,75 ms y 6 ms respectivamente y están definidos en kernel/sched/fair.c.

Pero el intervalo de tiempo real no se exporta al espacio del usuario.


La cantidad asignada para un proceso en particular puede variar:

Puede ajustar "segmento" ajustando sched_latency_ns y sched_min_granularity_ns , pero tenga en cuenta que "rebanada" no es un cuanto fijo. También tenga en cuenta que las decisiones de preferencia de CFS se basan en un estado instantáneo. Es posible que una tarea haya recibido una "porción" completa (variable) de tiempo de CPU, pero la prioridad se activará solo si hay disponible una tarea más merecedora, por lo que una "porción" no es el "tiempo de CPU máximo ininterrumpido" que puede esperar que sea .. pero es algo similar.

Esto se debe a que Completely Fair Scheduler, el programador predeterminado de Linux, asigna una proporción del procesador a un proceso en lugar de un intervalo de tiempo fijo. Eso significa que el intervalo de tiempo de cada proceso es proporcional a la carga actual y ponderado por el valor de prioridad del proceso.

Para procesos en tiempo real de propósito especial que usan SCHED_RR, el intervalo de tiempo predeterminado se define en el kernel de Linux como RR_TIMESLICE en include/linux/sched/rt.h.

/*
 * default timeslice is 100 msecs (used only for SCHED_RR tasks).
 * Timeslices get refilled after they expire.
 */
#define RR_TIMESLICE            (100 * HZ / 1000)

Puedes usar sched_rr_get_interval() para obtener el intervalo SCHED_RR para un proceso SCHED_RR específico.


Linux
  1. Cómo probar la velocidad de carga del sitio web en Linux

  2. Linux:¿cómo encontrar la fecha de creación del archivo?

  3. Linux:¿cómo saber qué hacer con Grep en Dmesg?

  4. Cómo encontrar la IP de la puerta de enlace predeterminada en Linux

  5. Cómo programar tareas usando at en Linux

Cómo establecer o cambiar la zona horaria en Linux

Cómo cambiar el archivo de registro de Sudo predeterminado en Linux

Cómo cambiar el shell predeterminado en el sistema Linux

Cómo encontrar la fecha y hora de instalación del sistema operativo Linux

Cómo configurar la fecha y la hora en Linux

Cómo saber los grupos de un usuario de Linux