Поток планировщика linux фактическое время сна
Для моего приложения, работающего под MV Linux, у меня есть поток, который должен быть активным каждые 10 мс. Когда я использую ulseep/nanosleep/select, поток возвращается каждые 20 мс. С какими параметрами ядра мне нужно поиграться, чтобы изменить это поведение? Спасибо Рафи
1 ответ
Linux не является операционной системой реального времени. Там нет никакой гарантии о точности сна. Когда вы звоните sleep
поток приостановлен и не может быть запущен, пока не истечет запрашиваемая продолжительность. Когда он снова запускается, планировщик должен запустить поток снова, когда будет доступно некоторое время выполнения.
Интервал между событиями планирования определяется параметром компиляции ядра CONFIG_HZ
, Например, когда CONFIG_HZ=250
(по умолчанию), события планирования запускаются каждые 1 с /250 Гц = 4 мс. Поэтому, когда ваш поток снова может быть запущен, может пройти до 4 мс до его фактического возобновления, и еще 4 мс, если ваш поток не имел наивысшего приоритета в данный момент и т. Д.