我在linux上使用async io和rtkaio库。 在我的测试中,一切都很完美,但是,在我的实际应用程序中,我看到aio_write应该返回非常快,非常慢。 将128KB写入O_DIRECT填充文件可能需要100多毫安。 我的测试和应用程序使用相同的I / O大小,我检查相同的文件系统(GFS)。
我添加了计数,我发现有大约50%的异步io操作是短的(短于2毫米)和50%的长(超过2毫米)。
我还检查了测试和应用程序都使用相同的rtkaio库。
我很丢失,任何想法我应该在哪里看?
另一个我的相关问题: / proc / sys / fs / aio-nr永远不会高于1024(Linux上的AIO)
我并不是要沮丧,但我怀疑你会得到一个非常有用的答案,因为这里有太多的变量(一个集群文件系统,异步I / O, O_DIRECT
等),以及除非有人特别熟悉您的设置,否则任何人都可以做的最好的建议就是给你一些模糊的建议。
我想你应该首先尝试确定它是否是实际的写入速度慢,或者它是否是异步回调处理程序的调用需要很长时间。 您可以尝试使用常规同步写入调用替换对aio_write
调用。 另外,你提到的写入尺寸看起来很小,为什么你使用O_DIRECT
? 如果有很多小写,我认为O_DIRECT
会降低性能。
你用open()
文件吗?
确保您使用O_NONBLOCK
打开文件,并使用O_WRONLY
打开。
以上就是c/c++开发分享linux上使用rtkaio的aio_write有时很长相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/544910.html