xen虚拟内存丢失

我有一个320GB内存的Ubuntu服务器。 我在这台机器上安装了xen 4.4.1,并运行了2个Debian虚拟机。 一个+ -100GB的内存和一个+ -200GB。 一切正常,直到有一点,200GB的机器报告只有128GB。 该服务器的正常运行时间为144天,在上个月的某个地方,超过70GB的内存丢失。

在dom0:

$ sudo xl info ... total_memory : 327634 free_memory : 16547 ... $ sudo xl list Name ID Mem VCPUs State Time(s) Domain-0 0 510 32 r----- 54.4 mycroft 1 102400 16 -b---- 33.3 adler 2 204000 16 -b---- 34.5 $ uname -a Linux moriarty 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux 

根据xl列表在具有204000MB的VM上:

 $ free -m total used free shared buffers cached Mem: 128404 6220 122184 0 10 56 -/+ buffers/cache: 6152 122251 Swap: 0 0 0 $ uname -a Linux adler 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux $ cat /proc/meminfo MemTotal: 131486352 kB MemFree: 125117048 kB Buffers: 11216 kB Cached: 58016 kB SwapCached: 0 kB Active: 6057868 kB Inactive: 47632 kB Active(anon): 6036284 kB Inactive(anon): 324 kB Active(file): 21584 kB Inactive(file): 47308 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 12 kB Writeback: 0 kB AnonPages: 6036296 kB Mapped: 14740 kB Shmem: 344 kB Slab: 20024 kB SReclaimable: 6504 kB SUnreclaim: 13520 kB KernelStack: 2728 kB PageTables: 14824 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 65743176 kB Committed_AS: 91568356 kB VmallocTotal: 34359738367 kB VmallocUsed: 214612 kB VmallocChunk: 34359523687 kB HardwareCorrupted: 0 kB AnonHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 208896000 kB DirectMap2M: 0 kB 

我已经重新启动了两台服务器,没有任何结果:dom0持续报告204gB,机器本身报告128gB。 造成差异的原因是什么?我该如何解决?

编辑

dmesg输出给了我这个

 [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] Xen: 0000000000000000 - 00000000000a0000 (usable) [ 0.000000] Xen: 00000000000a0000 - 0000000000100000 (reserved) [ 0.000000] Xen: 0000000000100000 - 0000002000000000 (usable) [ 0.000000] Xen: 0000002000000000 - 00000031ce000000 (unusable) 

最后一行的范围似乎与缺less的内存一致。

我有同样的问题与debian wheezy 7.8客人。 安装wheezy backports内核3.16.0-0.bpo.4-amd64解决了我。 这是在客人身上,我没有碰到主人。

将以下行添加到/etc/apt/sources.list中:

 deb http://ftp.uk.debian.org/debian/ wheezy-backports main 

然后运行

 apt-get update apt-get -t wheezy-backports install linux-image-amd64 reboot 

你有记忆气球吗? 如果是这样,“缺less”的内存应该是由气球驱动程序回收的内存。

你可以在机器上输出cat /proc/meminfo与“缺less”的内存?

编辑

从你的/ proc / meminfo输出看来,气球确实在工作。

看一下“DirectMap4k”的值:它报告大约200GB的RAM由4k粒度的MMUpipe理。 换句话说,虚拟化硬件可以看到完整的200GB RAM。

但是,“MemTotal”值清楚地表明总可用内存仅为“135 GB”。

这意味着在内核/驱动程序级别“偷”了一些内存供其他用途。 如此大量的空闲内存是膨胀的完美目标。 您可以在这里find更多信息。