Re: Live memory allocation?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Alberto Treviño <alberto <at> byu.edu> writes:
> The problem I've seen with this feature is that Windows guests end up taking 
> all of their available memory once they are up and running.  For example, 
> booting Windows XP in KVM 82 show a steady increase in memory.  Then about 
> the time the login box is about to appear, memory usage jumps to the maximum 
> allowed to the VM (512 MB in this case).  I remember reading somewhere 
> Windows would try to initialize all memory during boot, causing KVM to 
> allocate all memory.  VMware, however (and I don't know about VirtualBox) 
> knows about this and works around it, making sure memory isn't all allocated 
> during the Windows boot process.

Windows does zero all memory at boot, and also runs a idle-priority thread in
the background to zero memory as it is freed.  This way it is far less likely to
need to zero a page to satisfy a memory allocation request.  Whether or not this
is still a win now that people care about power consumption is an open question.

I suspect the difference of behavior between KVM and VMware is related to
VMware's page sharing.  All those zeroed pages can be collapsed into one COW
zero page.  I wouldn't be surprised to learn that VMware has heuristics in the
page sharing code specifically for windows guests.

Perhaps KSM would help you?  Alternately, a heuristic that scanned for (and
collapsed) fully zeroed pages when a page is faulted in for the first time could
catch these.

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux