我的 linux 页面缓存有一个很大的问题,这会减慢 IO。例如,如果我使用 dd 复制一个 lvm 分区,linux 会将数据缓存在缓冲区或缓存中 (free –m)。那不是问题,但是在缓冲区达到特殊值后,复制过程停止并减慢到几 mbs 甚至 kbs。我已经做了很多写入磁盘或 /dev/null 的测试,问题与源驱动器或目标无关。
详细:
- 有两个几乎相同的服务器。两者都使用相同的内核运行 CentOS 6.5。它们具有相同的磁盘、相同的设置、相同的其他硬件,在所有方面都相同。唯一的区别是一台服务器有 2 个 CPU 和 64GB 内存,而另一台服务器有 1 个 CPU 和 32 GB 内存。
- 这里也是以下复制过程的图像:http : //i.stack.imgur.com/tYlym.jpg
- 这里还有一个带有 meminfo 的新版本。meminfo 来自不同的运行,因此值不是相同的,但它是完全相同的行为:http ://i.stack.imgur.com/4SIJG.jpg
- 使用 dd 或其他文件系统复制程序开始复制。
- 缓冲区或缓存开始填满。一切都很好。
- 缓冲区或缓存达到最大数量(在 64GB ram 服务器上,值为 32GB 或 17GB;在 32GB ram 服务器上所有可用内存)
- 在 64GB ram 服务器上,复制过程现在停止或仅限于几 mbs。在 32GB 内存服务器上一切正常。
- 在 64GB ram 服务器上,我可以通过使用“sync; echo 3 > /proc/sys/vm/drop_caches”强制缓存来暂时解决问题。但是当然缓冲区开始立即再次增长并且问题再次发生。
结论:
问题要么与第二个 cpu 有关,要么与内存总量有关。我有一种“感觉”,问题可能是,每个 cpu 都有自己的 32GB ram,并且复制过程仅在 …