|
|
|
|
|
by derefr
3337 days ago
|
|
The parent doesn't mean that the hypervisor will merge identical MMU->physical page mappings (like a Copy-on-Write process fork would); they mean that VM pages' underlying host virtual pages literally get periodically hashed for their current content by a background process on the dom0 and merged when they are found to have identical hashes. The underlying virtual page is then made copy-on-write. Or, to put that another way: the host memory for most modern hypervisors consists of a heap of "new" pages, and then a generational garbage collector that moves said pages, if still alive, into a content-addressible "old" store. As such, if two VMs each have a process that 1. calls malloc() 1000 times to get 1000 1-page buffers randomly spaced through their memory, the mappings different for each VM; and then 2. uses a fixed PRNG seed to generate random data [but the same random data] to fill those pages; then those two processes' pages will still get collapsed together for a 50% savings. |
|