CFS
não possui timeslices "na forma como o agendador anterior tinha".
Em CFS
a timeslice é basicamente a duração entre comutadores consecutivos para conceder tempo de execução de CPU ao mesmo encadeamento. Isso lhe dá duas opções:
-
Todos os seus threads têm tempo suficiente para executar pelo menos
min_granularity_ns
dentro de umlatency_ns
. Então, seutimeslice = scheduling period * (task's weight/total weight of tasks in the run queue)
-
Há muitos encadeamentos para caber no
latency_ns
, para que seus timeslices aumentem para acomodar mais encadeamentos que desejam executar de acordo comtimeslice = number_of_running_tasks * sched_min_granularity_ns
É por isso que CFS
representa um Completamente Fair Scheduler, pois não exclui os segmentos com prioridades mais baixas, mas estende indiscriminadamente os timeslices para todos.