GNU/Linux >> Belajar Linux >  >> Linux

Kebingungan tentang mekanisme I/O asinkron internal node.js

  1. Pertama-tama, libuv telah menghapus libeio dari itu. Tapi itu melakukan async file I/O dengan kumpulan utas seperti libeio seperti yang Anda sebutkan.

  2. libuv juga menghapus libev . Itu melakukan I/O jaringan async berdasarkan antarmuka I/O async di berbagai platform, seperti epoll , kqueue dan IOCP , tanpa kumpulan utas. Ada loop peristiwa yang berjalan di utas utama uv yang mengumpulkan kejadian I/O dan memprosesnya.

  3. Kumpulan utas di dalam libuv adalah kumpulan utas ukuran tetap (4 dalam sistem seperti uinx). Itu melakukan peran antrian tugas dan menghindari kelelahan sumber daya sistem dengan menghasilkan utas tanpa batas ketika permintaan meningkat.


Hingga versi 0.6 node menggunakan libev untuk menjalankan event-loop dan libeio untuk I/O asinkron, (backend Unix sangat bergantung pada dua pustaka ini). Tapi libuv telah mulai mengganti libev dan libeio dalam versi 0.8. Itu melakukan, mempertahankan, dan mengelola semua io dan acara di kumpulan acara. libuv adalah pilihan di pustaka IO asinkron lintas platform.

  1. Ya, hingga node 0.6, tidak digunakan lagi di 0.8 dan menggunakan kumpulan thread
  2. Ya, tapi libev tidak menggunakan kumpulan utas. Lihat di sini

    Klarifikasi :Menurut tautan dalam pertanyaan yang saya posting, libeio tidak mendukung semua fungsi POSIX yang berhubungan dengan I/O (termasuk soket). Tetapi penulis simpul memutuskan untuk menggunakannya hanya untuk I/O file asinkron, dan menggunakan libev untuk I/O jaringan. Saya tidak tahu dari mana Anda mendengarnya tetapi Anda dapat menggunakan epoll pada file biasa.

  3. libev menggunakan event loop jadi tidak ada masalah di sini.

  4. Ya, IOCP menangani async I/O di windows, kernel memang menggunakan kumpulan utas.
  5. Kernel linux baru memiliki epoll, kqueue di kernel BSD baru. libev dan libeio adalah untuk lingkungan linux dan menyediakan event loop/async IO untuk semua kernel (mendukung pemilihan, polling, epoll, kqueue).

Perbarui pertanyaan:

  1. tidak tahu banyak tentang libuv
  2. mungkin cukup (tidak tahu)
  3. Inilah temuan saya di Windows 8, memeriksanya melalui Process Explorer. Menampilkan 4 utas, 1 DLL, 1 File, dan 1 Bagian (total 7 entri) untuk proses aplikasi node.

  4. ps -eLf memang menampilkan semua utas dan proses, mungkin Anda memfilternya secara berlebihan, cari saja pid proses node seperti ps -eLf | grep x di mana x adalah pid untuk proses node.


Linux
  1. Linux – Menentukan File Tertentu yang Bertanggung Jawab Untuk I/o Tinggi?

  2. Bagaimana Cara Throttle Per Proses I/o Hingga Batas Maks?

  3. Konflik Node.js:/sbin/node Vs /usr/bin/node?

  1. Konfigurasikan flash drive dalam instans I/O Tinggi sebagai drive data

  2. Pertimbangan untuk bermigrasi ke server cloud Tujuan Umum atau I/O

  3. Bermigrasi ke server Tujuan Umum atau I/O

  1. Bagaimana cara menghentikan proses 'tidak terputus' di Linux?

  2. Linux dan port penyelesaian I/O?

  3. Apakah benar-benar tidak ada blok I/O asinkron di Linux?