tl; dr
Untuk memberikan jawaban yang pasti, tes lebih lanjut tampaknya diperlukan. Tetapi bukti kuat menunjukkan bahwa Linux adalah OS yang digunakan secara praktis di komunitas latensi sangat rendah, yang juga secara rutin memproses beban kerja Mpps. Itu tidak berarti tidak mungkin dengan Windows, tetapi Windows mungkin akan tertinggal sedikit, meskipun mungkin untuk mencapai angka Mpps. Tapi itu perlu pengujian untuk dipastikan, dan misalnya untuk mencari tahu berapa (CPU) biaya angka-angka itu dapat dicapai.
NB Ini bukan jawaban yang ingin saya terima. Hal ini dimaksudkan untuk memberikan siapa pun yang tertarik pada jawaban atas pertanyaan beberapa petunjuk tentang di mana kita berdiri dan di mana untuk menyelidiki lebih lanjut.
Len Holgate, yang menurut google tampaknya menjadi satu-satunya yang telah menguji RIO untuk mendapatkan lebih banyak kinerja dari jaringan Windows (dan menerbitkan hasilnya), hanya mengklarifikasi dalam komentar di blognya bahwa ia menggunakan kombo IP / Port tunggal untuk mengirim paket UDP.
Dengan kata lain, hasilnya harus agak sebanding dengan angka inti tunggal dalam pengujian di Linux (meskipun ia menggunakan 8 utas - yang, tanpa memeriksa kodenya, tampaknya berbahaya untuk kinerja saat menangani hanya satu aliran paket UDP dan tidak melakukan pemrosesan berat pada paket, dan ia menyebutkan hanya beberapa thread yang benar-benar digunakan, yang akan masuk akal). Itu meskipun dia mengatakan:
Saya tidak berusaha sekeras itu untuk mendapatkan kinerja maksimal hanya untuk membandingkan kinerja relatif antara API lama dan baru, jadi saya tidak teliti dalam pengujian saya.
Tapi apa yang melepaskan zona kenyamanan (relatif) dari IOCP standar untuk dunia RIO yang lebih kasar selain "berusaha keras"? Setidaknya sejauh satu aliran paket UDP yang bersangkutan.
Saya kira apa yang dia maksudkan - ketika dia mencoba berbagai pendekatan desain dalam beberapa tes RIO - adalah bahwa dia tidak misalnya memperbaiki pengaturan NIC untuk memeras sedikit performa terakhir. Yang, misalnya dalam hal Receive Buffer Size berpotensi memberikan dampak positif yang sangat besar pada UDP, menerima kinerja dan angka kehilangan paket.
Namun masalahnya ketika mencoba untuk membandingkan hasilnya secara langsung dengan tes Linux / Unix / BSD lainnya adalah ini: Kebanyakan tes, ketika mencoba untuk mendorong batas "paket per detik", gunakan ukuran paket / bingkai sekecil mungkin, yaitu Ethernet bingkai 64 byte. Len menguji paket 1024 byte (-> frame 1070 byte), yang (terutama untuk UDP No-Nagle) dapat memberi Anda angka "bit per detik" yang jauh lebih tinggi, tetapi mungkin tidak mendorong batas pps sejauh mungkin dengan paket yang lebih kecil . Jadi tidak adil untuk membandingkan angka-angka ini sebagaimana adanya.
Menyimpulkan hasil pencarian saya ke dalam Windows UDP menerima kinerja sejauh ini:
- Tidak ada yang benar-benar menggunakan Windows ketika mencoba mengembangkan latensi sangat rendah dan / atau aplikasi throughput tinggi, hari ini mereka menggunakan Linux
- Praktis semua tes kinerja dan laporan dengan hasil aktual (yaitu bukan hanya iklan produk) hari ini ada di Linux atau BSD (terima kasih Len karena telah menjadi pelopor dan memberi kami setidaknya satu titik referensi!)
- Apakah UDP (soket standar) di Windows lebih cepat / lebih lambat daripada di Linux? Saya belum tahu, harus melakukan pengujian sendiri
- Apakah UDP berkinerja tinggi (RIO vs netmap) pada Windows lebih cepat / lebih lambat daripada di Linux? Linux dengan mudah menangani kecepatan garis 10Gb penuh dengan satu inti pada 900MHz, Windows, dalam kasus terbaik yang diterbitkan mampu naik hingga 43% atau 492kpps untuk paket ukuran UDP besar 1024, yaitu angka bps untuk ukuran yang lebih kecil mungkin akan secara signifikan lebih buruk, meskipun angka pps mungkin akan naik (kecuali penanganan interupsi atau overhead ruang kernel lainnya adalah faktor pembatas).
Mengenai mengapa mereka menggunakan linux, itu pasti karena mengembangkan solusi yang melibatkan perubahan kernel seperti netmap atau RIO - diperlukan ketika mendorong kinerja hingga batasnya - hampir tidak mungkin dengan sistem tertutup seperti Windows, kecuali gaji Anda kebetulan keluar dari Redmond, atau Anda memiliki kontrak khusus dengan Microsoft. Itulah sebabnya RIO adalah produk MS.
Akhirnya, hanya untuk memberikan beberapa contoh ekstrim dari apa yang saya temukan sedang dan sedang terjadi di Linux:
Sudah 15 tahun yang lalu, beberapa menerima 680 kpps menggunakan 800 mHz Pentium III CPU, 133 mHz front-side bus pada NIC 1GbE. Sunting : Mereka menggunakan Click , sebuah router mode-kernel yang melewati banyak tumpukan jaringan standar, yaitu mereka "curang".
Pada 2013, Argon Design berhasil mendapatkan
centang untuk berdagang latensi serendah 35ns [nano detik]
Tapi mereka juga mengklaim itu
Sebagian besar kode komputasi yang ada untuk perdagangan hari ini ditulis untuk Linux pada arsitektur prosesor x86.
dan Argon menggunakan sakelar Arista 7124FX , yang (selain FPGA) memiliki OS
dibangun di atas kernel Linux standar.