有一种情况是,无论何时发生写入,fsync都与该写入一起使用。那么,如何最小化磁盘访问?内核如何做到这一点?
fsync()传输("刷新")文件描述符fd引用的文件(即修改的缓冲区缓存页)的所有修改后的核心内数据(或其他永久性文件)存储设备)。
我认为内核可以在一段时间后定期将所有修改过的缓冲区的数据传输到硬盘。这样它可以最小化磁盘访问。
请提供一些建议/提示。
答案 0 :(得分:0)
一般来说,尽量避免过度思考它。不要调用fsync,只需让内核决定何时进行物理写入。
以下是ext4的内核选项,您可以使用它来根据需要调整内核的行为 - 但这将是一个服务器调优练习,而不是您可以从应用程序实现的内容: http://kernel.org/doc/Documentation/filesystems/ext4.txt
这可能是一个有趣的: “ max_batch_time = usec ext4应该等待的最长时间 要批量的其他文件系统操作 与同步写操作一起。 “