У нас есть сетевая карта Intel 82598EB 10GBE. Сетевая нагрузка состоит из множества пакетов UDP небольшого размера. Чтобы смоделировать DDoS, с другого сервера мы отправили небольшой UDP-пакет со скоростью ~ 100 тыс. Пакетов в секунду (всего лишь несколько Мбит полосы пропускания). Когда мы это делаем,% soft CPU загружается до 100%, что делает сервер непригодным для использования и отбрасывает пакеты.
Ядро 3.8.5, ixgbe 3.13.10. Мы уже сделали некоторые настройки для снижения частоты прерываний (rx-usecs: 300), но не решили проблему. Есть ли способ проверить, почему softirq использует так много ЦП, даже если частота прерываний невысока?
Спасибо!
Я знаю, что это старое; но я в основном отвечаю пользователям, которые приходят сюда с похожими проблемами.
Есть несколько способов проверить прерывания:
cat /proc/interrupts
записывает прерывания на ЦП и устройство ввода-вывода.grep cpu /proc/stat
столбцы 6 и 7 содержат irq
и softirq
статистика.top
и htop
; наблюдать si
и если вы измените htop на расширенный режим отображения для процессоров, вы увидите si
и hi
.sysstat
; чтобы получить конкретные данные о прерывании, см. sar -I XALL
.perf
.Поскольку это, скорее всего, проблема с драйвером (или сетевая карта не работает), я бы проверил наличие overruns
или errors
по интерфейсу; если их нет, посмотрите, есть ли обновление драйвера.