我正在研究一篇论文,我必须测量VM的使用和功耗。
为此,我创建了一个虚拟机,然后登录并启动lookbusy process,利用分配的内存到最大值。
然而,我注意到(主机系统的)实际内存使用量在几分钟的VM利用率之后开始下降。
但是,当我重新登录VM时,它显示了完全利用率。
假设我的VM分配了2GB。当我开始使用时,VM和主机都显示2GB正在加载。
然而,片刻之后,主机的内存开始减少并停止在大约400MB,尽管VM仍然在最大工作。
我认为它只与使用所需的mem页面有关,而不是与整个分配的内存有关。
这就是为什么我现在需要你的帮助 - 我需要一个让我利用分配的内存的工具,
但也保留了真实主机的内存,以便我在这种负载下测量主机的功耗。
事实上,如果内存使用量在1-2分钟后没有开始下降,那么 Lookbusy
就会完成它的工作。测量需要持续数天!
答案 0 :(得分:1)
您没有提供很多细节......但是,根据使用情况,您可能会看到ksm(内核同页合并)的影响。检查ksm是否已启用。
答案 1 :(得分:1)
“气球记忆”也可能是一个问题,例如使用VMWare:
PS: 如果你想生成过多的内存使用,并且你的VM(客户操作系统)是Linux,那么你总是可以使用“memtester”:
答案 2 :(得分:0)
如果要测量特定进程(例如进程ID为1234)的内存消耗,/proc/1234/
目录与进程本身内部相关(或/proc/self/
)。特别是那里的stat
,statm
,status
和maps
伪文件。例如,cat /proc/self/maps
或cat /proc/self/status
为您提供有关cat
进程本身的信息。
我不确定“测量VM”是什么意思; AFAIK虚拟机,例如Qemu吃掉了他们指定的记忆。
我也很好奇你如何测量功耗。