Linux下的AIO网络套接字和零拷贝技术

7
我一直在尝试使用异步Linux网络套接字(aio_read等在aio.h/librt中),其中一个我一直试图找出的问题是它们是否是零拷贝。到目前为止,我读到的几乎所有内容都涉及文件I/O,而我感兴趣的是网络I/O。
AIO使用起来有点麻烦,而且我怀疑它不可移植,所以想知道是否值得坚持使用它。对于我的目的来说,零拷贝只是它与(非阻塞)select/epoll相比唯一的优势(虽然这是一个重大的优势)。

AIO似乎是POSIX.1-2001的一部分,因此应该是可移植的。 - el.pescado - нет войне
POSIX/glibc AIO(-lrtaio_*函数)和Linux AIO(-laioio_*函数)是两个不同的东西。前者是可移植的,但后者不是。请参阅Google的AIO用户指南 - Trevor Robinson
1个回答

3
在GLIBC中,AIO是使用POSIX线程和常规的pread调用实现的。因此,它很可能比selectepoll更昂贵,并且需要自己执行readrecv

有点令人惊讶的是,虽然我猜现在的硬件(以及一些花哨的分页技巧?)在内核调用的内存复制带宽之前就成为了瓶颈.. - Remy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接