假设我想在syscall 上的ext3Linux文件系统上写入1 GB的数据write(2),这种情况发生在非常 繁忙的环境中 (许多相似的I / O并发)。什么是在区间的最佳缓冲区大小,说,[4 kB, 4 MB]这样做,当
ext3
write(2)
[4 kB, 4 MB]
O_DIRECT
请没有“自己检查”的答案-我想从“文件系统”的家伙那里得到一些答案。
正如评论中所讨论的那样,我认为确切的大小并不重要,假设是:
stat(".")
posix_memalign
因此,介于16kB和几兆字节之间的2的幂应该适合。大部分时间都花在读取磁盘上。在此范围内,文件系统和磁盘基准测试相当平稳。
4 KB似乎通常是页面大小和磁盘块大小。
当然,在使用创建mke2fs文件系统块大小的文件系统时,您甚至可以调整内容,甚至进行调整。
mke2fs
我敢打赌,最佳选择实际上取决于您的硬件(SSD,硬盘?)和系统(及其负载)。