LINUX.ORG.RU

Можно ли из потока ядра узнать, когда его переключит планировщик?

 


1

2

Я имею в виду, можно ли определить, что текущий квант времени потока близок к завершению и скоро должна произойти перепланировка? Как там отработает планировщик, понятное дело, предсказать невозможно.

можно ли определить, что текущий квант времени потока близок к завершению и скоро должна произойти перепланировка?

таймер + HZ. Только зачем это нужно - прерывания асинхронно приходят, тут явно каким-то говнокодом попахивает. Если нужен детерминизм - используйте RT-патч, потокам ядра так же как обычным можно назначить приоритет и его не вытеснит даже обработчик прерывания если он менее приоритетный.

anonymous
()
Ответ на: комментарий от Deleted

Задач состоит в отправке пакетов данных периодически через заданный промежуток времени. А этот промежуток времени меньше, чем тик планировщика.

zloy_starper ★★★
() автор топика
Ответ на: комментарий от zloy_starper

Задач состоит в отправке пакетов данных периодически через заданный промежуток времени.

Если время жестко задано, то пробуй RT.

/* Либо можно наваять на микроконтроллере (реализация только пула для входящих пакетов и их отправки через строго заданное время). Если временные промежутки настолько критично важны, то в этом случае это может быть простым решением. */

А этот промежуток времени меньше, чем тик планировщика.

На тик планировщика можно повлиять изменением CONFIG_HZ, насколько я помню.

Deleted
()
Ответ на: комментарий от Deleted

А правильно я понимаю, что если использовать поток SCHED_FIFO, то он вообще не будет прерываться, если нет других таких потоков с более высоким приоритетом?

zloy_starper ★★★
() автор топика
Ответ на: комментарий от anonymous

Тик планировщика можно полностью отключать при исполнении одного потока на ядре.

Каким образом? Каковы могут быть побочные последствия? Я так понимаю, что на других ядрах планировщик будет «тикать»?

zloy_starper ★★★
() автор топика
Ответ на: комментарий от zloy_starper

Почитай про NO_HZ_FULL, на одном ядре как минимум будет.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.