Seorang pembangun telah mencipta lsr, pengganti untuk arahan Unix ls tradisional yang menggunakan antara muka io_uring Linux untuk mencapai peningkatan prestasi yang ketara. Projek ini menunjukkan bagaimana antara muka kernel moden boleh mengurangkan panggilan sistem secara dramatik dan meningkatkan kelajuan penyenaraian fail, walaupun ia telah mencetuskan perbincangan yang lebih luas mengenai cabaran penggunaan io_uring.
Peningkatan prestasi melalui pengurangan panggilan sistem
Peningkatan yang paling menarik datang daripada keupayaan lsr untuk mengumpulkan operasi melalui io_uring, mengurangkan panggilan sistem sehingga 35 kali berbanding pelaksanaan tradisional. Apabila menyenaraikan 10,000 fail, lsr hanya memerlukan 848 panggilan sistem berbanding 30,396 panggilan GNU ls. Ini diterjemahkan kepada peningkatan kelajuan 70%, dengan lsr menyelesaikan tugas dalam 22.1 milisaat berbanding 38.0 milisaat ls.
Kelebihan prestasi menjadi lebih ketara dengan direktori yang lebih besar. Ahli komuniti telah menyatakan bahawa direktori dengan berjuta-juta fail, yang boleh mengambil masa beberapa minit untuk diproses dengan alat standard, boleh mendapat manfaat yang ketara daripada pendekatan ini.
Perbandingan Prestasi (10,000 fail)
- lsr: 22.1 ms, 848 panggilan sistem
- GNU ls: 38.0 ms, 30,396 panggilan sistem
- busybox ls: 32.5 ms, 20,383 panggilan sistem
- eza: 40.2 ms, 10,364 panggilan sistem
- lsd: 153.4 ms, 100,512 panggilan sistem
Kebimbangan keselamatan mengehadkan penggunaan io_uring
Walaupun terdapat faedah prestasi, perbincangan komuniti mendedahkan mengapa io_uring tidak diterima pakai secara meluas dalam alat baris arahan. Antara muka ini telah menghadapi isu keselamatan yang berterusan, dengan kelemahan ditemui baru-baru ini beberapa bulan yang lalu. Banyak organisasi besar telah melumpuhkan io_uring dalam kernel mereka kerana kebimbangan keselamatan.
io_uring adalah mimpi ngeri keselamatan.
Cabaran keselamatan berpunca daripada reka bentuk io_uring, yang membenarkan proses mengarahkan kernel untuk melakukan operasi tanpa panggilan sistem tradisional. Ini memintas banyak langkah keselamatan sedia ada seperti penapis seccomp, mewujudkan vektor serangan baharu yang sukar dipantau dan dikawal oleh pasukan keselamatan.
Had praktikal dan cabaran keserasian
Walaupun lsr berfungsi pada sistem macOS dan BSD, faedah io_uring hanya terpakai pada sistem Linux. Had platform ini, digabungkan dengan keperluan untuk versi kernel yang agak terkini, mengehadkan penggunaannya secara praktikal. Ramai pembangun mengutamakan kebolehpindahan berbanding prestasi, terutamanya untuk alat asas seperti ls yang perlu berfungsi merentasi persekitaran yang pelbagai.
Projek ini juga menyerlahkan cabaran seni bina dalam menggunakan io_uring. Kebanyakan alat baris arahan menggunakan pengaturcaraan berurutan yang mudah, tetapi io_uring memerlukan seni bina berasaskan acara untuk berkesan. Ini bermakna penulisan semula yang ketara dan bukannya pengoptimuman mudah untuk alat sedia ada.
Keperluan Sistem
- Linux (untuk manfaat io_uring)
- Zig 0.14.0 untuk kompilasi
- Berfungsi pada macOS/BSD tetapi tanpa manfaat prestasi
- Pemasangan:
zig build -Doptimize-ReleaseSmall -prefix $HOME/.local
Respons komuniti dan implikasi masa depan
Projek ini telah menjana minat bukan sahaja untuk peningkatan prestasinya, tetapi sebagai demonstrasi potensi io_uring. Sesetengah ahli komuniti menyeru usaha pemodenan yang serupa merentasi utiliti teras lain, walaupun yang lain mempersoalkan sama ada kerumitan dan pertukaran keselamatan berbaloi untuk alat yang sudah berprestasi memadai.
Pengarang mengakui bahawa penjimatan masa praktikal adalah minimum untuk kebanyakan pengguna - mungkin lima saat sepanjang hayat penggunaan. Walau bagaimanapun, projek ini berfungsi sebagai contoh pendidikan tentang bagaimana antara muka kernel moden boleh dimanfaatkan jika cabaran ekosistem dapat diselesaikan.
Nota: io_uring adalah antara muka kernel Linux yang membenarkan aplikasi menyerahkan berbilang operasi I/O dengan cekap tanpa membuat panggilan sistem individu untuk setiap operasi.
Rujukan: lsr
![]() |
---|
Tangkapan skrin halaman repositori GitHub untuk " targzr ," yang menyerlahkan pembangunan aktif dalam komuniti sumber terbuka |