Linux中磁盘写缓冲区大小

3
如何在Linux中找到磁盘写缓冲区大小?

这是 https://dev59.com/KlrUa4cB1Zd3GeqPhjes#7044958 的副本。 - Jim Garrison
可能是重复的问题:如何更改内核I/O缓冲区大小 - nobody
2个回答

2

write系统调用通常只是将您的数据复制到页面缓存中,然后稍后将其刷新到磁盘。页面缓存的大小是动态的,内核会尝试使用所有空闲内存。

有关更多详细信息,请参见页面缓存和页面写回


实际上,我建议现在传递一个缓冲区,例如16k字节到128k字节的 write(2),进行基准测试以获得最佳数字(我认为这并不重要!)。 - Basile Starynkevitch
@BasileStarynkevitch 我建议尽可能使用内存映射文件 - 避免不必要的复制。 - Maxim Egorushkin

0

在将文件复制到USB等操作时,存储在缓冲区中的数据处于“脏”内存。

尝试挂载您的USB闪存驱动器, #pv file.5GB.. > /media/.../diskname/ 它会快速运行一段时间,然后停止。因为它填满了脏内存中的缓冲区

在另一个终端中 #cat /proc/meminfo | grep Dirty 脏内存占用了很多空间。 pv使传输量达到100%并停止运行时, 脏内存达到最大值,然后慢慢降至零。当发生这种情况时,pv成功完成。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接