Linux有办法用内存缓存IO吗

use*_*951 3 linux memory

我的服务器有大量内存。但是IO的量(每个都很小)非常高。

有没有办法用部分内存制作虚拟驱动器?

我意识到我也可以使用 SSD,但它们很贵。

我需要速度和大小。所以记忆是行不通的。不经常访问的数据应该在 hdisk 中。

pet*_*rph 6

使用tmpfs. 它通常安装在/dev/shm默认大小为总 RAM 的 1/2 处。优点是,内存可供系统一般使用,直到您在那里放置一些东西(它是动态保留的)。不过,您可能想稍微调整默认设置 - 我个人在 /etc/fstab 中有如下内容:

tmpfs  /dev/shm  tmpfs  defaults,size=16m   0   0
tmpfs  /free     tmpfs  defaults,size=66%   0   0
Run Code Online (Sandbox Code Playgroud)

这有两件事:

  1. /dev/shm/为可能想要使用它的应用程序安装相当小的 (16MB) tmpfs 。限制大小以防止由于错误而意外浪费内存。

  2. /free.

请注意,文件系统块大小等于内存页面大小 - 如果您使用具有更大内存页面大小的架构(例如 PowerPC 或 Itanium),即使是空文件也会占用整个页面。通过创建一个大文件,使用具有较小块的“常规”文件系统对其进行格式化(例如,XFS 可以使用小到 512B 的块),并循环挂载它,可以合理地减少这种开销。

至于 SSD - 它们比 RAM 慢几个数量级,无论如何都会被缓存,并且擦除周期数有限,所以问题是您是否想在有足够 RAM 的情况下使用它们。顺便说一下,甚至还有硬件 RAM 驱动器