Linux 2.6.18 和 2.6.32 的 xen 客户机中分配的内存差异

Linux 2.6.18 和 2.6.32 的 xen 客户机中分配的内存差异

有人可以解释一下为什么相同配置的 Guest 上的可用内存存在差异:

虚拟机管理程序:xen 4.2 64 位

VM1:Centos 5.7 带有 2.6.18-274.el5xen,

xen 分配的内存与客户机内部的内存完全相同 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

尽管表现出

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

dmesg:http://pastebin.com/FmVRniLJ

问题1:

这里的为什么 free 显示了精确的内存,而 dmesg clear 显示内核代码为 2.5mb,保留为 23mb。

VM2:redhat6.0 带2.6.32

free -k

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

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

问题2:

造成这种现象的原因可能与 pvops 内核(支持 xen 的 linux 内核)有关吗?

答案1

Q1:可能被崩溃内核使用(?)

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

我从 dmesg 中看到的是 Ubuntu 上的 RAM 磁盘 - 这个磁盘以后可能不会被释放?

这里不确定,因为您的dmesg输出仅显示启动过程的 XEN 部分,而不是操作系统以下的“正常”启动过程。

答案2

问题 1:

为什么 free 显示了精确的内存,而 dmesg clear 显示内核代码为 2.5mb,保留为 23mb。

我不确定你的解释是否正确。free显示总共 524288k, 也是如此dmesgdmesg显示在启动时,内核和相关预留已使用大约 25m,剩余 500984k 可用。稍后,当您运行 时free,还有其他程序正在运行,因此可用内存较少。但两者在 VM1 中报告的总数相同。

问题2:

造成这种行为的原因可能是什么?这与 pvops 内核(支持 xen 的 linux 内核)有关,还是因为 Linux 3.0+ 内存管理中的任何变化。

思考你问的是这两个虚拟机为何不同?我的答案是:“信息不足”。两台虚拟机报告不同信息的原因有很多,但都不一定是因为它们是 Xen 中的 DomU(我怀疑您在裸机或 VMware 等上也会遇到类似的差异):

  1. 它们有不同数量的 CPU
  2. 它们使用不同的启动字符串(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)

答案3

我不知道你是否这样做了,但如果你没有尝试检查你的虚拟机内存参数,并使用“xl list”检查你的虚拟机的内存预留

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

谢谢

答案4

是的,正如我所猜测的,这是 Linux 的 xen 客户机的限制。到目前为止,您使用的内核似乎只能检测到 dom0 的 32 GB 内存。

相关内容