В чем разница между задержкой планирования и временем ожидания пробуждения?
Возможно, это объясняется с ответами на другие ваши вопросы.
а) выбрать процесс для запуска планировщика логик и как это латентное важно
Представьте у вас есть две задачи, и они оба хотят работать. Один займет 5 минут, а остальные 4 минуты реального времени выполнения. Если вы запустите пинг-понг между ними в течение примерно восьми минут, то спор должен вращаться. Каждый коммутатор может принимать 100 с микросекунд. Если частота переключения высока, тогда накладные расходы могут быть значительным процентом. Если «тики» - 1 мс, тогда накладные расходы коммутатора составляют 10% (с временем переключения 100uS), и для выполнения четырехминутной задачи потребуется еще 9 минут, а оставшаяся секунда для второй задачи - еще на 9 минут.
Существуют различные типы латентности планирования. Одним из них является время переключения контекста. Это может быть связано с сохранением и восстановлением CPU, с плавающей запятой и другими регистрами, обновлением MMU (память увидела мое пользовательское пространство) и решает, на какую задачу переключиться. Кэши также могут быть сброшены в зависимости от обстоятельств и, возможно, миграции состояния на другой процессор. Это значение 100uS или время переключения, которое я использовал в качестве примера выше.
Другая проблема - это частота перераспределения. Вот как долго другой процесс может упредить кого-то почти равного приоритета. Оба числа будут конкурировать друг с другом. Т.е., 100uS может быть для очень медленного процессора, поэтому установка «тиков» на 10 мс уменьшит накладные расходы до 1% в приведенном выше примере. Однако регрессионная отзывчивость будет уменьшаться при уменьшении частоты переноса.
Некоторые люди включают задержку прерывания в Задержка планировщика. Возможно, вам понадобится задача, которая будет перенесена в случае некоторого важного события оборудования. Также существует множество различных алгоритмов для «выбора, кто работает». Вероятно, нет правильного ответа для «кто работает» в всех корпусах, поэтому существует много разных версий. Linux обычно использует 'completely fair scheduler' или CFS.
См: What is scheduler latency?
EETime article
LWN article
б) Когда процесс подобран для работы, но его не по-прежнему работать, время ожидания пробуждения.
Я думаю, что это «планируемая латентность», как я объяснял выше (но некоторые люди могут включать в себя больше предметов).
Опять же, термин wakeup может быть немного неоднозначным. Существуют различные виды «пробуждения». В современных системах с батарейным питанием процессор обычно помещается в состояния с низким энергопотреблением, когда нет работы. В этих случаях время пробуждения может добавить к задержке планирования. Это дополнительное время, чтобы получить CPU (и память и т. Д.) Из состояния малой мощности до полной скорости.
Эти термины не имеют определенного определения, что я знаю, и вы должны смотреть на контекст, автор может использовать их. Идеи подобны в каждом конкретном случае, но конкретные детали могут отличаться. Часто это зависит от целей или прецедентов. Лицо, работающее только с кодом планировщика, вероятно, будет включать время контекста и накладные расходы алгоритма планирования. Задержка прерывания является для них отдельной проблемой. Однако для фиксированной встроенной системы с большей реактивностью в режиме реального времени задержка задержки прерывания для всей системы, и люди могут объединить их вместе.
Кроме того, многие люди (думают, что они) хотят тяжелого реального времени. Здесь важна задача. Однако часто задача с более низким приоритетом может ждать ожидания ввода-вывода. В этих случаях задание с более низким приоритетом может увеличить сквозным или свести к минимуму время для завершения рабочего процесса. Часто это касается примеров настольных компьютеров или серверов. В оптимальном сквозном режиме лучше всего иметь задачи, ожидающие ввода/вывода, поскольку это параллельно с временем доступа к оборудованию.
Что является источником этих вопросов? Это из учебника, реализации ядра или чего-то еще? – wallyk