在具有 32 GB RAM、3 TB 可用磁盘空间、作为 KVM 管理程序运行的中级 CentOS 6.4/64 服务器上,我开始将 200 GB 文件复制到同一本地文件系统中的目的地。其实这个文件就是一个KVM虚拟磁盘镜像(对应一个关闭的VM)。其他 12 个虚拟机在同一台机器上正常运行。
我开始时有足够的空间:
[root@myserver]$ free
total used free shared buffers cached
Mem: 32847956 16722708 16125248 0 63756 407740
-/+ buffers/cache: 16251212 16596744
Swap: 16383992 0 16383992
Run Code Online (Sandbox Code Playgroud)
但是随着复制的进行,内存使用量开始稳定增长,直到达到交换。当然,现在这会减慢一切……副本最终在大约 30 分钟后结束。最后,我的记忆是这样的:
[root@myserver]$ free
total used free shared buffers cached
Mem: 32847956 32643564 204392 0 24392 23213400
-/+ buffers/cache: 9405772 23442184
Swap: 16383992 12057880 4326112
Run Code Online (Sandbox Code Playgroud)
查看现在正在使用交换的进程,我观察了几个 qemu-kvm 实例。因此,现在服务器的性能受到了影响,因为现在许多虚拟机(如果不是全部)都在进行交换。我没有找到无需重新启动此生产服务器即可将交换恢复为零(否则为正常状态)的方法。
什么会导致这种情况?一个简单的 cp 进程怎么会吃掉那么多内存,又该如何避免呢?任何意见 ?
谢谢