【发布时间】:2012-04-21 23:38:57
【问题描述】:
我在 linux 2.6 内核上使用 ext4。我有字节数组的记录,范围从几百到 16MB。在应用程序中对每条记录使用 write() 而不是说缓冲 X MB 然后在 X MB 上使用 write() 有什么好处吗?
如果缓冲有好处,那么 ext4 的价值是多少。这个问题是针对已经分析过 ext4 中多块分配器行为的人。
我的理解是文件系统将以页面大小的倍数进行缓冲并尝试将它们刷新到磁盘上。如果提供给 write() 的缓冲区大于文件系统缓冲区会怎样?这是强制文件系统刷新到磁盘()的粗略方法吗
【问题讨论】:
-
即使缓冲了内核调用的数量也会产生影响。这里不太可能是个问题,但是 1k x 1byte 写入通常会比 1 x 1kbytes 更差……当然,我选择了极端情况。