Re: SMP support of MMU

Avi Kivity
2007-05-30T04:53:45Z

Dong, Eddie wrote:
> Avi:
> I noticed the current MMU data structure is defined as per VCPU
> such as:
>
> struct kvm_vcpu {
> .....
> struct list_head free_pages;
> struct kvm_mmu_page page_header_buf[KVM_NUM_MMU_PAGES];
> .....
> }
>
> This is a hot topics in Xen development time: whether should we
> support global shadow PT or per VCPU shadow PT? Per VCPU shadow is much
> close to native from architecture point of view, but definitely much
> complicated in implementation. Do we really need to implement per VCPU
> shadow? Xen today is still global shadow.
> If global shadow is good enough, then I will try to move
> free_pages and page_header_buf[KVM_NUM_MMU_PAGES] to struct kvm.
> Comments?
>

I think a global shadow is actually better. Consider a multithreaded
application where threads are free to migrate (e.g. many more threads
than vcpus); a per-vcpu shadow will cause many more faults than a global
shadow.

I have patch that converts page_header_buf into a slab cache; that
should remove the per-vcpu fields. I just have to debug it before I can
apply it. I'll dig it up.

(the reason they are actually in kvm_vcpu is that we started with a
non-caching mmu implementation, where you can't share pages anyway)

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