Ukuthelekisa ukusebenza komqhubi womnatha kwiinguqulelo kwiilwimi ezili-10 zokucwangcisa

Iqela labaphandi abavela kwiiyunivesithi zaseJamani ipapashiwe iziphumo umfuniselo, Ngexesha apho iinguqulelo ezili-10 zomqhubi oqhelekileyo we-10-gigabit Intel Ixgbe (X5xx) amakhadi womnatha aphuhliswe kwiilwimi ezahlukeneyo zokucwangcisa. Umqhubi uqhuba kwindawo yomsebenzisi kwaye uphunyezwe kwiC, Rust, Hamba, C #, Java, OCaml, Haskell, Swift, JavaScript kunye nePython. Xa kubhalwa ikhowudi, eyona nto kugxilwe kuyo ibikukufumana owona msebenzi ubalaseleyo, kuthathelwa ingqalelo iimpawu zolwimi ngalunye. Zonke iinketho ziyafana ekusebenzeni kwaye zibandakanya malunga nemigca ye-1000 yekhowudi. Uphuhliso lweprojekthi usasazeko phantsi kwelayisensi ye-BSD.

Inguqulo ye-Rust yomqhubi yajika isondele kakhulu ekusebenzeni kumqhubi wereferensi ngolwimi lwe-C. Ngaphantsi komthwalo ngokuthunyelwa ngaxeshanye kweebhloko zeepakethi ze-32, umqhubi we-Rust wayesemva kancinci, kodwa kwiimvavanyo ezingaphezulu kweepakethi ezingama-32 kwibhloko nganye, isantya sasingahlukanga kumqhubi we-C kwaye wabonisa ukusebenza kwinqanaba lokusetyenzwa kwezigidi ezingama-28. iipakethe ngesekhondi kumncedisi nge Xeon CPU E3-1230 v2 3.3 GHz.

Ukuthelekisa ukusebenza komqhubi womnatha kwiinguqulelo kwiilwimi ezili-10 zokucwangcisa

I-niche elandelayo ngokwemigaqo yokusebenza yayihlaliswe ngabaqhubi kwiilwimi ze-Go kunye ne-C #, ezibonise iziphumo ezisondeleyo (umqhubi we-Go uphumelele kwiimvavanyo kunye neebhloko ukuya kwiipakethi ze-16, kwaye waqala ukulahlekelwa kancinci kwiimvavanyo kunye neepakethi ezingaphezu kwe-16. kwibhloko). Ngeepakethe ezingama-256 kwibhloko nganye, ukusebenza okuphezulu komqhubi we-C# bekumalunga ne-28 yezigidi zeepakethi ngesekhondi, kwaye umqhubi we-Go ubemalunga ne-25 yezigidi zeepakethi ngesekhondi.

Okulandelayo, kunye neziphumo ezisondeleleneyo, yaba ngabaqhubi be
I-Java, i-OCaml kunye ne-Haskell, esele isele ishiywe ngokubonakalayo emva kweenketho ezicatshangelwayo ngaphambili kwaye ayikwazanga ukunqoba iipakethi ze-12 yezigidi ngebha yesibini. Abaqhubi be-Swift kunye neJavaScript babonise i-lag enkulu ngakumbi, ikwazi ukucubungula ukuhamba kwinqanaba le-5 yezigidi zeepakethi ngomzuzwana.

Uluhlu oluphezulu lwagqitywa ngumqhubi wePython, okwazile ukucubungula kuphela iipakethi ze-0.14 yezigidi ngesibini. Ukuphunyezwa kwePython kusetyenziswe ukuvavanya isantya seetoliki ngaphandle kweJIT kwaye ngaphandle kokulungiswa okuthe ngqo (ikhowudi yaphunyezwa kusetyenziswa iCPython 3.7 kwaye yayingahambelani nePyPy, kodwa kuphawulwe ukuba ukulungiswa kwezakhiwo zokugcina idatha kunokuphucula ukusebenza ngamaxesha angama-10. ).

Ukongeza, iimvavanyo ze-latency zenziwa ukubonisa ukusebenza kwe-buffering kunye nefuthe lomqokeleli wenkunkuma. Uvavanyo lulinganisa i-latency emva kokuba ipakethe nganye ithunyelwe ngumqhubi xa kuthelekiswa nexesha elichanekileyo elithunyelwe ngayo. Iinkokeli zazisengabaqhubi be-C kunye neRust, iziphumo zazo zazingabonakali kakuhle ukuhamba kwepakethi yesigidi esi-1 ngesekhondi (malunga nama-20 Β΅s). Umqhubi weGo uqhube kakuhle, esemva nje kancinane kwiinkokeli kwaye ekwahleli kwinqanaba lama-20 Β΅s. Umqhubi we-C# ubonise ulibaziseko malunga ne-50 Β΅s.
Olona libaziseko lude luboniswe yiJavaScript kunye nabaqhubi beJava (latencies ezingaphezu kwama-300 Β΅s).

Ukuthelekisa ukusebenza komqhubi womnatha kwiinguqulelo kwiilwimi ezili-10 zokucwangcisa

Uphononongo lwenziwe ukuvavanya amathuba okuphuhlisa abaqhubi kunye nezixhobo zenkqubo yokusebenza kwiilwimi ezikumgangatho ophezulu kuneC. Okwangoku, i-39 kwi-40 yeengxaki zememori kwi-Linux zihambelana nabaqhubi, ngoko ke imiba yokusebenzisa ulwimi olukhuselekileyo kunye nokuhambisa abaqhubi ngaphandle kwe-kernel kunye nendawo yomsebenzisi. hlala ufanelekile kwaye abavelisi sele bezama ngokusebenzayo kweli cala (umzekelo, uGoogle uphuhlise isitakhi se-TCP se-OS Fuchsia ngolwimi lweGo, inkampani yeCloudFlare yenziwe ukuphunyezwa kwe-QUIC protocol kwi-Rust, i-Apple ihambise isitakhi se-TCP kwizixhobo eziphathwayo kwindawo yomsebenzisi).

Ekuhambeni komsebenzi, kwagqitywa ukuba ulwimi lweRust ngoyena mgqatswa wophuhliso lwabaqhubi. Ubunakho be-Rust buphelisa iingxaki ezinxulumene nolawulo lwememori yenqanaba elisezantsi ngexabiso elimalunga ne-2% ukuya kwi-10% yelahleko yokusebenza xa kuthelekiswa nabaqhubi be-C. I-Go kunye ne-C # nazo zibhekwa njengezifanelekileyo ekudaleni amacandelo enkqubo kwiimeko apho i-sub-millisecond latency ebangelwa ukuqokelelwa kwenkunkuma iyamkeleka.

umthombo: opennet.ru

Yongeza izimvo