加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 写入的最佳缓冲区大小(2)

发布时间:2020-12-16 10:30:38 所属栏目:百科 来源:网络整理
导读:假设我想在文件中写入1 GB的数据,比如说使用write(2)系统调用的ext3 Linux文件系统,这种情况发生在一个非常繁忙的环境中(很多类似的I / O很简单).间隔中的最佳缓冲区大小是多少,例如,[4 kB,4 MB] 不使用O_DIRECT打开标志,或 使用O_DIRECT? 请不要“自己检查
假设我想在文件中写入1 GB的数据,比如说使用write(2)系统调用的ext3 Linux文件系统,这种情况发生在一个非常繁忙的环境中(很多类似的I / O很简单).间隔中的最佳缓冲区大小是多少,例如,[4 kB,4 MB]

>不使用O_DIRECT打开标志,或
>使用O_DIRECT?

请不要“自己检查”答案 – 我想从“文件系统”人那里得到答案.

解决方法

正如评论中所讨论的那样,我认为确切的大小并不重要,假设它是:

>文件系统大小的一小部分(见Joachim Pileborg评论建议stat(“.”)等)
> 2的幂(因为计算机和内核像他们一样)
>不要太大(例如适合处理器内的某些缓存,例如L2缓存)
>在内存中对齐(例如使用posix_memalign缩放到页面大小).

因此,16k字节和几兆字节之间的2的功率应该是合适的.大部分时间都花在阅读磁盘上.文件系统和磁盘基准测试在该范围内非常平坦.

4Kbytes似乎通常是页面大小和磁盘块大小.

当然,在使用文件系统块大小mke2fs创建文件系统时,您可以调整内容,甚至调整.

我敢打赌,最优化实际上取决于您的硬件(SSD,硬盘?)和您的系统(及其负载).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读