Linux核心正在努力實現快速高效的I/O
Linux核心在情人節得到了一枚新的戒指……io_uring。io_uring的目的是在Linux上提供更快、更高效的I/O操作,並且應該在下一個核心週期中提供。
io_uring的Linux塊維護人員和開發人員,Facebook的Jens Axboe在Git上將新介面排隊過夜進入linux-block/for-next 。io_uring介面提供在應用程式和核心之間共享的提交和完成佇列環,以避免多餘的副本。新介面只有兩個新的系統呼叫(io_uring_setup和io_uring_enter)來處理I/O, Axboe之前曾在“aioring”這個名稱下使用此程式碼。
Io_uring比Linux的AIO非同步I/O程式碼要高效得多,它支援高效的緩衝非同步I/O,甚至可以在不執行輪詢I/O系統呼叫的情況下執行I/O,以及其他效率增強。介面補丁 繼續解釋:
- 通過此設定,可以通過單個系統呼叫執行非同步IO。未來的發展將使用這個介面啟用輪詢IO,並進行輪詢提交。後者將使應用程式能夠在不進行任何系統呼叫的情況下執行IO。
- 對於IRQ驅動的IO,如果應用程式想要等待它們發生,則只需要進入核心以進行完成。
- 每個io_uring都有一個工作佇列支援,以支援緩衝的非同步IO。如果命令需要在裝置端等待IO,我們將只向非同步上下文傳送。可以在頁面快取中直接訪問的任何資料都是內聯完成的。這避免了常見執行緒池的緩慢問題,因為快取資料的訪問速度與同步介面一樣快。
- io_uring的設計理念似乎是為Linux提供快速高效的I/O。
圍繞新介面構建的使用者空間庫存在liburing 。Axboe的FIO基準也已經進行了調整,以支援io_uring。這應該是Linux 5.1中另一個值得興奮的特性。
Linux公社的RSS地址 :https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址:https://www.linuxidc.com/Linux/2019-02/156912.htm