Lines Matching +full:si +full:- +full:en

1 .. include:: ../disclaimer-sp.rst
3 :Original: :ref:`Documentation/scheduler/sched-design-CFS.rst <sched_design_CFS>`
15 CFS viene de las siglas en inglés de "Gestor de tareas totalmente justo"
17 implementado por Ingo Molnar e integrado en Linux 2.6.23. Es el sustituto
18 del previo gestor de tareas SCHED_OTHER. Hoy en día se está abriendo camino
19 para el gestor de tareas EEVDF, cuya documentación se puede ver en
20 Documentation/scheduler/sched-eevdf.rst
22 El 80% del diseño de CFS puede ser resumido en una única frase: CFS
23 básicamente modela una "CPU ideal, precisa y multi-tarea" sobre hardware
26 "una CPU multitarea ideal" es una CPU (inexistente :-)) que tiene un 100%
28 velocidad, en paralelo, y cada una a 1/n velocidad. Por ejemplo, si hay dos
29 tareas ejecutándose, entonces cada una usa un 50% de la potencia --- es decir,
30 como si se ejecutaran en paralelo.
32 En hardware real, se puede ejecutar una única tarea a la vez, así que
35 de ejecución podría empezar en la CPU ideal multi-tarea descrita anteriormente.
36 En la práctica, el tiempo de ejecución virtual de una tarea es el
44 En CFS, el tiempo de ejecución virtual se expresa y se monitoriza por
45 cada tarea, en su valor de p->se.vruntime (en unidades de nanosegundos).
49 Un pequeño detalle: en hardware "ideal", en cualquier momento todas las
50 tareas pueden tener el mismo valor de p->se.vruntime --- i.e., tareas
54 La lógica de elección del tareas de CFS se basa en el valor de p->se.vruntime
56 p->se.vruntime más pequeño (i.e., la tarea que se ha ejecutado menos hasta el
58 en ejecución tan próximo a la "ejecución multitarea ideal del hardware" como
63 en inglés), multi-tarea y varias variantes del algoritmo para identificar
67 3. EL ÁRBOL ROJO-NEGRO
71 de datos para las colas de ejecución (en inglés "runqueues"), pero usa una
72 estructura de árbol rojo-negro (en inglés "red-black tree") ordenado cronológicamente
73 para construir un línea de ejecución en el futuro, y por eso no tiene ningún
77 CFS también mantiene el valor de rq->cfs.min_vruntime, el cual crece
79 las tareas en la cola de ejecución. La cantidad total de trabajo realizado
81 para situar las nuevas tareas en la parte izquierda del árbol tanto
84 El valor total de tareas ejecutándose en la cola de ejecución es
85 contabilizado mediante el valor rq->cfs.load, el cual es la suma de los
86 de esas tareas que están en la cola de ejecución.
88 CFS mantiene un árbol rojo-negro cronológicamente ordenado, donde todas las
90 p->se.vruntime. CFS selecciona la tarea más hacia la izquierda de este
92 se ponen en este árbol más y más hacia la derecha --- lentamente pero
100 p->se.vruntime. Una vez p->se.vruntime ha aumentado lo suficiente como
102 rojo-negro ordenado cronológicamente esta mantienen (más una cierta pequeña
104 que no se sobre-reserven tareas y perjudique a la cache), entonces la
106 para que se ejecute, y la tarea en ejecución es interrumpida.
113 noción de "ventanas de tiempo" de la forma en que tenía el gestor de
115 central ajustable (se ha de cambiar en CONFIG_SCHED_DEBUG):
126 fiftyp.c, thud.c, chew.c, ring-test.c, massive_intr.c todos trabajan
127 correctamente y no tienen impacto en la interacción y se comportan de la forma
136 carga, y ahora se usan iteradores en la gestión de módulos. El balanceo
144 - SCHED_NORMAL (tradicionalmente llamada SCHED_OTHER): Gestión de
147 - SCHED_BATCH: No interrumpe tareas tan a menudo como las tareas
153 - SCHED_IDLE: Esta política es más débil incluso que nice 19, pero
154 no es un gestor "idle" para evitar caer en el problema de la
158 SCHED_FIFO/_RR se implementan en sched/rt.c y son específicos de
161 El comando chrt de util-linux-ng 2.13.1.1. puede asignar cualquiera de
178 (por todos los 100 niveles de prioridad RT, en vez de las 140 que necesitaba
187 - enqueue_task(...)
189 Llamada cuando una tarea entra en el estado de lista para ejecución.
190 Pone la entidad a ser gestionada (la tarea) en el árbol rojo-negro
193 - dequeue_task(...)
196 mantener a la entidad gestionada fuera del árbol rojo-negor. Esto
199 - yield_task(...)
202 sysctl compat_yield esté activado; en ese caso, sitúa la entidad a gestionar
203 en la parte más hacia la derecha del árbol rojo-negro.
205 - check_preempt_curr(...)
207 Esta función comprueba si una tarea que ha entrado en el estado de
211 - pick_next_task(...)
215 - set_curr_task(...)
220 - task_tick(...)
238 CONFIG_CGROUP_SCHED destaca en conseguir exactamente eso. Permite a las
251 sobre este sistema de archivos: Documentation/admin-guide/cgroup-v1/cgroups.rst
254 "cpu.shares" es creado por cada grupo creado usado en el pseudo
259 # mount -t tmpfs cgroup_root /sys/fs/cgroup
261 # mount -t cgroup -ocpu none /sys/fs/cgroup/cpu