libuv, pustaka lintas platform yang digunakan di banyak proyek untuk dukungan I/O

libuv

libuv adalah pustaka dukungan lintas platform dengan fokus pada I/O asinkron.

Baru-baru ini dikenal rilis versi baru perpustakaan libuv 1.45.0, yang banyak digunakan untuk multiplexing koneksi dan pemrosesan I/O asinkron di banyak proyek yang ditujukan untuk pemrosesan permintaan file dan jaringan berkinerja tinggi, misalnya, pada platform Node.js, BIND 9, dan Knot.

Bagi yang belum tahu tentang libuv, pasti tahu ini adalah pustaka C lintas platform yang menyediakan dukungan untuk I/O asinkron berdasarkan loop peristiwa. Ini mendukung epoll Windows kqueue IOCP, port acara Solaris dan di Linux ini adalah salah satu perpustakaan yang mendukung io_uring.

Tentang libuv

libuv terutama dirancang untuk digunakan di Node.js, tetapi juga digunakan oleh proyek perangkat lunak lain. Awalnya, ini adalah abstraksi seputar libev atau Microsoft IOCP, karena libev tidak mendukung IOCP di Windows.

Perpustakaan memungkinkan untuk mengatur rangkaian acara yang tidak memblokir menggunakan metode seperti epoll di Linux, kqueue di BSD dan macOS, IOCP di Windows, dan event port di Solaris

Dari fitur luar biasa dari libuv:

  • Loop acara berfitur lengkap didukung oleh epoll, kqueue, IOCP, port acara
  • Soket TCP dan UDP asinkron
  • Resolusi DNS asinkron
  • Operasi asinkron file dan sistem file
  • Peristiwa sistem file
  • TTY mengontrol kode pelarian ANSI
  • IPC dengan berbagi soket, menggunakan soket domain Unix atau pipa bernama (Windows)
  • Proses sekunder
  • kolam benang
  • penanganan sinyal
  • jam beresolusi tinggi
  • Threading dan sinkronisasi primitif

Fitur lintas platform tersedia untuk aplikasi untuk bekerja dengan koneksi jaringan TCP dan UDP dalam mode asinkron, resolusi DNS asinkron, pekerjaan asinkron dengan file, pelacakan peristiwa sistem file, organisasi IPC untuk berbagi soket, organisasi pemrosesan sinyal kumpulan utas dan penggunaan timer presisi tinggi.

Perpustakaan juga menyertakan primitif untuk mengatur eksekusi multi-utas dan sinkronisasi benang. Bersamaan dengan loop peristiwa, dua primitif dasar abstrak tingkat tinggi digunakan: "penangan" untuk mengimplementasikan objek berumur panjang yang melakukan banyak operasi, dan "permintaan" untuk melakukan permintaan berumur pendek.

Fitur baru utama libuv 1.45

Peningkatan utama dalam versi baru adalah implementasi dukungan yang telah lama ditunggu untuk antarmuka I/O asinkron io_uring disediakan oleh kernel Linux sejak versi 5.1.

Selain itu, ini juga menyoroti dukungan untuk polling I/O dan kemampuan untuk bekerja dengan dan tanpa buffering Dengan API io_uring, pengembang kernel mencoba mengatasi kekurangan antarmuka aio lama. Dalam hal performa, io_uring sangat mirip dengan SPDK dan mengungguli libaio secara signifikan saat polling diaktifkan.

di libuv, antarmuka io_uring dapat digunakan pada platform Linux dengan kernel 5.1+ dalam primitif manipulasi file asinkron seperti baca, tulis, fsync, fdatasync, stat, fstat, dan lstat. Pada sistem operasi lain dan sistem dengan kernel lama, kumpulan utas masih digunakan.

Disebutkan bahwa tes kinerja telah menunjukkan bahwa menggunakan io_uring di libuv dapat mencapai peningkatan kinerja 8x. Pekerjaan menambahkan io_uring ke libuv didukung oleh ISC (Internet Systems Consortium), yang menggunakan pustaka tersebut di server BIND DNS.

Perbaikan lain dalam versi baru termasuk menyetel ukuran heap tunggal 8 MB untuk kumpulan utas di semua arsitektur dan platform.

Itu juga disorot itu menambahkan API baru uv_metrics_info() untuk mengumpulkan metrik, seperti jumlah iterasi dalam perulangan peristiwa, jumlah total peristiwa yang diproses, dan jumlah peristiwa yang menunggu dalam antrean pada saat permintaan dikirim.

Akhirnya, Jika Anda tertarik untuk mengetahui lebih banyak tentang itu, Anda harus tahu bahwa kode proyek ditulis dalam C dan didistribusikan di bawah lisensi MIT. Anda dapat memeriksa detailnya Di tautan berikut. 


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.