Langsung ke konten

Arsip

I/O Asinkron

3 artikel
Rekayasa Perangkat Lunak 19 Sep 2026 6 min read

Request Terhubung io_uring Mengodekan Dependensi dalam Urutan Submission

Submission queue io_uring dapat memuat banyak operasi sekaligus, tetapi setiap operasi tidak harus independen. Menetapkan IOSQE_IO_LINK pada sebuah submission queue entry mengikatnya ke entry berikutnya, membentuk rantai dengan urutan eksekusi dan propagasi kegagalan sebagai bagian dari struktur request yang terlihat oleh kernel. Kontrak ini berbeda dari dua SQE independen yang koordinasinya baru dilakukan setelah completion. Rantai terhubung menyatakan dependensi sebelum kernel mulai memproses operasi. Perbedaan tersebut penting saat request berikutnya hanya valid setelah request sebelumnya selesai, atau saat kegagalan satu tahap harus mencegah tahap yang tersisa dijalankan.

Linux 19 Sep 2026 5 min read

Request Multishot io_uring Bertahan Melintasi Event Completion

Request io_uring biasa memiliki siklus hidup sederhana: userspace mengirim satu SQE dan kemudian menerima satu CQE. Operasi multishot mengubah hubungan tersebut. Satu request yang dikirim dapat tetap aktif di kernel dan menghasilkan beberapa completion queue entry ketika event yang cocok terjadi. Persistensi itu mengubah asumsi satu CQE per request menjadi protokol siklus hidup yang eksplisit. State penentunya dibawa oleh IORING_CQE_F_MORE: ketika flag ini ada, request asal masih dapat menghasilkan completion lain; ketika flag tidak ada, request multishot tersebut telah berakhir.

Rekayasa Perangkat Lunak 18 Sep 2026 3 min read

Link io_uring Menserialkan Request yang Saling Bergantung

Dua submission queue entry io_uring yang bersebelahan pada kondisi normal merupakan request independen. Menetapkan IOSQE_IO_LINK pada entry pertama mengubah hubungan itu: request berikutnya tidak mulai sebelum request yang ditautkan selesai. Pengulangan flag tersebut membentuk rantai berurutan di dalam satu batch submission. Sifat pengurutan ini lebih sempit daripada serialisasi queue secara global. Request di luar rantai tetap dapat berjalan secara independen, dan rantai terpisah dapat berjalan tumpang tindih. Sebuah link dengan demikian menyatakan dependensi antar-SQE tertentu, bukan memasang barrier pada seluruh ring.