libuv, библиотека на повеќе платформи што се користи во многу проекти за поддршка на I/O

либув

libuv е библиотека за поддршка на повеќе платформи со фокус на асинхрони I/O.

Неодамна стана познат објавувањето на новата верзија на библиотеката libuv 1.45.0, што е широко користен за мултиплексирање на поврзување и асинхрона I/O обработка во многу проекти насочени кон обработка на датотеки и мрежни барања со високи перформанси, на пример, на платформата Node.js, BIND 9 и Knot.

За тие што не знаат за либув, треба да знаат дека ова е вкрстена платформска библиотека C која обезбедува поддршка за асинхрони В/И базирани на циклуси на настани. Поддржува epoll Windows kqueue IOCP, порти за настани Solaris и на Linux е една од библиотеките што поддржува io_uring.

За libuv

либув е првенствено дизајниран за употреба во Node.js, но се користи и од други софтверски проекти. Првично, тоа беше апстракција околу libev или Microsoft IOCP, бидејќи libev не поддржува IOCP на Windows.

Библиотека овозможува да се организира неблокирачка јамка на настани користејќи методи како epoll на Linux, kqueue на BSD и macOS, IOCP на Windows и порти за настани на Solaris

Од извонредни карактеристики на libuv:

  • Целосно опремен циклус на настани поддржан од epoll, kqueue, IOCP, пристаништа за настани
  • Асинхрони TCP и UDP приклучоци
  • Асинхрона резолуција на DNS
  • Асинхрони операции на датотеки и датотечни системи
  • Настани во датотечен систем
  • TTY контролиран ANSI код за бегство
  • IPC со споделување на штекери, користејќи приклучоци за домен Unix или именувани цевки (Windows)
  • Секундарни процеси
  • базен со нишки
  • ракување со сигнали
  • часовник со висока резолуција
  • Примитиви за нишки и синхронизација

Функциите меѓу-платформи се достапни за апликациите за работа со TCP и UDP мрежни конекции во асинхрон режим, асинхрона резолуција на DNS, асинхрона работа со датотеки, следење настани на датотечниот систем, организација IPC за споделување на приклучоци, организација на процесирање на сигнал со нишки и користење на тајмери ​​со висока прецизност.

Библиотека вклучува и примитиви за организирање на извршување со повеќе нишки и синхронизација на конец. Заедно со циклусот на настани, се користат два апстрактни основни примитиви на високо ниво: „ракувачи“ за имплементација на долговечни објекти кои вршат повеќе операции и „барања“ за извршување краткотрајни барања.

Главните нови карактеристики на libuv 1.45

Клучно подобрување во новата верзија е имплементација на долгоочекуваната поддршка за асинхрониот I/O интерфејс io_uring обезбедено од кернелот Линукс од верзијата 5.1.

Во прилог на ова, тој исто така ги истакнува поддршка за I/O анкетирање и можност за работа со и без баферирање Со io_uring API, развивачите на кернелот се обидоа да ги решат недостатоците на стариот интерфејс aio. Во однос на перформансите, io_uring е многу блиску до SPDK и значително го надминува libaio кога е овозможено анкетирање.

во Либув, интерфејсот io_uring може да се користи на платформи Линукс со кернел 5.1+ во примитивите за манипулација со асинхрони датотеки како што се читање, пишување, fsync, fdatasync, stat, fstat и lstat. На други оперативни системи и системи со постари кернели, базенот за нишки сè уште се користи.

Се споменува дека тестовите за перформанси покажале дека со користење на io_uring во libuv може да се постигне зголемување на перформансите за 8 пати. Работата за додавање io_uring на libuv беше поддржана од ISC (Internet Systems Consortium), кој ја користи предметната библиотека на BIND DNS-серверот.

Други подобрувања во новата верзија вклучуваат поставување на единечна големина на грамада од 8 MB за базенот на нишки на сите архитектури и платформи.

Исто така, се потенцира дека додаде ново API uv_metrics_info() за собирање метрика, како што е бројот на повторувања во циклусот на настани, вкупниот број на обработени настани и бројот на настани кои чекаат во редот во моментот кога барањето било испратено.

Конечно, Ако сте заинтересирани да знаете повеќе за тоа, треба да знаете дека кодот на проектот е напишан во C и се дистрибуира под лиценцата MIT. Можете да ги проверите деталите На следниот линк. 


Содржината на статијата се придржува до нашите принципи на уредничка етика. За да пријавите грешка, кликнете овде.

Биди прв да коментираш

Оставете го вашиот коментар

Вашата е-маил адреса нема да бидат објавени. Задолжителни полиња се означени со *

*

*

  1. Одговорен за податоците: Мигел Анхел Гатон
  2. Цел на податоците: Контролирајте СПАМ, управување со коментари.
  3. Легитимација: Ваша согласност
  4. Комуникација на податоците: Податоците нема да бидат соопштени на трети лица освен со законска обврска.
  5. Складирање на податоци: База на податоци хостирани од Occentus Networks (ЕУ)
  6. Права: Во секое време можете да ги ограничите, вратите и избришете вашите информации.