用Linux 2.6.18和2.6.32分配xen guest中的内存差异

有人可以解释为什么有相同configuration的客人有可用内存的差异:

pipe理程序:xen 4.2 64位

VM1 :2.6.18-274.el5xen的Centos 5.7,

从xen分配的内存与guest中的内存完全相同524288k(512m)

free -k total used free shared buffers cached Mem: 524288 445004 79284 0 18040 182652 -/+ buffers/cache: 244312 279976 Swap: 524280 0 524280 

尽pipe显示

 " Memory: 500984k/524288k available (2533k kernel code, 23212k reserved, 1746k data, 196k init) " 

dmesg: http : //pastebin.com/FmVRniLJ

问题1:

这里为什么免费显示精确的内存,其中dmesg清晰显示2.5mb内核代码和23mb保留。

VM2: redhat6.0与2.6.32

 free -k total used free shared buffers cached 502224 122064 380160 0 7636 32648 

对于相同的资源RHEl6.0与pvopskernel显示502224k。

问题2:

这可能是什么原因,这可能与pvops内核有关(Linux内核与xen支持)

Q1:崩溃内核(?)

Q2:我还没有看到SLES11 SP2 DomU(也是Linux 3.0内核,没有pvops)的这种行为。

我从dmesg看到的是Ubuntu上的一个RAM磁盘 – 这个磁盘稍后还没有被释放?

不确定在这里,因为你的dmesg输出只显示引导进程的XEN部分,而不是OS的以下“正常”引导进程。

问题1:

为什么免费显示精确的内存,其中dmesg清晰显示2.5mb的内核代码和23mb保留。

我不确定你的解释是否正确。 free显示你总共524288k,所以是dmesgdmesg显示,在启动时,内核和相关的保留约25米,剩下500984k可用。 后来,当你free运行时,还有其他程序正在运行,所以可用内存较less。 但两者在VM1中报告的总数相同。

问题2:

这种行为的原因是什么?这可能与pvops内核(linux-kernel with xen support)有关,或者是因为Linux 3.0+内存pipe理的任何变化。

你在问为什么这两个VM不同? 我要去回答:“没有足够的信息”。 有两个虚拟机可以报告不同信息的原因有很多,没有一个是他们在Xen中是DomU(我怀疑你在裸机或VMware等方面会有类似的差异)。

  1. 他们有不同数量的CPU
  2. 他们使用不同的引导string(VM1具有ro root=/dev/VolGroup00/LogVol00 console=xvc0 graphical utf8和VM2具有root=UUID=ef8a64ee-140d-46b5-8061-231d81e1c7a0 ro console=hvc0 quiet splash $vt_handoff
  3. 内核可能会被编译为具有截然不同的默认值(并且可能是因为VM1是基于RedHat而VM2是基于Debian的)

我不知道你是否做了,但如果你没有尝试检查你的虚拟机内存参数,并检查这个内存reservertion为你的虚拟机“xl列表”

http://xenbits.xen.org/docs/4.2-testing/man/xl.cfg.5.html

谢谢

是的,正如我所猜测的那样,这是linux的xen客人的一个限制。 目前为止,你所使用的内核似乎只能检测到dom0的32GB内存。