Công cụ thay thế ls mới sử dụng io_uring cho thấy tốc độ tăng 70% nhưng đối mặt với lo ngại bảo mật

Nhóm Cộng đồng BigGo
Công cụ thay thế ls mới sử dụng io_uring cho thấy tốc độ tăng 70% nhưng đối mặt với lo ngại bảo mật

Một nhà phát triển đã tạo ra lsr, một công cụ thay thế cho lệnh ls truyền thống của Unix sử dụng giao diện io_uring của Linux để đạt được những cải thiện hiệu suất đáng kể. Dự án này cho thấy cách các giao diện kernel hiện đại có thể giảm đáng kể các system call và cải thiện tốc độ liệt kê file, mặc dù nó đã khơi mào các cuộc thảo luận rộng hơn về những thách thức trong việc áp dụng io_uring.

Tăng hiệu suất thông qua việc giảm system call

Cải thiện nổi bật nhất đến từ khả năng của lsr trong việc gộp các thao tác thông qua io_uring, giảm system call lên đến 35 lần so với các triển khai truyền thống. Khi liệt kê 10.000 file, lsr chỉ cần 848 system call so với 30.396 call của GNU ls. Điều này dẫn đến cải thiện tốc độ 70%, với lsr hoàn thành tác vụ trong 22,1 mili giây so với 38,0 mili giây của ls.

Lợi thế về hiệu suất trở nên rõ rệt hơn với các thư mục lớn hơn. Các thành viên cộng đồng đã lưu ý rằng các thư mục có hàng triệu file, có thể mất vài phút để xử lý với các công cụ tiêu chuẩn, có thể được hưởng lợi đáng kể từ phương pháp này.

So sánh hiệu suất (10.000 tệp)

  • 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

Lo ngại bảo mật hạn chế việc áp dụng io_uring

Bất chấp những lợi ích về hiệu suất, các cuộc thảo luận trong cộng đồng cho thấy lý do tại sao io_uring chưa được áp dụng rộng rãi trong các công cụ dòng lệnh. Giao diện này đã đối mặt với các vấn đề bảo mật liên tục, với các lỗ hổng được phát hiện gần đây chỉ vài tháng trước. Nhiều tổ chức lớn đã vô hiệu hóa io_uring trong kernel của họ do lo ngại về an toàn.

io_uring là một cơn ác mộng về bảo mật.

Các thách thức bảo mật xuất phát từ thiết kế của io_uring, cho phép các tiến trình hướng dẫn kernel thực hiện các thao tác mà không cần system call truyền thống. Điều này bỏ qua nhiều biện pháp bảo mật hiện có như bộ lọc seccomp, tạo ra các vector tấn công mới mà các nhóm bảo mật khó có thể giám sát và kiểm soát.

Hạn chế thực tế và thách thức tương thích

Trong khi lsr hoạt động trên các hệ thống macOS và BSD, lợi ích của io_uring chỉ áp dụng cho các hệ thống Linux. Hạn chế nền tảng này, kết hợp với nhu cầu về các phiên bản kernel tương đối mới, hạn chế việc triển khai thực tế. Nhiều nhà phát triển ưu tiên tính di động hơn hiệu suất, đặc biệt đối với các công cụ cơ bản như ls cần hoạt động trên các môi trường đa dạng.

Dự án cũng làm nổi bật những thách thức kiến trúc khi áp dụng io_uring. Hầu hết các công cụ dòng lệnh sử dụng lập trình tuần tự đơn giản, nhưng io_uring yêu cầu kiến trúc dựa trên sự kiện để có hiệu quả. Điều này có nghĩa là cần viết lại đáng kể thay vì chỉ tối ưu hóa đơn giản cho các công cụ hiện có.

Yêu cầu hệ thống

  • Linux (để có được lợi ích từ io_uring)
  • Zig 0.14.0 để biên dịch
  • Hoạt động trên macOS/BSD nhưng không có lợi ích về hiệu suất
  • Cài đặt: zig build -Doptimize-ReleaseSmall -prefix $HOME/.local

Phản hồi cộng đồng và ý nghĩa tương lai

Dự án đã tạo ra sự quan tâm không chỉ vì những cải thiện hiệu suất, mà còn như một minh chứng cho tiềm năng của io_uring. Một số thành viên cộng đồng đang kêu gọi các nỗ lực hiện đại hóa tương tự trên các tiện ích cốt lõi khác, mặc dù những người khác đặt câu hỏi liệu sự phức tạp và đánh đổi bảo mật có đáng giá cho các công cụ đã hoạt động đầy đủ hay không.

Tác giả thừa nhận rằng việc tiết kiệm thời gian thực tế là tối thiểu đối với hầu hết người dùng - có lẽ chỉ năm giây trong suốt cuộc đời sử dụng. Tuy nhiên, dự án phục vụ như một ví dụ giáo dục về cách các giao diện kernel hiện đại có thể được tận dụng nếu các thách thức hệ sinh thái được giải quyết.

Lưu ý: io_uring là một giao diện kernel Linux cho phép các ứng dụng gửi nhiều thao tác I/O một cách hiệu quả mà không cần thực hiện system call riêng lẻ cho từng thao tác.

Tham khảo: lsr

Ảnh chụp màn hình trang kho lưu trữ GitHub cho " targzr ," làm nổi bật sự phát triển tích cực trong cộng đồng mã nguồn mở
Ảnh chụp màn hình trang kho lưu trữ GitHub cho " targzr ," làm nổi bật sự phát triển tích cực trong cộng đồng mã nguồn mở