Hangi ağ yükleri kesilmelere karşı NIC yoklaması gerektirir?


18

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?


Zor bir soru olmalı ... Ödül için teşekkürler, @Holocryptic! Birleştirme için bazı "ethtool -c" ayarlarını denedim ancak henüz dikkate değer bir fark yok.
Wim Kerkhoff

Sorun değil. Ben sadece orada birkaç gün boyunca kalan gördüm ve iyi bir soru gibi görünüyordu. Umarım birisinin sizin için bir şeyleri vardır.
Holocryptic

Başka bir güncelleme ... Emulex 10 Gbps NIC'lerle IBM HS23 blade'lerine geçtik. Bu hafta saniyede 800.000 paketin üzerine çıktık, damla yok. IRQ'ların yükünü dengelemek için çok fazla ayar yapmak zorunda kaldık (Linux çekirdek sürücülerini yamalamak zorunda kaldık) ama şimdi fevkalade çalışıyor.
Wim Kerkhoff

Yanıtlar:


6

Anlamak için biraz okuma yapmamı sağlayan harika bir soru. Keşke bir cevabım olduğunu söyleyebilirim ... ama belki bazı ipuçları.

En azından "paket başına tek bir kesinti yaşayabiliyorsa" sorunuzu cevaplayabilirim. Bence cevabım evet, erişebileceğim çok yoğun bir güvenlik duvarına dayanıyor:

Sar çıkışı:

03:04:53 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:04:54 PM        lo     93.00     93.00      6.12      6.12      0.00      0.00      0.00
03:04:54 PM      eth0 115263.00 134750.00  13280.63  41633.46      0.00      0.00      5.00
03:04:54 PM      eth8  70329.00  55480.00  20132.62   6314.51      0.00      0.00      0.00
03:04:54 PM      eth9  53907.00  66669.00   5820.42  21123.55      0.00      0.00      0.00
03:04:54 PM     eth10      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:04:54 PM     eth11      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:04:54 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:04:54 PM      eth2 146520.00 111904.00  45228.32  12251.48      0.00      0.00     10.00
03:04:54 PM      eth3    252.00  23446.00     21.34   4667.20      0.00      0.00      0.00
03:04:54 PM      eth4      8.00     10.00      0.68      0.76      0.00      0.00      0.00
03:04:54 PM      eth5      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:04:54 PM      eth6   3929.00   2088.00   1368.01    183.79      0.00      0.00      1.00
03:04:54 PM      eth7     13.00     17.00      1.42      1.19      0.00      0.00      0.00
03:04:54 PM     bond0 169170.00 201419.00  19101.04  62757.00      0.00      0.00      5.00
03:04:54 PM     bond1 216849.00 167384.00  65360.94  18565.99      0.00      0.00     10.00

Gördüğünüz gibi, saniyede çok yüksek bir paket sayar ve bu makinede özel bir ettool ayarı yapılmamıştır. Oh ... Yine de Intel yongaseti. : \

Yapılan tek şey arayüz başına / proc / irq / XXX / smp_affinity ile manuel irq dengelemesiydi. Neden irqbalance yerine bu şekilde gitmeyi seçtiklerinden emin değilim, ama işe yarıyor gibi görünüyor.

Ayrıca sorunuzu cevaplamak için gerekli olan matematiği de düşündüm, ama çok fazla değişken olduğunu düşünüyorum. Yani ... özetlemek gerekirse, cevap hayır, burada sonuçları tahmin edebileceğinizi sanmıyorum, ancak yeterli veri yakalama ile daha iyi bir seviyeye geçebilmelisiniz.

Tüm bunları söyledikten sonra, içimdeki his, burada bir şekilde donanım bağlı olduğun ... bir tür bellenim veya birlikte çalışma hatası gibi.


Bazı yararlı arka plan burada: alexonlinux.com/…
DictatorBob

1
"Evet, sorun olmamalı" temel ifadesine katılıyorum, ancak nasıl problem yaşadıklarını görmek, muhtemelen bir bellenim veya sürücü sorunu. İş istasyonumu hiç ayarlamamıştım ve ter atmadan 65kips çekebiliyor; 15kips, modern bir CPU için hiçbir şey olmamalıdır. Sadece Broadcom NIC kullanıyorum, 5709 en yaygın olanı. Bu test Linux'ta değil FreeBSD'de gerçekleştirildi.
Chris S

Fikirler için teşekkürler. Ben irqbalance denedim ama fark etmedi. Daha fazla birleşme ayarlarıyla (ethtool -c) oynadım ama fark etmedim. Bıçaklardan biri aslında saniyede 120.000 paket iten yük dengeleyicisidir. NAT ve conntrack iptables yüklüyse ksoftirqd CPU kullanımının% 100'e gittiğini fark ettim. Bu modülleri kaldırın ve yükleri 0'a düşürün. Squid sunucularında (maks. 10.000 paket / sn), 17.000 (!!!) iptables kuralını temizledim ve gecikmeler derhal düştü. Bunu daha önce denediğimi sanıyordum, ama görünüşe göre değil ...
Wim Kerkhoff

