Throughput default write/read di pipe hanya ~3.5GiB/s karena overhead copy halaman, alokasi page, dan sinkronisasi.
Linux pipe menggunakan ring buffer berisi referensi struct page, tiap slot berkapsitas 4KiB page.
Syscall write/read lambat karena menyalin data user→kernel→user dan lock/unlock pipe di setiap operasi.
Zero-copy dengan vmsplice dan splice melepas copy kernel, meningkatkan kecepatan hingga ~33GiB/s.
Overhead konversi virtual→physical pages di vmsplice masih besar, terutama fungsi get_user_pages_fast.
Menggunakan huge pages (2MiB) meminimalkan jumlah struct page tail, mempercepat iov_iter_get_pages hingga ~50%.
Busy loop non-blocking pada vmsplice/splice mengeliminasi latensi sinkronisasi, mencapai ~62.5GiB/s.
Optimasi ini melibatkan profiling perf, pemahaman kernel pipe internals, virtual memory, dan trade-off CPU busy waiting.
Get notified when new stories are published for "Berita Peretas 🇮🇩 Bahasa Indonesia"