Ядро Linux: целевая задержка против минимальной гранулярности
В контексте планировщика CFS ядра Linux, каковы наиболее важные различия между целевой задержкой и минимальной гранулярностью.
Или как мы определяем целевую задержку и минимальную гранулярность.
- Математическое объяснение высоко ценится.
1 ответ
как мы определяем целевую задержку и минимальную гранулярность.
Из "Разработка ядра Linux" Робертом Лавом:
1)
CFS устанавливает цель для своего приближения к "бесконечно малой" продолжительности планирования в идеальной многозадачности. Эта цель называется целевой задержкой.
2)
Обратите внимание, что по мере того, как число выполняемых задач приближается к бесконечности, доля выделенного процессора и назначенного временного интервала приближается к нулю. Поскольку в конечном итоге это приведет к неприемлемым затратам на переключение, CFS устанавливает минимальный уровень для временного интервала, назначенного каждому процессу. Этот минимальный уровень называется минимальной гранулярностью.
Таким образом, целевая задержка - это период, в течение которого все задачи очереди запуска планируются хотя бы один раз. А минимальная степень детализации - это минимальное время, в течение которого задаче будет разрешено запускаться на процессоре, прежде чем она будет исключена.
Рекомендации:
- http://oakbytes.wordpress.com/2012/06/06/linux-scheduler-cfs-and-latency/
- http://doc.opensuse.org/products/draft/SLES/SLES-tuning_sd_draft/cha.tuning.taskscheduler.html
- http://www.google.ru/search?q=Robert+Love+Linux+Kernel+development&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a&channel=sb&gfe_rd=cr&ei=qZcQVIyeCMaA8Ab7wYGYBw