FIG. 20 is a flow diagram illustrating an embodiment of a process for initializing a system using dormant pages. In some embodiments, process 2000 is executed by a distributed hyper-kernel (e.g., at system initialization time). The process begins at 2002 when a set of guest physical addresses is marked as dormant. At 2004, a set of real physical addresses is designated to be zeroed. The real physical addresses are zeroed on an ongoing basis.
Converting Dormant Pages
Suppose that a software defined server has been initialized and booted up, as described above, and is now operating in steady state. There are guest physical addresses in the system that are marked as dormant that have not yet been mapped to any page of real physical memory.
In some embodiments, dormant pages/guest physical addresses are converted (mapped to real physical pages of memory) on an on-demand basis. Suppose that a VCPU accesses a guest physical address that the VCPU believes to be full of zeroes, but is actually dormant. The dormant guest physical address will need to be mapped to an actual page of physical memory. Described below are details regarding converting or materializing dormant pages.
FIG. 21 illustrates an embodiment of converting a dormant page. In this example, suppose that a thread running in a VCPU implemented on a physical CPU on node_0 (2102) requests to write a set of non-zero values (e.g., a set of 1s) into a guest physical address 6 (GPA 6 (2104) in node_0's page table).