Linux kernel 使用fsync最小化磁盘访问

Linux kernel 使用fsync最小化磁盘访问,linux-kernel,disk,fsync,Linux Kernel,Disk,Fsync,有一种情况是,每当发生写操作时,fsync就与该写操作一起使用。那么,如何最大限度地减少磁盘访问?内核是如何做到这一点的 fsync传输将文件描述符fd引用的文件的所有修改的核心数据(即修改的缓冲区缓存页)刷新到磁盘设备或其他永久存储设备 我认为内核可以在一段时间后定期将所有修改过的缓冲区的数据传输到硬盘上。这样可以最大限度地减少磁盘访问 请给出一些建议/提示。一般来说,尽量避免过度思考。不要调用fsync,让内核决定何时进行物理写入 以下是ext4的内核选项,您可以使用这些选项根据需要调整内核

有一种情况是,每当发生写操作时,fsync就与该写操作一起使用。那么,如何最大限度地减少磁盘访问?内核是如何做到这一点的

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

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


请给出一些建议/提示。

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

以下是ext4的内核选项,您可以使用这些选项根据需要调整内核的行为-但这将是一个服务器调整练习,而不是您可以从应用程序中实现的东西:

这可能是一个有趣的问题: max_batch_time=usec ext4应等待的最大时间量 需要批处理的其他文件系统操作 与同步写入操作一起使用。