WyattJia / WyattJia

https://github.com/wellls/blog/issues
23 stars 0 forks source link

Linux 5.1 中的 `io_uring` 是什么? #61

Open WyattJia opened 5 years ago

WyattJia commented 5 years ago

What is io_uring

自从 Linux 2.5 发布,其内核已经支持异步 I/O (AIO),但是自 AIO 发布以来,人们也抱吐槽了相当长一段时间 AIO 是多么的难用,效率低下。这个情况可能随着 linux 5.1 中的 io_uring 的发布而终结。 io_uring 是 Jens Axboe 提出的,用于代替原先 AIO 的接口,Linux 5.1合入的一个新的异步IO框架和实现。其主旨是在 Linux 上实现更加快速,更加高效的异步 I/O 操作。

Why io_uring

io_uring 的效率远远超过之前的异步I/O (AIO) ,它有更加高效的缓冲支持。 相比 AIO ,io_uring 的优点有:

Example

  1. poll 单个 fd :
    static inline void io_uring_prep_poll_add(
    struct io_uring_sqe *sqe, 
    int fd, 
    short poll_mask);
  2. poll 多个 fd:

to be continue...

WyattJia commented 5 years ago

todo :

WyattJia commented 4 years ago

https://developers.mattermost.com/blog/hands-on-iouring-go/