Цитирование Руководство по настройке производительности RedHat
3.3.7. Установка привязки прерывания
Запросы на прерывание имеют связанное свойство сродства smp_affinity, которое определяет процессоры, которые будут обрабатывать запрос прерывания. Чтобы повысить производительность приложения, назначьте привязку прерывания и привязку к одному и тому же процессору или процессорам на одном ядре. Это позволяет указанным потокам прерывания и приложения совместно использовать строки кэша.
У меня есть приложение, которое получает и обрабатывает большие объемы данных UDP. Если я хочу сократить время между прибытием UDP-пакета и полной обработкой пакета приложением, должен ли я назначить такое же соответствие сетевой карте, получающей пакеты, и приложению? Или я должен назначить им разные сходства? Мне кажется, что цитата выше предполагает первое, но я бы подумал, что второе может быть более полезным.
Любая помощь была бы замечательной.
Спасибо
Хотя только направленный тест может реально ответить на ваш вопрос, самый безопасный вариант - запускать IRQ и приложение на одном и том же процессоре / сокете, но на разных ядрах. Таким образом, доступная мощность ЦП максимизируется, и в то же время кэш L3, общий для всех последних серверов, обеспечивает быстрое совместное использование данных между IRQ и приложением.
Если вы действительно заинтересованы в уменьшении задержки между приемом и обработкой пакетов, вам следует настроить буфер пакетов вашего Ethernet-адаптера и параметры объединения IRQ.
Для этого вы можете использовать очень хороший ethtool:
ethtool -c
дать вам обзор настроек объединения пакетов по умолчанию, а ethtool -C
позволяют вам изменить их.ethtool -g
показывает настройки кольцевого буфера, а с ethtool -G
вы можете изменить их.