Linux有没有办法用内存缓存IO

Linux有没有办法用内存缓存IO

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

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

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

我需要速度和规模。所以光靠记忆是不行的。不经常访问的数据应该放在hdisk中。

答案1

使用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

这有两件事:

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

  2. 在 处挂载 tmpfs,其大小为可用 RAM 的 2/3 /free

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

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

答案2

是的。这称为磁盘缓存。它会自动发生。

如果您看到太多的 I/O,那么要么是您的程序失控,要么是您对某些内容进行了错误的调整,要么是您的系统没有足够的资源。

您可以将文件放入 RAM 驱动器中,但这几乎总是比让内核管理最近使用的数据的缓存更糟糕。分配给 RAM 驱动器的每个字节对于应用程序和磁盘缓存来说要少得多。

答案3

看看RapidCache!

它是RapidDisk 的一部分。它对块与文件进行 IO 缓存(如 Linux 缓存所做的那样),使其成为虚拟机的理想选择!

http://rapiddisk.org/index.php

相关内容