Несбалансированность на linux и отброшенные пакеты
Я изучаю сброшенные пакеты на двухъядерном четырехъядерном XEON-боксе под управлением Linux. Одна вещь, которую я вижу, это irqbalance, работающий в системе. У меня есть пара вопросов. Читая документы здесь, я думаю, я понимаю, как это должно работать, но одна вещь, которая кажется запутанной, заключается в следующем: "Текущая программа Linux irqbalance имеет несколько лет разработки и, к счастью, не знает идей Quad (или даже Dual) ядро или даже энергопотребление. Программа концептуально ближе к наивной балансировке, чем к интеллектуальному балансировщику прерываний ". Это, кажется, указывает на то, что существует старая и новая версия несбалансированности. Это тот случай? Как вы можете сказать, что работает на машине.
Кроме того, если моей целью является оптимизация обработки пакетов во время пакетов, хочу ли я запустить irqbalance или мне нужно вручную привязать сетевую карту к набору процессоров?
2 ответа
Одним из решений этой проблемы является использование комбинации отключения irqbalance, изоляции процессора и закрепления прерываний NIC на изолированном процессоре.
- Отключить несбалансированность. Это приведет к тому, что все прерывания будут на CPU0
- Изолируйте процессоры 1-3 с помощью параметра загрузки ядра "isolcpus=1-3"
- Вручную прикрепите прерывания для NIC к одному из изолированных процессоров (echo 'cpumask' . / Proc/irq//smp_affinity).
Это позволит сетевому контроллеру запускать свои IRQ на CPU, который не беспокоит случайные потоки ядра и IRQ от других аппаратных устройств.
Вот хорошее объяснение того, как прикрепить IRQ к определенному процессору.
https://cs.uwaterloo.ca/~brecht/servers/apic/SMP-affinity.txt
Под "текущим" подразумевается то, что было распространено, когда эта страница была написана пять лет назад или около того. Каждый современный дистрибутив Linux, который вы, вероятно, будете использовать, имеет современный, умный баланс. Вы пытаетесь решить проблему, которая очень, очень маловероятна.