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

libuv

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

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

За тези, които не знаят за libuv, трябва да знаят, че това е C библиотека за различни платформи, която осигурява поддръжка за асинхронен I/O въз основа на цикли на събития. Поддържа epoll Windows kqueue IOCP, портове за събития на Solaris и на Linux е една от библиотеките, които поддържат io_uring.

Относно libuv

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 предоставя се от ядрото на Linux от версия 5.1.

В допълнение към това, той също така подчертава поддръжка за I/O polling и възможност за работа с и без буфериране С API io_uring разработчиците на ядрото се опитаха да се справят с недостатъците на стария интерфейс aio. По отношение на производителността, io_uring е много близък до SPDK и значително превъзхожда libaio, когато анкетирането е активирано.

в libuv, интерфейсът io_uring може да се използва на Linux платформи с ядро ​​5.1+ в асинхронни примитиви за манипулиране на файлове като четене, запис, fsync, fdatasync, stat, fstat и lstat. В други операционни системи и системи с по-стари ядра все още се използва пулът от нишки.

Споменава се, че тестовете за производителност са показали, че използването на io_uring в libuv може да постигне 8x увеличение на производителността. Работата по добавянето на 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. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.