我可以从 Linux 磁盘缓存中排除某个分区吗?

我可以从 Linux 磁盘缓存中排除某个分区吗?

我用两个 SSD 硬盘创建了一个 MDADM RAID0 磁盘并将其安装在/media/ssd

是否可以防止 Linux 磁盘缓存此已安装分区的读/写操作?这会浪费我的应用程序可以使用的 I/O 时间和 RAM。

答案1

你确定你要这么做吗?

  • 您应该将想要最快访问的内容放在 SSD 上。如果您不缓存数据,您的访问可能会更慢(除非您可以从 SSD 读取的速度比从内存读取的速度快),并且每次访问都需要 I/O。
  • 您是否考虑过额外写入对 SSD 造成的磨损。写入缓存可减少 I/O。

如果需要用于其他用途,则会释放磁盘缓存内存。如果内存没有用于其他用途,那么如果不用于磁盘缓冲,那肯定会被浪费。

您指定的直接 I/O 通常出现在数据库中。但是,许多数据库配置仅确保在块写入时将数据刷新到磁盘。否则,未使用的内存将用于磁盘缓冲区。这可以使磁盘读取请求比从磁盘读取数据所需的速度快得多。

某些操作系统有(曾经有)需要直接 I/O 而不是缓冲的挂载标志。我还没有在 Linux 上看到过这种选项。 sync将强制更快地输出数据,但我认为它从内存中刷新的速度不会比其他方式快得多。

不缓冲 I/O 的选项通常是针对每个打开文件而设定的。打开文件程序负责在文件打开请求中进行适当的系统调用或设置适当的标志。

相关内容