2015-10-01 2 views
3

В чем разница между планированием задержкой и пробуждением задержкойразницы между задержкой планирования и пробуждением задержки

а) выбрать процесс для запуска планировщика логик и как это латентное важно

б) Когда процесс забирается для запуска, но его еще не запускается, это латентность пробуждения. IMHO

Может кто-то помочь понять разницу?

+0

Что является источником этих вопросов? Это из учебника, реализации ядра или чего-то еще? – wallyk

ответ

0

В чем разница между задержкой планирования и временем ожидания пробуждения?

Возможно, это объясняется с ответами на другие ваши вопросы.

а) выбрать процесс для запуска планировщика логик и как это латентное важно

Представьте у вас есть две задачи, и они оба хотят работать. Один займет 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 (и память и т. Д.) Из состояния малой мощности до полной скорости.


Эти термины не имеют определенного определения, что я знаю, и вы должны смотреть на контекст, автор может использовать их. Идеи подобны в каждом конкретном случае, но конкретные детали могут отличаться. Часто это зависит от целей или прецедентов. Лицо, работающее только с кодом планировщика, вероятно, будет включать время контекста и накладные расходы алгоритма планирования. Задержка прерывания является для них отдельной проблемой. Однако для фиксированной встроенной системы с большей реактивностью в режиме реального времени задержка задержки прерывания для всей системы, и люди могут объединить их вместе.

Кроме того, многие люди (думают, что они) хотят тяжелого реального времени. Здесь важна задача. Однако часто задача с более низким приоритетом может ждать ожидания ввода-вывода. В этих случаях задание с более низким приоритетом может увеличить сквозным или свести к минимуму время для завершения рабочего процесса. Часто это касается примеров настольных компьютеров или серверов. В оптимальном сквозном режиме лучше всего иметь задачи, ожидающие ввода/вывода, поскольку это параллельно с временем доступа к оборудованию.

+0

В RT-тестировании есть что-то, что называется задержкой пробуждения. Я запутался, если он включает задержку планировщика – user970251

+0

Вы имеете в виду [rt-latency-howto] (http://people.redhat.com/williams/latency-howto/rt-latency-howto.txt)? В этом случае они ссылаются на пробуждение задачи из-за установленного таймера. Это просто прерывание + задержка планировщика. Термин «пробуждение» - это то, что использует инструмент тестирования RT-Linux * cyclictest *. Есть дополнительные задержки из-за cpufreq и других вещей, таких как * wakelocks * или что-то там, где есть Android-воплощение. Кто-то может назвать эту «латентность пробуждения». Это поможет вашему вопросу, если вы ссылаетесь на некоторые материалы в соответствии с ** wallyk **. –

+0

Для этого теста важно, какие относительные изменения в коде Linux делают с эталоном. Это, вероятно, не полезно для сравнения других ОС. Это именно то, чего хочет разработчик Linux RT. –