@GladyshevMV

Каким образом можно уменьшить задержку в обработке сетевого пакета с данными, ядром линукса?

На моей целевой станции, крутится программное обеспечение, одним из компонентов которого является промышленный протокол обмена данными в реальном времени (ethercat).
Для того чтобы это работало мне необходимо соблюсти ряд условий, основным из которых является обеспечение этого реального времени операционной системой.
Прежде всего я поставил патч preempt_rt и отключил ряд функционала цпу, относящегося к энергофективности/виртаулизации/гипертрейдингу.
В этой части мне кажется я все сделал правильно и полученные максимальные значения задержек по ядрам цпу составляют 20-30 мкс (получено через cyclictest).

Однако при запуске я столкнулся с некоторой нестабильностью работы, а именно периодические задежрки в отправке/получении пакета системой (нормальное время отклика устройств у меня составляет 70-80 мкс, а при задержке может доходить до 1500 мкс). Ну и т.к. мой протокол является механизмом реального времени, то все начинает падать в ошибках.
Так же стоит отметить, что частота таких сбоев зависит от загрузке цпу - чем больше она, тем чаще происходят ошибки.

В мануале к протоколу имеется некоторое описание, как правильно настраивать приоритеты прерываний, но выполненные мной настройки не дали видимого эффекта.
Кроме того я попробовал пересобрать ядро с увеличенным таймером - 1000Гц (вместо 250) - эффекта не дало.
Так же попробовал поиграться с параметрами swap и выставил vm.swappiness = 0 и тоже не увидел разницы.

Прошу уточнить:
Правильно ли я думаю, что моя проблема в настройки связи между хардварными и софтварными прерываниями?
Какие настройки приоритетов прерываний стоит задать в многоядерной системе?
Каким образом можно определить конкретную причину, задержек в обработке прерываний?

Версия ядра:
4.19.135-rt60 #1 SMP PREEMPT RT Sun Aug 7 00:06:45 +05 2022 x86_64 x86_64 x86_64 GNU/Linux

CPU - Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz
Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы