问题描述
我遇到了 perf record '--aio' 选项,在查看源代码时我发现内核缓冲区中的数据首先使用 memcpy() 复制到临时缓冲区中,然后 aio 请求排队等待传输从临时缓冲区到输出文件/套接字(取决于参数)。
我的理解是否正确,下面链接的 linux 管道工谈话幻灯片中提到的 2 倍性能改进来自 memcpy() 比 write() 调用快 2 倍(在幻灯片第 4 页的图表中,暂停时间是以增加 memcpy()) 为代价减少?
write() 不是也被缓冲了吗?有没有办法衡量这种改进?我尝试在我的高核数 AMD 机器上运行下面链接的补丁中提到的命令,但没有注意到 2 倍的改进。有时,我在启用 --aio 的情况下丢失了更多记录,我知道作者使用英特尔机器进行了测试,但在这种情况下会产生很大的不同吗?难道是丢失记录的数量不能准确代表丢失的时间?
为什么 aio 限制在 4 个,aio 线程多了会影响性能吗?
在这种情况下可以使用 io_uring 吗?
https://linuxplumbersconf.org/event/4/contributions/541/attachments/248/534/lpc2019.bof.abudanko.pdf
补丁链接:https://marc.info/?l=linux-kernel&m=154149439404555&w=2
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)