tl; Dr.
Kesin bir cevap vermek için daha fazla test gerekli görünüyor. Ancak durumdaki kanıtlar Linux'un Mpps iş yüklerini rutin olarak işleyen ultra düşük gecikme topluluğunda pratik olarak kullanılan işletim sistemi olduğunu gösteriyor. Bu, Windows ile imkansız olduğu anlamına gelmez, ancak Mpps sayılarına ulaşmak mümkün olsa da, Windows muhtemelen biraz geride kalacaktır. Ancak bunun test edilmesi gerekir ve örneğin bu sayıların ne (CPU) maliyetinin elde edilebileceğini bulmak için.
Not: Bu, kabul etmeyi düşündüğüm bir cevap değil. Bu soruya bir cevapla ilgilenen herkese nerede durduğumuz ve nerede daha fazla araştırma yapacağımızla ilgili bazı ipuçları vermek amaçlanmıştır.
Google'a göre, Windows ağından daha fazla performans elde etmek için RIO'yu test eden (ve sonuçları yayınlayan) tek kişi gibi görünen Len Holgate, blogunda yaptığı tek açıklamada tek bir IP / Port kombo kullandığını açıkladı UDP paketlerini göndermek için.
Başka bir deyişle, sonuçları Linux'taki testlerdeki tek çekirdekli rakamlarla biraz karşılaştırılabilir olmalıdır (8 iş parçacığını kullanıyor olmasına rağmen - kodunu henüz kontrol etmeden, sadece tek bir UDP paket akışını işlerken performans için zararlı görünüyor ve değil paketlerin ağır bir şekilde işlenmesini sağlar ve aslında sadece birkaç ipliğin kullanıldığından bahseder, bu da mantıklı olacaktır). Buna rağmen:
Sadece eski ve yeni API'lar arasındaki göreceli performansı karşılaştırmak için maksimum performans elde etmek için çok uğraşmıyordum ve bu yüzden testlerimde o kadar da iyi değildim.
Peki "daha fazla uğraşmak" dışında , daha kaba RIO dünyası için standart IOCP'nin (göreceli) konfor bölgesinden vazgeçen şey nedir ? En azından tek bir UDP paket akışı söz konusu olduğunda.
Ne anlama geldiğini tahmin ediyorum - RIO'nun çeşitli testlerinde çeşitli tasarım yaklaşımlarını denediği için - performansın son bitini sıkıştırmak için NIC ayarlarına ince ayar yapmamış olması. Bu, örneğin Alma Arabellek Boyutu durumunda , UDP alma performansı ve paket kaybı rakamları üzerinde büyük bir pozitif etkiye sahip olabilir.
Bununla birlikte, sonuçlarını doğrudan diğer Linux / Unix / BSD testleriyle karşılaştırmaya çalışırken sorun şudur: Çoğu test, "saniyedeki paketleri" sınırını zorlamaya çalışırken, mümkün olan en küçük paket / çerçeve boyutunu, yani Ethernet'i kullanır. 64 baytlık çerçeve. Len, 1024 baytlık paketleri (-> 1070 baytlık bir çerçeve) test etti (özellikle No-Nagle UDP için) size daha yüksek "saniye başına bit" rakamları verebilir, ancak daha küçük paketlerle pps sınırını zorlayamayabilir . Bu yüzden bu rakamları olduğu gibi karşılaştırmak adil olmaz.
Windows UDP'ye yönelik görevimin sonuçlarını özetlemek şu ana kadar performans alıyor:
- Kimse ultra düşük gecikme ve / veya yüksek verim uygulamaları geliştirmeye çalışırken Windows'u gerçekten kullanmıyor, bu günlerde Linux kullanıyor
- Hemen hemen tüm performans testleri ve gerçek sonuçlarla (yani sadece ürün reklamı değil) raporlar Linux veya BSD'de (öncü olduğunuz ve bize en az bir referans noktası verdiği için Len'e teşekkürler!)
- Windows'taki UDP (standart soketler) Linux'tan daha hızlı / daha yavaş mı? Henüz söyleyemem, kendi testimi yapmak zorunda kalırdım
- Windows'daki yüksek performanslı UDP (RIO vs netmap) Linux'tan daha hızlı / daha yavaş mı? Linux 900MHz, Windows'da tek bir çekirdek ile tam 10Gb hat hızını kolayca işler, yayınlanan en iyi durumda 1024 büyük UDP paket boyutu için% 43 veya 492kpps'ye kadar çıkabilir, yani daha küçük boyutlar için bps rakamları büyük olasılıkla önemli olacaktır. pps rakamları muhtemelen artacaktır (kesme işlemi veya başka bir çekirdek boşluk yükü sınırlayıcı faktör değilse).
Neden linux kullandıklarına gelince, bunun nedeni, netmap veya RIO gibi çekirdek değişikliklerini içeren (performans sınırlara zorlanırken gerekli) çözüm geliştirmenin, maaş çekleriniz Redmond'dan çıkmadığı sürece Windows gibi kapalı bir sistemle imkansız olduğu için olmalı, veya Microsoft ile özel bir sözleşmeniz var. Bu yüzden RIO bir MS ürünüdür.
Son olarak, Linux ülkesinde keşfettiğim ve olup bitenlere dair birkaç aşırı örnek vermek için:
Zaten 15 yıl önce, bazıları 1GbE NIC'de 800 mHz Pentium III CPU, 133 mHz ön veri yolu kullanarak 680kpps alıyordu . Düzenleme : Bunlar kullanıyorlardı tıklayın , çok standart ağ yığını atlar bir çekirdek modu yönlendirici, yani onlar "hile".
2013 yılında, Argon Tasarım yönetilen almak
35ns [nano saniye] kadar düşük ticaret gecikmelerini işaretleyin
Btw ayrıca iddia
Bugün ticaret için mevcut bilgi işlem kodunun büyük çoğunluğu Linux için x86 işlemci mimarileri üzerinde yazılmıştır.
ve Argon, Arista 7124FX anahtarını kullanıyor ( FPGA'ya ek olarak) bir işletim sistemine sahip
standart bir Linux çekirdeği üzerine inşa edilmiştir.