brintos

brintos / linux-shallow public Read only

0
0
Text · 2.9 KiB · d54736f Raw
59 lines · plain
1 2.. include:: ../disclaimer-sp.rst3 4:Original: Documentation/scheduler/sched-eevdf.rst5:Translator: Sergio González Collado <sergio.collado@gmail.com>6 7======================8Gestor de tareas EEVDF9======================10 11El gestor de tareas EEVDF, del inglés: "Earliest Eligible Virtual Deadline12First", fue presentado por primera vez en una publicación científica en131995 [1]. El kernel de Linux comenzó a transicionar hacia EEVPF en la14versión 6.6 (y como una nueva opción en 2024), alejándose del gestor15de tareas CFS, en favor de una versión de EEVDF propuesta por Peter16Zijlstra en 2023 [2-4]. Más información relativa a CFS puede encontrarse17en Documentation/scheduler/sched-design-CFS.rst.18 19De forma parecida a CFS, EEVDF intenta distribuir el tiempo de ejecución20de la CPU de forma equitativa entre todas las tareas que tengan la misma21prioridad y puedan ser ejecutables. Para eso, asigna un tiempo de22ejecución virtual a cada tarea, creando un "retraso" que puede ser usado23para determinar si una tarea ha recibido su cantidad justa de tiempo24de ejecución en la CPU. De esta manera, una tarea con un "retraso"25positivo, es porque se le debe tiempo de ejecución, mientras que una26con "retraso" negativo implica que la tarea ha excedido su cuota de27tiempo. EEVDF elige las tareas con un "retraso" mayor igual a cero y28calcula un tiempo límite de ejecución virtual (VD, del inglés: virtual29deadline) para cada una, eligiendo la tarea con la VD más próxima para30ser ejecutada a continuación. Es importante darse cuenta que esto permite31que la tareas que sean sensibles a la latencia que tengan porciones de32tiempos de ejecución de CPU más cortos ser priorizadas, lo cual ayuda con33su menor tiempo de respuesta.34 35Ahora mismo se está discutiendo cómo gestionar esos "retrasos", especialmente36en tareas que estén en un estado durmiente; pero en el momento en el que37se escribe este texto EEVDF usa un mecanismo de "decaimiento" basado en el38tiempo virtual de ejecución (VRT, del inglés: virtual run time). Esto previene39a las tareas de abusar del sistema simplemente durmiendo brevemente para40reajustar su retraso negativo: cuando una tarea duerme, esta permanece en41la cola de ejecución pero marcada para "desencolado diferido", permitiendo42a su retraso decaer a lo largo de VRT. Por tanto, las tareas que duerman43por más tiempo eventualmente eliminarán su retraso. Finalmente, las tareas44pueden adelantarse a otras si su VD es más próximo en el tiempo, y las45tareas podrán pedir porciones de tiempo específicas con la nueva llamada46del sistema sched_setattr(), todo esto facilitara el trabajo de las aplicaciones47que sean sensibles a las latencias.48 49REFERENCIAS50===========51 52[1] https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=805acf7726282721504c8f00575d91ebfd75056453 54[2] https://lore.kernel.org/lkml/a79014e6-ea83-b316-1e12-2ae056bda6fa@linux.vnet.ibm.com/55 56[3] https://lwn.net/Articles/969062/57 58[4] https://lwn.net/Articles/925371/59