当随机读写大量时如何提高IO?

当随机读写大量时如何提高IO?

我的脚本使用大量的读取和写入。大多数都是小而随机的。我希望 Linux 在将任何数据写入磁盘之前等待 10 秒。

如何实现这一目标?

我认为Linux已经可以自动做到这一点。我想用更极端的方式来做。它就像 Windows 中的超级缓存。

注意:这与问题相关linux 有没有类似 supercache 的东西?。我已经知道Linux默认使用“supercache”之类的系统。然而,Linux 的类似超级缓存的设置必须较低。我想要更多的内存份额用于超级缓存。我还希望每 10 秒进行一次惰性写入。

答案1

/proc 文件系统中有 5 个可调参数可以更改 linux 的写回行为:

dirty_async_ratio
dirty_background_ratio
dirty_sync_ratio
dirty_expire_centisecs
dirty_writeback_centisecs

配置相当复杂,文档可以在内核.org。然而,作为约旦已经说过了,“任何用户空间应用程序都可以告诉内核通过sync()系统调用将其脏缓冲区写入磁盘。”这意味着任何其他进程都可能使您的配置变得无用。

还要记住您的文件系统设置:noatime、data=writeback 和 nobarrier 等挂载选项可以显着提高吞吐量,但如果您的磁盘控制器没有电池支持,也会使您的数据面临风险。

答案2

您可以将更改写入内存 (tmpfs) 中的一个或多个文件,然后每 10 秒将这些更改写入磁盘。

相关内容