CentOS下的KVM,交换耗尽,物理内存可用

我已经有了一个testingCentOS KVM主机,现在有三个CentOS客户运行了一个星期。 有12GB的物理内存,大约7.5GB实际分配给虚拟机。 这些虚拟机甚至还没有被使用,因为服务器仍处于testing阶段,但我注意到在过去的24-48小时内交换使用率一直在攀升。 现在看起来已经筋疲力尽了。

这是free的输出

 # free -m total used free shared buffers cached Mem: 11905 11749 155 0 81 4632 -/+ buffers/cache: 7035 4869 Swap: 2047 2047 0 

所以你可以看到物理内存全部被使用,但它被用作caching内存,我相信这通常很好,因为如果应用程序需要的话,它将被释放。

我运行了这个答案中find的shell脚本,列出了3个qemu-kvm进程。

服务器只为我提供了一个2GB的逻辑卷分配给我,通常我喜欢匹配高达8GB的物理内存。
是值得扩大交换逻辑卷或添加一个单独的交换量?

这是KVM常见的吗? 这不是我在其他KVM主机上看到的,所以需要调整一个特定的设置吗?

任何其他意见/build议?

这个是正常的。 空闲虚拟机使用的页面将被交换,并且内存将被用于caching。 您可以将swappiness设置为零,这可能会导致交换不能以性能(更小的caching)为代价来使用。

这里是红帽的build议 (与许多YMMVs):

交换空间计算如下:

计算所有客人总和所需的内存量 – 在本例中:(50位客人*每位客人1GB内存)= 50GB

将guest虚拟机内存量添加到主机操作系统和主机最小交换空间所需的量 – 在此示例中:50 GB guest虚拟机内存+ 4 GB主机操作系统+ 4 GB最小交换空间= 58 GB

从系统上的物理内存量中减去这个数量 – 在这个例子中是58GB – 32GB = 26GB

答案是需要分配的交换空间量。 在这个例子26GB

这个例子没有考虑内核相同页面合并(KSM),这将减less使用的内存量。

这里RH是说4G交换主机,但在这里他们推荐12G * 0.5 = 6G交换给你。

如果您是KVM的新手,我build议阅读IBM的KVM文档最佳实践 。

根据我的经验,不,不值得分配额外的交换。 您将使用交换(HDD)作为RAM,RAM作为caching(HDD的快捷方式)….听起来大多适得其反。 通常在8GB RAM的系统上,我将分配1-2GB的交换空间,通常是raid分区scheme的其余部分。 例:

3x64GB SSD(操作系统/软件Raid0)2x1TB SATA(Data Raid1)

我将第一个固态硬盘设置为1GB / boot,在剩下的硬盘完全相同的分区后,剩下2个1GB的空间。 听起来像在Raid0交换,通常它不会被访问。

至于KVM,我会查看错误报告以及排除各个访客机器的故障。 有没有内存泄漏?