Хтось має якісь дані або основні розрахунки, які можуть відповісти, коли потрібна коалесценція кадру (NAPI) і коли достатньо одного переривання на кадр?
Моє обладнання: IBM BladeServer HS22, апаратне забезпечення Broadcom 5709 Gigabit NIC (MSI-X), з подвійними чотирьохядерними процесорами Xeon E5530. Основна мета - проксі-сервер Squid. Switch - це хороша серія Cisco 6500.
Наша основна проблема полягає в тому, що під час пік (100 Мбіт / с трафіку, лише 10 000 п / с) збільшується затримка та втрата пакету. Я багато зробив налаштування та оновлення ядра до 2.6.38, і це покращило втрати пакету, але затримка все ще погана. Пінги спорадичні; стрибки навіть до 200 мс в локальній Gbps LAN. Середня реакція кальмарів стрибає з 30 мс до 500 + мс, навіть якщо завантаження процесора / пам'яті добре.
Перерви піднімаються до близько 15 000 / секунду під час піку. Ksoftirqd не використовує багато процесора; Я встановив irqbalance, щоб збалансувати IRQ (по 8 для eth0 та eth1) у всіх ядрах, але це не дуже допомогло.
Intel NIC, здається, ніколи не має подібних проблем, але, маючи на увазі факт роботи лопатевої системи та обладнання фіксованої конфігурації, ми начебто застрягли з Broadcoms.
Все вказує на НІК як на головного винуватця. Найкраща ідея, яку я маю зараз, - спробувати зменшити переривання, зберігаючи як затримку низької, так і високу пропускну здатність.
На жаль, bnx2 не підтримує адаптивну-rx або tx.
Відповідь потоку NAPI vs Adaptive Interrupts надає велику оцінку модерації переривань, але не містить конкретної інформації про те, як обчислити оптимальні налаштування з'єднання ettool для даного вирішення. Чи є кращий підхід, аніж спроба та помилка?
Чи потрібне вищезазначене навантаження та конфігурація обладнання навіть NAPI? Або вона повинна жити на одному перериванні за пакет?