3

Kesinlikle CPU, yonga seti ve veri yolu yetenekleri göz önüne alındığında, bu kadar düşük bir trafiğe kıyasla, herhangi bir kesinti yönetimine İHTİYACINIZ olması için hiçbir neden yoktur. 10Gbps NIC'lere sahip birden fazla RHEL 5.3 64 bit makinemiz var ve kesintileri hiç de kötü değil, bu 100 kat daha az.

Açıkçası sabit bir yapılandırmaya sahipsiniz (oldukça benzer olan HP'nin bıçaklarını kullanıyorum), bu yüzden Intel'ler için NIC'leri değiştirmek artık kolay bir seçenek ama söyleyeceğim şey, bu forumda ve başka yerlerde bir dizi benzer sorunu tespit etmeye başladım belirli Broadcom NIC ile. SE sitelerinin kendileri bu tür tutarsızlık ve Intel NIC'lere geçiş konusunda bazı problemler yaşadı.

Benim önereceğim tek bir blade seçmek ve bir makineye Intel tabanlı bir adaptör eklemek, açıkçası bir bağlantı eklemeniz veya IBM'in sinyali almak için ne çağırırsa çağırsın, ancak aynı yazılım kurulumunu denemelisiniz. NIC (mümkünse Broadcom'u devre dışı bırakın). Bunu test edin ve nasıl çalıştığınızı görün, tarif ettiğim şeyin birkaç bitlik ekstra donanıma ihtiyacı olduğunu biliyorum, ancak IBM temsilcinizin size memnuniyetle ödünç vereceğini hayal ediyorum. Kesin olarak bilmenin tek yolu bu. Lütfen ne bulduğunuzu bize bildirin, bu NIC'lerle ilgili bir sorun varsa, garip bir uç durum olsa bile gerçekten ilgileniyorum. Bir kenara, Intel ve Broadcom ile gelecek hafta tamamen ilgisiz bir şeyi tartışmak için buluşacağım ama kesinlikle onlarla tartışacağım ve ilgilendiğim bir şey bulup bulamayacağımı size bildireceğim.


1

Kesmelerle ilgili soru, bunların genel sistem performansını nasıl etkilediğidir. Kesmeler kullanıcı ve çekirdek arazi işlemeyi önleyebilir ve çok fazla CPU kullanımı göremeseniz de, çok fazla bağlam geçişi meydana gelir ve bu büyük bir performans vuruşu. Sütunu, kesmeleri ve saniye başına bağlam anahtarlarını (kesmeler saati içerir, böylece ağırlık vermeniz gerekir) kullanabilir vmstatve kontrol edebilirsiniz .systemcs


1

Kısa doğrudan cevap:

Yoklamayı etkinleştirirseniz, bağlam anahtarlarını (normalde kesintiler nedeniyle) şu an ne olursa olsun (sizin durumunuzda 15kips) önceden belirlenmiş bir sayıya (genellikle 1k ila 2k) düşürürsünüz.

Şu anda önceden belirlenmiş bir sayının üzerinde trafiğiniz varsa, yoklamayı etkinleştirerek daha iyi yanıt sürelerine sahip olmalısınız. Bunun tersi de doğrudur. Bağlam anahtarları performansı etkilemediği sürece bunun "gerekli" olduğunu söyleyemem.


1

Takip etmek için: NAT ve conntrack modülleri yüksüz ve en aza indirgenmiş iptables kural seti ile müthiş bir performans elde ederiz. IPVS yük dengeleyici 900 Mbps / 150 kpps'den fazla hız yaptı. Bu hala aynı Broadcom bnx2 yonga setlerini kullanırken.

Sonuç olarak: kesme işlemi iyi görünüyor ve 2.6.38 / 3.0.x çekirdeği olan Debian için varsayılanlar kabul edilebilir bir performans sergiliyor gibi görünüyor.

Kesinlikle, standart Debian paketlerini kullanabilmemiz için Intel NIC'leri kullanmayı tercih ederim. Özgür olmayan bnx2 ürün yazılımı ile mücadele etmek büyük bir zaman kaybı oldu.


Sadece bir güncelleme daha. Son zamanlarda performans, belirgin bir sebep olmadan tekrar düşüyordu. Önceki tüm optimizasyonları başarıyla gözden geçirdik. Intel NIC'ler hala ekonomik bir seçenek değildir (yeni arabağlantılara, 10GB anahtarlara, vb. 30-40 $ yatırım). AMA, hala bppy bx2x2 kullanan ancak daha yeni bellenim içeren bazı yeni IBM HS22 blade'leri bulduk. Performans çok daha iyi - 150.000 paket / sn bariyeri kırdık.
Wim Kerkhoff
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.