Seorang developer telah menciptakan lsr, pengganti untuk perintah Unix ls tradisional yang menggunakan antarmuka io_uring Linux untuk mencapai peningkatan performa yang signifikan. Proyek ini mendemonstrasikan bagaimana antarmuka kernel modern dapat secara dramatis mengurangi system calls dan meningkatkan kecepatan listing file, meskipun telah memicu diskusi yang lebih luas tentang tantangan adopsi io_uring.
Peningkatan performa melalui pengurangan system calls
Peningkatan paling mencolok berasal dari kemampuan lsr untuk melakukan operasi batch melalui io_uring, mengurangi system calls hingga 35 kali dibandingkan implementasi tradisional. Ketika melisting 10.000 file, lsr hanya memerlukan 848 system calls versus 30.396 calls dari GNU ls. Ini diterjemahkan menjadi peningkatan kecepatan 70%, dengan lsr menyelesaikan tugas dalam 22,1 milidetik dibandingkan 38,0 milidetik untuk ls.
Keunggulan performa menjadi lebih terasa dengan direktori yang lebih besar. Anggota komunitas telah mencatat bahwa direktori dengan jutaan file, yang dapat memakan waktu menit untuk diproses dengan tools standar, dapat memperoleh manfaat signifikan dari pendekatan ini.
Perbandingan Performa (10.000 file)
- lsr: 22,1 ms, 848 syscalls
- GNU ls: 38,0 ms, 30.396 syscalls
- busybox ls: 32,5 ms, 20.383 syscalls
- eza: 40,2 ms, 10.364 syscalls
- lsd: 153,4 ms, 100.512 syscalls
Kekhawatiran keamanan membatasi adopsi io_uring
Meskipun ada manfaat performa, diskusi komunitas mengungkapkan mengapa io_uring belum diadopsi secara luas dalam tools command-line. Antarmuka ini telah menghadapi masalah keamanan yang berkelanjutan, dengan kerentanan yang ditemukan baru-baru ini beberapa bulan lalu. Banyak organisasi besar telah menonaktifkan io_uring di kernel mereka karena kekhawatiran keselamatan.
io_uring adalah mimpi buruk keamanan.
Tantangan keamanan berasal dari desain io_uring, yang memungkinkan proses untuk menginstruksikan kernel melakukan operasi tanpa system calls tradisional. Ini melewati banyak langkah keamanan yang ada seperti filter seccomp, menciptakan vektor serangan baru yang sulit dipantau dan dikontrol oleh tim keamanan.
Keterbatasan praktis dan tantangan kompatibilitas
Meskipun lsr bekerja pada sistem macOS dan BSD, manfaat io_uring hanya berlaku untuk sistem Linux. Keterbatasan platform ini, dikombinasikan dengan kebutuhan versi kernel yang relatif baru, membatasi deployment praktisnya. Banyak developer memprioritaskan portabilitas daripada performa, terutama untuk tools fundamental seperti ls yang perlu bekerja di berbagai lingkungan yang beragam.
Proyek ini juga menyoroti tantangan arsitektural dalam mengadopsi io_uring. Sebagian besar tools command-line menggunakan pemrograman sekuensial yang sederhana, tetapi io_uring memerlukan arsitektur berbasis event untuk menjadi efektif. Ini berarti penulisan ulang yang signifikan daripada sekadar optimisasi sederhana untuk tools yang ada.
Persyaratan Sistem
- Linux (untuk mendapatkan manfaat io_uring)
- Zig 0.14.0 untuk kompilasi
- Berfungsi di macOS/BSD namun tanpa manfaat performa
- Instalasi:
zig build -Doptimize-ReleaseSmall -prefix $HOME/.local
Respons komunitas dan implikasi masa depan
Proyek ini telah menghasilkan minat tidak hanya untuk peningkatan performanya, tetapi sebagai demonstrasi potensi io_uring. Beberapa anggota komunitas menyerukan upaya modernisasi serupa di utilitas inti lainnya, meskipun yang lain mempertanyakan apakah kompleksitas dan trade-off keamanan sepadan untuk tools yang sudah berkinerja memadai.
Penulis mengakui bahwa penghematan waktu praktis minimal untuk sebagian besar pengguna - mungkin lima detik selama seumur hidup penggunaan. Namun, proyek ini berfungsi sebagai contoh edukatif tentang bagaimana antarmuka kernel modern dapat dimanfaatkan jika tantangan ekosistem dapat diselesaikan.
Catatan: io_uring adalah antarmuka kernel Linux yang memungkinkan aplikasi untuk mengirimkan beberapa operasi I/O secara efisien tanpa membuat system calls individual untuk setiap operasi.
Referensi: lsr
![]() |
---|
Tangkapan layar halaman repositori GitHub untuk " targzr ," yang menyoroti pengembangan aktif dalam komunitas open-source |