对于某项工作,我有时需要在 DomU(CentOS 5)中增加内存。触发该工作的条件是我只能在该 DomU 中检查的:DomU 正在等待上传。上传完成后,它需要处理收到的数据 - 最适合的是 ram-disk。
对于这种情况,我将 DomU 的内存设置为最小 1 GB、最大 16 GB。
现在,我正在尝试寻找一种优雅的方法来从 DomU 内部将内存大小调整为最大/最小。
对此的第一个解决方案是使用从 DomU 到所有可能的 Dom0 的 ssh,然后在那里触发“xm mem-set”命令(使用 sudo)。
我读过一些关于 xen-store 的内容。其中提到了触发器... 所以这让我觉得应该有更好的方法。事实证明,内存膨胀是一种更好的方法。
这应该在 DomU 中工作:
echo $((4096*1024*1024)) >/proc/xen/balloon
应将内存大小调整为 4 GB。
但是: cat /proc/xen/ballon 说:
Current allocation: 2165536 kB
Requested target: 4192256 kB
Low-mem balloon: 14611680 kB
High-mem balloon: 0 kB
Driver pages: 0 kB
Xen hard limit: 2165536 kB
那么 xen 的硬限制从何而来?
结果现在是我的 DomU 有 2 GB RAM。Dom0 中的 xm 列表显示 DomU 仍为 1 GB RAM...
这里出了什么问题?是的 - 由于 DomU 版本低于 3.0.4,我将“mem=16G”作为内核启动参数添加到我的 DomU。
使用 Dom0 SLES11 SP1(XEN 4.0.1)和 CentOS 5.6 DomU(仍然是 XEN 3.0.3?)时,
echo 4G >/proc/xen/ballon
一开始没有做任何事情 - 但在我 xm mem-sets
从 Dom0(最高 16 GB - 有效)成功执行了一些操作之后,/proc/xen/气球也在 DomU 内工作过。
答案1
您可以使用 xen 的 balloon 驱动程序,它具有最小内存和最大内存...它们都是动态的,并且是内置的