libuv, eng Cross-Plattform-Bibliothéik déi a ville Projete fir I/O-Ënnerstëtzung benotzt gëtt

libv

libuv ass eng Cross-Plattform Support Bibliothéik mat engem Fokus op asynchronen I/O.

Viru kuerzem gouf bekannt d'Verëffentlechung vun der neier Versioun vun der Libuv Bibliothéik 1.45.0, déi wäit benotzt gëtt fir Verbindungsmultiplexing an asynchron I/O-Veraarbechtung a ville Projeten, déi op High-Performance-Veraarbechtung vu Datei- an Netzwierkfuerderunge riicht, zum Beispill op der Node.js Plattform, BIND 9 a Knot.

Fir déi, déi net iwwer Libuv wëssen, solle se wëssen datt dëst ass eng Cross-Plattform C Bibliothéik déi Ënnerstëtzung fir asynchronen I/O baséiert op Event Loops. Et ënnerstëtzt epoll Windows kqueue IOCP, Solaris Event Ports an op Linux ass et eng vun de Bibliothéiken déi io_uring ënnerstëtzt.

Iwwer libuv

libv ass haaptsächlech fir Node.js benotzt, mä et gëtt och vun anere Software Projeten benotzt. Ursprénglech war et eng Abstraktioun ronderëm libev oder Microsoft IOCP, well libev net IOCP op Windows ënnerstëtzt.

Bibliothéik erlaabt eng net-blockéierend Loop vun Eventer ze organiséieren benotzt Methoden wéi epoll op Linux, kqueue op BSD a macOS, IOCP op Windows, an Event Ports op Solaris

Vun den aussergewéinlech Feature vu Libuv:

  • Voll Featured Event Loop ënnerstëtzt vun epoll, kqueue, IOCP, Event Ports
  • Asynchron TCP an UDP Sockets
  • Asynchron DNS Resolutioun
  • Asynchron Operatioune vu Dateien an Dateisystemer
  • Fichier System Evenementer
  • TTY kontrolléiert haten ANSI Flucht Code
  • IPC mat Socket Sharing, mat Unix Domain Sockets oder genannte Päifen (Windows)
  • Sekundär Prozesser
  • thread Pool
  • Signal Ëmgank
  • héich Opléisung Auer
  • Threading an Synchroniséierung Primitiv

Cross-Plattform Features sinn verfügbar fir Uwendungen fir mat TCP an UDP Netzwierkverbindungen am asynchrone Modus ze schaffen, asynchron DNS Resolutioun, asynchroner Aarbecht mat Dateien, Dateisystem Event Tracking, IPC Organisatioun fir Socket Sharing, Organisatioun vun engem thread Pool Signal Veraarbechtung a Gebrauch vun héich Präzisioun Timer.

Bibliothéik enthält och Primitiv fir Multi-threaded Ausféierung ze organiséieren an thread Synchroniséierung. Zesumme mat der Event Loop ginn zwee abstrakt Basisprimitiven op héijem Niveau benotzt: "Handler" fir laanglieweg Objeten ëmzesetzen, déi verschidde Operatiounen ausféieren, an "Ufroen" fir kuerzlieweg Ufroen auszeféieren.

Main nei Features vu libuv 1.45

Eng Schlësselverbesserung an der neier Versioun ass de Ëmsetzung vun der laang-erwaarde Ënnerstëtzung fir d'io_uring asynchronous I / O Interface geliwwert vum Linux Kernel zënter Versioun 5.1.

Zousätzlech zu dëser beliicht et och de Ënnerstëtzung fir I/O Polling an d'Fäegkeet fir mat an ouni Puffer ze schaffen Mat der io_uring API hunn d'Kernel Entwéckler probéiert d'Mängel vun der aler Aio Interface unzegoen. Wat d'Performance ugeet, ass io_uring ganz no bei SPDK an ass wesentlech besser wéi d'libaio wann d'Polling aktivéiert ass.

am Libuv, d'io_uring Interface kann op Linux Plattforme mat Kernel 5.1+ benotzt ginn an asynchrone Fichier Manipulatioun primitives wéi liesen, schreiwen, fsync, fdatasync, stat, fstat, an lstat. Op anere Betribssystemer a Systemer mat méi alen Kären gëtt de Fuedempool nach ëmmer benotzt.

Et gëtt erwähnt datt Leeschtungstester gewisen hunn datt d'Benotzung vun io_uring am libuv eng 8x Leeschtungserhéijung erreechen kann. D'Aarbecht fir io_uring op libuv ze addéieren gouf vum ISC (Internet Systems Consortium) ënnerstëtzt, deen d'Bibliothéik a Fro um BIND DNS Server benotzt.

Aner Verbesserungen an der neier Versioun och de eng eenzeg 8 MB Heapgréisst fir de Fuedempool op all Architekturen astellen an Plattformen.

Et gëtt och beliicht datt eng nei API uv_metrics_info () bäigefüügt fir Metriken ze sammelen, wéi d'Iteratiounszuel an der Event Loop, d'total Unzuel vun den veraarbechten Eventer an d'Zuel vun den Eventer déi an der Schlaang waarden zur Zäit wou d'Ufro geschéckt gouf.

Endlech Wann Dir interesséiert sidd méi doriwwer ze wëssen, Dir sollt wëssen datt de Projet Code am C geschriwwe gëtt an ënner der MIT Lizenz verdeelt gëtt. Dir kënnt d'Detailer kontrolléieren An de folgende Link. 


Den Inhalt vum Artikel hält sech un eis Prinzipie vun redaktionnell Ethik. Fir e Feeler ze mellen klickt hei.

Gitt d'éischt fir ze kommentéieren

Gitt Äre Kommentar

Är Email Adress gëtt net publizéiert ginn. Néideg Felder sinn markéiert mat *

*

*

  1. Responsabel fir d'Daten: Miguel Ángel Gatón
  2. Zweck vun den Donnéeën: Kontroll SPAM, Kommentarmanagement.
  3. Legitimatioun: Är Zoustëmmung
  4. Kommunikatioun vun den Donnéeën: D'Donnéeë ginn net un Drëttubidder matgedeelt ausser duerch legal Verpflichtung.
  5. Datenspeicher: Datebank gehost vun Occentus Networks (EU)
  6. Rechter: Zu all Moment kënnt Dir Är Informatioun limitéieren, recuperéieren an läschen.