[轉] io_uring


 

關於 異步/同步 阻塞/非阻塞 IO  https://www.ibm.com/developerworks/cn/linux/l-async/index.html

部分代碼分析 https://nan01ab.github.io/2019/05/io_uring.html

https://zhuanlan.zhihu.com/p/62682475

https://www.byteisland.com/io_uring%EF%BC%881%EF%BC%89-%E6%88%91%E4%BB%AC%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BC%9A%E9%9C%80%E8%A6%81-io_uring/

https://www.byteisland.com/io_uring%ef%bc%882%ef%bc%89-%e4%bb%8e%e5%88%9b%e5%bb%ba%e5%bf%85%e8%a6%81%e7%9a%84%e6%96%87%e4%bb%b6%e6%8f%8f%e8%bf%b0%e7%ac%a6-fd-%e5%bc%80%e5%a7%8b/

 

IO uring 的簡單使用  https://segmentfault.com/a/1190000019300089

用 io_uring 替代 epoll 實現高速 polling  https://segmentfault.com/a/1190000019361819

 IO uring

最近幾年一直流行 kernel bypass,從網絡到存儲,各個領域開花,內核在性能方面被各種詬病。io_uring 出現以后,算是扳回一局。

io_uring 有如此出眾的性能,主要來源於以下幾個方面:

  • 用戶態和內核態共享提交隊列(submission queue)和完成隊列(completion queue)
  • IO 提交和收割可以 offload 給 Kernel,且提交和完成不需要經過系統調用(system call)
  • 支持 Block 層的 Polling 模式
  • 通過提前注冊用戶態內存地址,減少地址映射的開銷

不僅如此,io_uring 還可以完美支持 buffered IO,而 libaio 對於 buffered IO 的支持則一直是被詬病的地方。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM