Herkes, kare birleştirme (NAPI) gerektiğinde ve kare başına tek bir kesme yeterli olduğunda yanıt verebilecek bazı veri veya temel hesaplamaları var mı?
Donanımım: Çift Xeon E5530 dört çekirdekli işlemciye sahip IBM BladeServer HS22, Broadcom 5709 Gigabit NIC donanımı (MSI-X). Ana amaç Squid proxy sunucusudur. Anahtar güzel bir Cisco 6500 serisidir.
Temel sorunumuz yoğun zamanlarda (100 Mbps trafik, sadece 10.000 pps) bu gecikmenin ve paket kaybının artmasıdır. 2.6.38'e çok fazla ayar ve çekirdek yükseltmesi yaptım ve paket kaybını geliştirdi, ancak gecikme hala zayıf. Pingler sporadiktir; yerel Gbps LAN üzerinde bile 200 ms atlama. CPU / bellek yükü iyi olsa bile kalamar ortalama yanıtı 30ms'den 500 + ms'ye sıçrar.
Kesmeler zirve sırasında yaklaşık 15.000 / saniyeye çıkar. Ksoftirqd fazla CPU kullanmıyor; IRQ'ları (eth0 ve eth1 için her biri 8) tüm çekirdekler arasında dengelemek için irqbalance yükledim ama bu pek yardımcı olmadı.
Intel NIC'lerin hiçbir zaman bu tür sorunları yok gibi görünüyor, ancak blade sistemi ve sabit yapılandırma donanımı gerçeğini yapıyoruz, Broadcom'larla sıkıştık.
Her şey NIC'ye ana suçlu olarak işaret ediyor. Şu anda sahip olduğum en iyi fikir, hem gecikmeyi hem de iş hacmini yüksek tutarken kesintileri azaltmayı denemektir.
Bnx2 maalesef adaptif-rx veya tx'i desteklemiyor.
Adaptif kesmeleri vs NAPI iplik cevap kesme ılımlılık büyük bir görünümü üzerinde ancak hiçbir somut bilgi sağlar nasıl hesapla optimum ethtool kaynaşabilecek ayarları verilen geçici çözüm için için. Sadece deneme yanılmadan daha iyi bir yaklaşım var mı?
Yukarıda belirtilen iş yükü ve donanım yapılandırması NAPI'ye bile ihtiyaç duyuyor mu? Yoksa paket başına tek bir kesme ile mi yaşayabilmelidir?