Я читал о планировщике ядра Linux и CFS в ядре. Я столкнулся с vruntime (виртуальная среда выполнения), которая является основной концепцией планировщика CFS. Я прочитал от «« Развитие ядра Linux », а также из других блогов в Интернете, но не смог понять основные вычисления за vruntime. Делает vruntime принадлежит к определенному процессу или относится к группе процессов с такими же хорошими значениями. Что такое весовой коэффициент и как он рассчитан? Я прошел через все эти понятия, но не мог понять. Также в чем разница между vruntime и * min_vruntime *?Что такое понятие vruntime в CFS
ответ
vruntime is per-thread; это член, вложенный в task_struct.
По существу, vruntime является мерой «времени выполнения» потока - количества времени, затраченного на процессор. Весь смысл КВПБ должен быть справедливым для всех; следовательно, альго-тип сводится к простой вещи: (среди задач в заданном runqueue) задача с наименьшим временем выполнения - это задача, которую большинство заслуживает запуска, поэтому выберите ее как «next». (Фактическая реализация выполняется с использованием rbtree для эффективности).
Принимая во внимание различные факторы - как приоритет, приятное значение, группы и т. Д. - вычисление vruntime не так прямолинейно, как простое приращение. Я бы предложил прочитать соответствующий раздел в "Professional Linux Kernel Architecture", Mauerer, Wrox Press - это объясняется очень подробно.
ПЛ см. Ниже краткую попытку обобщить некоторые из этих данных.
Другой ресурс: Documentation/scheduler/sched-design-CFS.txt
Краткое резюме - расчет vruntime: (по книге)
Большая часть работы выполняется в ядре/sched_fair.c: __ update_curr ()
Вызов таймера
обновление физическое и виртуальное время «текущее» только провел на процессоре
Для задач, которые выполняются с приоритетом по умолчанию, то есть, хорошее значение 0, физическое и виртуальное время, проведенное идентично
Не поэтому для задач с другими приоритетными (хорошими) уровнями; таким образом, вычисление vruntime зависит от приоритета тока с использованием весового коэффициента нагрузки
delta_exec = (без знака long) (теперь - curr-> exec_start); // ... delta_exec_weighted = calc_delta_fair (delta_exec, curr); curr-> vruntime + = delta_exec_weighted;
Пренебрегая некоторые округления и переполнения проверки, какие calc_delta_fair делает это вычислить значение, заданное по следующей формуле:
delta_exec_weighed = delta_exec * (NICE_0_LOAD/curr->load.weight)
Дело в том, что более важные задачи (с более низким красивым значением) будет иметь больший вес ; Таким образом, в соответствии с приведенными выше уравнениями, счетчик времени, учтенный для них, будет меньше (таким образом, они будут помещены влево слева на rbtree!).
vruntime - это виртуальная среда выполнения процесса, которая помогает отслеживать, сколько времени прошло процесс. Vruntime является членом структуры sched_entity, определенной в include/linux/sched.h
min_vruntime представляет собой минимальное время запуска cfs runqueue. Он представляет собой минимум всего времени выполнения процессов, запланированных на этом cfs runqueue. Min_vruntime является членом структуры cfs_rq, определенной в include/linux/sched.h
Цель min_vruntime - выбрать следующий процесс в runfe cfs для запуска. Чтобы быть справедливым во всех процессах, планировщик CFS выбирает процесс с минимальным временем выполнения для выполнения в первую очередь.
Ссылка включать/Linux/sched.h является http://lxr.free-electrons.com/source/include/linux/sched.h
- 1. Что такое понятие Array.map?
- 2. Что такое обратное понятие «уточнение»
- 3. CFS scheduler: изменить vruntime задачи, чтобы замедлить его
- 4. Что такое понятие "Управление памятью" в iOS?
- 5. Что такое понятие "Полное функциональное программирование"?
- 6. Что такое точное понятие «кухонная раковина» в программировании?
- 7. Что такое понятие "Окружающая среда" в инструменте Тип машинописи?
- 8. Что означает «абстрактное понятие»?
- 9. Что означает понятие переселения?
- 10. Ядро Linux Планировщик переменной «vruntime»
- 11. linux CFS schedular: если задание запланировано на основе vruntime, то как приоритет задачи используется для планирования
- 12. Что такое понятие степени на кривой B-сплайна?
- 13. Что такое понятие сущностей, которые не могут иметь диаграмму?
- 14. Что такое понятие «Только переменные должны передаваться по ссылке»?
- 15. Миграция из cfs: gridfs в cfs: s3
- 16. Понятие модулей в c
- 17. Что такое LGT в BASIC?
- 18. Что такое чистый редуктор?
- 19. Что такое mapmapping в плющом?
- 20. Что такое инъекция зависимостей?
- 21. Что такое «стек hog»
- 22. Что означает понятие «рабочий» при программировании?
- 23. DOM или DOT? Что более точное понятие?
- 24. Понятие косвенности
- 25. Понятие RecordReaders
- 26. входного файла метеор CFS
- 27. CFS scheduler: как узнать, какая задача назначена sched_entity?
- 28. Асимптотическое понятие: что такое n₀ в формуле, как мы находим константу
- 29. Понятие виртуального
- 30. Что такое фокусное пространство?
Какова цель min_vruntime? – iammurtaza
@iammurtaza: min vruntime (я беру перестраиваемое/proc/sys/kernel/sched_min_granularity_ns), как правило, (по крайней мере, на Ubuntu в последнее время) ~ 2,25 мс. Если этого не было, две задачи могут «пинг-понг» каждые несколько микросекунд включать и выключать процессор. Минимальная гарантия на пребывание на процессоре необходима для смягчения этого поведения. – kaiwan