Как NOHZ=On влияет на do_timer в ядре Linux

В простом эксперименте я установил NOHZ=OFFи использовал printk, чтобы печатать, как часто Функция do_timerвызывается. На моей машине он вызывается каждые 10 мс.

Однако, если NOHZ=ON, то при вызове do_timerвозникает большое дрожание. В большинстве случаев он вызывается каждые 10 мс, но бывают случаи, когда он полностью не укладывается в сроки.

Я исследовал как do_timer, так и NOHZ. do_timer— это функция, отвечающая за обновление значения jiffies, а также за циклическое планирование процессов.

Функция NOHZ отключает таймеры высокого разрешения в системе.

Чего я не могу понять, так это того, как таймеры высокого разрешения могут влиять на do_timer? Даже если оборудование высокого разрешения находится в спящем режиме, постоянные часы более чем способны выполнять do_timerкаждые 10 мс. Во-вторых, если do_timerне выполняется, когда должен, это означает, что некоторые процессы не получают свой таймшер, когда они в идеале должны его получать. Поиск в Google показывает, что для многих людей многие приложения начинают работать намного лучше, когда NOHZ=OFF.

Короче говоря, как NOHZ=ONвлияет на do_timer?
Почему do_timerпропускает сроки?

19
задан Erwin Brandstetter 19 March 2012 в 19:24
поделиться