Vendor whitepaper mengatakan: 5Mpps no prob. Saya sudah menabrak dinding di 120kpps. Di mana hambatannya?

17

Whitepaper HP pada QLogic (fka Broadcom) NetXtreme II adapter mereka , yang mencakup NIC spesifik yang saya uji, menyatakan (halaman 7) bahwa kinerja paket kecil mereka untuk paket hingga 256 byte / paket di atas 5.000.000 paket / detik.

Dalam pengujian saya dengan aplikasi di mana saya menonaktifkan semua pemrosesan kecuali bagian penerima UDP belaka, saya bisa mencapai 120.000 paket / detik saja. Paket-paket tersebut didistribusikan secara merata di lebih dari 12 grup multicast.

Saya perhatikan bahwa ada satu inti (masing-masing dari 12 core pada 2 soket) yang bebannya secara bertahap meningkat ketika saya menaikkan tingkat pengiriman UDP dan mencapai sekitar 120.000 . Tetapi saya tidak tahu apa yang inti itu lakukan dan mengapa. Ini bukan hambatan tunggal pada aplikasi saya, karena tidak masalah jika saya menjalankan satu instance aplikasi untuk semua grup multicast, atau 12 instance yang masing-masing menangani 1 grup multicast. Jadi hambatannya bukan aplikasi penerima saya.

MSI diaktifkan (diverifikasi melalui tampilan "sumber daya menurut jenis" di manajer perangkat ) dan RSS juga diaktifkan di pengaturan NIC, dengan 8 antrian. Jadi apa yang melekat pada satu inti itu? Semua fitur pembongkaran NIC saat ini aktif, tetapi mematikannya tidak membantu.

Jadi di mana kemacetan bisa terjadi?

Detail sistem:

  • ProLiant BL460c Gen9
  • Intel Xeon E5-2670 v3 (2 x 12 skor)
  • HP FlexFabric 10Gb 2-port 536FLB NIC
  • Windows 2012 R2
Eugene Beresovsky
sumber
2
Mungkin semua interupsi rx dan tx ditangani oleh inti yang sama. Saya tidak tahu banyak tentang windows tetapi harus ada beberapa afinitas SMP untuk mengatur untuk menyebarkan IRQ yang relevan secara merata.
Xavier Lucas

Jawaban:

13

RSS juga diaktifkan di pengaturan NIC, dengan 8 antrian.

Yang sayangnya tidak berarti bahwa RSS sedang digunakan, seperti

netsh int tcp show global

menunjukkan:

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : disabled

Setelah berjalan (btw tanpa me-reboot)

netsh int tcp set global rss=enabled

RSS mulai bekerja dan beban yang sebelumnya menumpuk pada satu inti yang buruk itu sekarang didistribusikan secara merata ke banyak inti pada salah satu dari 2 simpul NUMA.

Saya belum memverifikasi apakah itu akan memungkinkan saya untuk menangani beban Mpps yang diiklankan, tetapi langit-langit diangkat cukup untuk membandingkan apa yang saya butuhkan.

Eugene Beresovsky
sumber