linux下的非同步IO(AIO)是否已成熟?

時間 2021-05-12 06:19:47

1樓:qin meng

我覺得還不太行,看看nginx裡面檔案操作就知道用起來多痛苦了。主要是buffer要自己搞,這個一般人handle不了的。

2樓:考拉

MySQL 5.6的innodb在Linux下已經是用native AIO實現了,還用問成熟不?

可以檢視MySQL的 innodb_use_native_aio 變數,預設值就是開啟的。

注意不是 Glibc 的 AIO,而是Kernel Native AIO

參考官方文件:15.8.6 Using Asynchronous I/O on Linux

3樓:

不算特別成熟。可以看一下seastar,目前版本還是網路用epoll,磁碟IO用libaio,而且僅限xfs。最新核心引入的io_uring可能可以統一網路和磁碟的aio模式。

4樓:Coldwings

怎麼說呢……看你的目的是什麼了。

如果你只是要乙個不阻塞當前執行緒的可復用io而已,那就不應該去用libaio,拿epoll耍同步IO都足夠好了。並且如果沒有所謂跨POSIX平台壓力,還有那麼點兒在乎效率,就不要去用POSIX AIO。

POSIX AIO在Linux下的實現且不談,效率那是真慘……libaio用起來限制條件為檔案以O_DIRECT開啟,這就坑了一堆事情,如data buffer的對齊,如offset與size的對齊,libaio最不成熟的部分也就在這兒。另一方面說,libaio做成這樣,就是擺明了說,快取這種破事它不管,自己玩去。然而實際上,在使用者態做乙個通用的io快取本就不是什麼容易的事情,如果不是追求極致IO效能的非同步IO,並且有硬體支援(PointX:

快取?我就是快取)或者機制支援(最好是Read only/嚴格順序讀寫),沒事別用libaio。

但就效能和可靠性,libaio足以在商業環境要求下歡快地奔起來了。一般除了專門做IO測試、或者儲存計算分離後的儲存端,沒多少必須要用libaio的地方。

5樓:cholerae

不成熟。glibc 的 aio 有 bug , kernel 的 aio 只能以 O_DIRECT 方式做直接 IO , libeio 也是 beta 階段。

epoll 是成熟的,但是 epoll 本身是同步的。Linux 上目前沒有像 IOCP 這樣的成熟非同步 IO 實現。

Linux上沒有真正的非同步,為什麼伺服器還是用Linux的多?

圓胖腫 windows的gui吃資源而且要錢啊,linux雖然目前沒有實現真正的async,但是我們搞非同步的目的不就是為了省錢麼?總不能這裡省了,那裡吐出去了 而且嘛,可以實現某種意義上的非同步,使用者執行緒降下來就行了,至於os的執行緒,那是os的事 現在使用Windows的硬體已經白菜價了。O...

Linux 下的 make, configure 究竟有多難用?

ruki 可以試試 xmake 比起直接寫makefile 以及 autoconf 簡單多了。而且跨平台。基於Lua,靈活方便 吳昊宣 如果是入門級,建議就直接按部就班的照著標程做,configure 然後make,make install就行。做的時候自己去理解各個configure的引數。等使用...

uefi下的win如何引導linux?

jiangtao9999 做乙個支援 UEFI 的 U 盤啟動 GRUB 就是了。現在很多 Linux 安裝光碟都是支援雙模式啟動的。直接寫到 U 盤裡也是雙模式的。UEFI 啟動安裝 Linux 都是直接裝 UEFI 的 GRUB 之後預設用 GRUB GRUB 提供多啟動去引導 Windows ...