Kuyerekeza kwa magwiridwe antchito a network driver m'mitundu 10 yamapulogalamu

Gulu la ofufuza ochokera ku mayunivesite aku Germany losindikizidwa Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ kuyesa, pomwe mitundu 10 ya dalaivala wokhazikika wa 10-gigabit Intel Ixgbe (X5xx) makadi apakompyuta adapangidwa m'zilankhulo zosiyanasiyana zamapulogalamu. Dalaivala imayendetsa malo ogwiritsira ntchito ndipo ikugwiritsidwa ntchito ku C, Rust, Go, C #, Java, OCaml, Haskell, Swift, JavaScript ndi Python. Polemba kachidindo, cholinga chachikulu chinali kukwaniritsa ntchito yabwino kwambiri, poganizira za chinenero chilichonse. Zosankha zonse ndizofanana pamachitidwe ndipo zimakhala ndi mizere pafupifupi 1000 yamakhodi. Zotukuka za polojekiti kufalitsa pansi pa layisensi ya BSD.

Mtundu wa Rust wa dalaivala udakhala woyandikana kwambiri ndi woyendetsa chilankhulo cha C. Pansi pa katundu ndi kutumiza nthawi yomweyo midadada ya mapaketi 32, dalaivala dzimbiri anali kumbuyo pang'ono, koma mu mayesero ndi mapaketi oposa 32 pa chipika, liwiro anali pafupifupi sanali osiyana ndi dalaivala C ndi anasonyeza ntchito pa mlingo wa processing 28 miliyoni. mapaketi pamphindi pa seva yokhala ndi Xeon CPU E3-1230 v2 3.3 GHz.

Kuyerekeza kwa magwiridwe antchito a network driver m'mitundu 10 yamapulogalamu

Gawo lotsatira pakuchita bwino linali lotanganidwa ndi madalaivala a Go ndi C # zilankhulo, zomwe zidawonetsa zotsatira zapafupi (woyendetsa Go adapambana pamayeso okhala ndi mapaketi mpaka 16, ndipo adayamba kutaya pang'ono pamayeso okhala ndi mapaketi opitilira 16. mu block). Ndi mapaketi 256 pa block iliyonse, magwiridwe antchito apamwamba a dalaivala wa C # anali pafupifupi mapaketi 28 miliyoni pa sekondi iliyonse, ndipo dalaivala wa Go anali pafupifupi mapaketi 25 miliyoni pamphindikati.

Chotsatira, ndi zotsatira zapafupi, anali madalaivala a
Java, OCaml ndi Haskell, zomwe zinali zitatsala pang'ono kutsalira pazomwe zidaganiziridwa kale ndipo sanathe kugonjetsa mapaketi 12 miliyoni pa bar sekondi iliyonse. Madalaivala a Swift ndi JavaScript adawonetsa kuchepa kwakukulu, kutha kukonza mitsinje pamlingo wa mapaketi 5 miliyoni pamphindikati.

Kusankhidwa kwapamwamba kunamalizidwa ndi dalaivala wa Python, yemwe adatha kupanga mapaketi 0.14 miliyoni okha pamphindikati. Kukhazikitsidwa kwa Python kunagwiritsidwa ntchito poyesa kuthamanga kwa omasulira popanda JIT komanso popanda kukhathamiritsa kwapadera (code idachitidwa pogwiritsa ntchito CPython 3.7 ndipo sinali yogwirizana ndi PyPy, koma zimadziwika kuti kukhathamiritsa kwa zosungirako zosungirako deta kumatha kusintha magwiridwe antchito pafupifupi nthawi za 10. ).

Kuphatikiza apo, kuyezetsa kwa latency kunachitika kuti awonetse mphamvu ya kusungitsa zinyalala komanso mphamvu ya otolera zinyalala. Kuyesedwa kunayesa latency pambuyo pake paketi iliyonse idatumizidwa ndi dalaivala poyerekeza ndi nthawi yeniyeni yomwe idatumizidwa. Atsogoleriwo anali akadali oyendetsa C ndi Dzimbiri, zotsatira zake zinali zosazindikirika chifukwa cha kutuluka kwa mapaketi 1 miliyoni pamphindi (pafupifupi 20 Β΅s). Dalaivala wa Go adachita bwino, kukhala kumbuyo pang'ono kwa atsogoleri komanso kukhalabe pamlingo wa 20 Β΅s. Dalaivala wa C # adawonetsa kuchedwa kwa pafupifupi 50 Β΅s.
Kuchedwetsa kotalika kwambiri kunawonetsedwa ndi madalaivala a JavaScript ndi Java (ma latencies opitilira 300 Β΅s).

Kuyerekeza kwa magwiridwe antchito a network driver m'mitundu 10 yamapulogalamu

Kafukufukuyu adachitidwa kuti awone kuthekera kopanga madalaivala ndi zida zamakina ogwiritsira ntchito m'zilankhulo zapamwamba kuposa C. Pakadali pano, 39 mwa mavuto 40 a kukumbukira mu Linux amagwirizana ndi madalaivala, kotero nkhani zogwiritsa ntchito chilankhulo chotetezeka komanso kusuntha madalaivala kuchokera mu kernel ndikupita kumalo ogwiritsa ntchito. khalani ofunikira ndipo opanga akuyesa kale mbali iyi (mwachitsanzo, Google yapanga stack ya TCP ya OS Fuchsia mu Go chinenero, CloudFlare kampani adalengedwa kukhazikitsidwa kwa protocol ya QUIC ku Rust, Apple yasuntha stack ya TCP pazida zam'manja kukhala malo ogwiritsa ntchito).

M'kati mwa ntchitoyo, adatsimikiza kuti chilankhulo cha dzimbiri ndiye woyenera kwambiri pakukula kwa madalaivala. Kuthekera kwa dzimbiri kumathetsa mavuto okhudzana ndi kasamalidwe ka kukumbukira kochepa pamtengo wa pafupifupi 2% mpaka 10% kutayika kwa magwiridwe antchito poyerekeza ndi madalaivala a C. Go ndi C # amaonedwanso kuti ndi oyenera kupanga zida zamakina nthawi yomwe sub-millisecond latency yoyambitsidwa ndi kusonkhanitsa zinyalala ndiyovomerezeka.

Source: opennet.ru

Kuwonjezera ndemanga