0

有一种情况是,每当发生写入时,fsync 都会与该写入一起使用。那么,如何最小化磁盘访问呢?内核如何做到这一点?

fsync() 将文件描述符 fd 引用的文件的所有修改的内核数据(即修改的缓冲区高速缓存页)传输(“刷新”)到磁盘设备(或其他永久存储设备)。

我认为内核可以在一段时间后定期将所有修改缓冲区的数据传输到硬盘。这样就可以最大限度地减少磁盘访问。

请提供一些建议/提示。

4

1 回答 1

0

一般来说,尽量避免过度思考。不要调用 fsync,让内核决定何时进行物理写入。

以下是 ext4 的内核选项,您可以使用它来调整内核的行为以满足您的需求 - 但这将是一个服务器调整练习,而不是您可以从您的应用程序中实现的东西:http: //kernel.org/doc/Documentation/文件系统/ext4.txt

这可能是一个有趣的问题:“ max_batch_time=usec ext4 等待其他文件系统操作与同步写入操作一起批处理的最长时间。”

于 2012-05-24T21:02:03.420 回答