Re: KVM architecture docs

Avi Kivity
2008-03-05T06:58:48Z

Zhao Forrest wrote:
>>> Normally swapping mechanism choose the Least Recently Used(LRU) pages
>>> of a process to be swapped out. When KVM uses MMU notifier in linux
>>> kernel to implement swapping for VM, could KVM choose LRU pages of a
>>> VM to swap out? If so, could you give a brief description about how
>>> this is implemented?
>>>
>>>
>> The Linux memory manager approximates LRU by scanning pages for the
>> accessed bit, which is set in the pte by the processor when a page is
>> accessed through that pte. mmu notifiers provide a callback for the
>> check, so that kvm can check the accessed bit on the shadow ptes.
>>
>
> Linux kernel maintains a reverse mapping from a page frame to all page tables
> pointing to this page frame. Does KVM need to maintain a similar reverse mapping
> from a page frame to all shadow page tables pointing to this page frame?
>

Yes, look for 'rmap' in mmu.c. The purpose was initially to be able to
write-protect shadowed guest page tables without horrible worst-case
performance, and was later extended to swapping.

With mmu notifiers, when the kernel swaps a page, it first scans its own
rmap, then calls kvm which scans the kvm rmap. So one way to look at
mmu notifiers is as rmap extenders (that's not the whole story -- kvm
ptes are in a different format than Linux ptes, so the code has to be
different).

--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.