pthread_join pthread_create pthread c linux operating-system pthreads scheduled-tasks

pthread_create - ¿Cómo se calculan las prioridades dinámicas de los hilos en Linux 2.6.x?



pthreads php (1)

Citando de esto

El planificador de Linux 2.6.8.1 recompensa las tareas vinculadas con E / S y castiga las tareas vinculadas a la CPU al agregar o quitar de la prioridad estática de una tarea. La prioridad ajustada se denomina prioridad dinámica de una tarea, y es accesible a través de la variable prio de la tarea (por ejemplo, p-> prio donde p es una tarea). Si una tarea es interactiva (el término del planificador para E / S enlazado), su prioridad aumenta. Si es un cerdo de CPU, recibirá una penalización. En el planificador de Linux 2.6.8.1, la bonificación de máxima prioridad es 5 y la penalización de máxima prioridad es 5. Como el planificador usa bonificaciones y penalizaciones, se respetan los ajustes a la prioridad estática de una tarea. Un cerdo de CPU leve con un buen valor de -2 podría tener una prioridad dinámica de 0, lo mismo que una tarea que no es ni una CPU ni un cerdo de E / S.

Siento que esta es una buena explicación. La prioridad se calcula en función de si es un subproceso enlazado a la CPU o un enlazado de E / S. Y con respecto a lo que mencionas en la pregunta, gain priority by using less of CPU es más bien ganar prioridad por ser interactivo (E / S enlazado). Espero que este extracto responda tu consulta ...

Un subproceso (o tarea) perderá prioridad dinámica al usar una gran cantidad de CPU y obtener prioridad al usar menos CPU. ¿Cómo se calculan exactamente estas prioridades para n hilos (usando la política de programación normal SCHED_OTHER)?