c – 优化O_DIRECT写入
我正在尝试编写一个需要快速写入磁盘的应用程序.我已经达到了写入磁盘的性能目标,这很棒.
但是,我注意到写入磁盘这么快就占用了大量的CPU时间:一个核心最大化,另一个核心占80%,另外两个核心占10-20%.所以我听说O_DIRECT可以通过避免所有这些副本进入内核空间然后复制到磁盘来降低CPU消耗. 我运行了一个小测试程序,证实了这一点 – CPU使用率下降到一个核心的50% – 好多了. 但是,我从来没有像进行正常写入那样获得完全相同的吞吐量,为了快速完成,我不得不使用非常大的记录大小(大约130MB!) 所以,问题是,我猜: >对于写入,有没有比O_DIRECT更好的方法来降低CPU使用率? 我的环境是Linux,我使用的是RAID 50,我能够缓冲写入,直到达到一些最佳记录大小.一次只会有一位作家. 解决方法
引用
this page:
基本上,当使用O_DIRECT时,您正在交换CPU性能的吞吐量.内核停止为您优化吞吐量,作为回报,您可以获得可预测的结果和完全控制. 长话短说:使用O_DIRECT,你将不得不进行缓存和其他自我优化,从而提高吞吐量.巨大的记录大小现在看起来并不那么奇怪. 我不知道任何其他方法,但我不是一个Linux大师.随意问问:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |