性能记录 --aio 性能

问题描述

我遇到了 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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...