Discussion:
Question about physical page allocation to the guest
Steven
2014-10-19 18:09:51 UTC
Permalink
Hi, Eric,
I am trying to understand how KVM allocates physical pages to the
guest and your slides clarify a lot of questions.
(https://events.linuxfoundation.org/slides/2011/linuxcon-japan/lcj2011_guangrong.pdf)

However, I still have some difficulty in figuring out what happens in
the kvm code.

The host kernel is 3.2.14 and EPT is disabled.

In the guest VM, I run a micro-benchmark program that touches 1024
pages (as an integer array). So in the guest VM, I can trace 1024
mm_page_alloc event. However, in the hypervisor I can only trace about
45 (sometimes < 45) kvm_page_fault events, which means that most page
faults in the guest are not exposed to the hypervisor. My questions
are

(1) why such kind of page faults are not exposed to the hypervisor as
EPT is disabled? (My doubt is that it is related to non-presetn PTE as
you discussed in the slides. But could you give some more details?)

(2) In such case, when the physical page are allocated to the VM to
backup the virtual pages? Could you give some hint about which piece
of KVM code calling the get get_user_pages()?

Thanks in advance.

- Steven
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Xiao Guangrong
2014-10-22 16:39:56 UTC
Permalink
Post by Steven
Hi, Eric,
I am trying to understand how KVM allocates physical pages to the
guest and your slides clarify a lot of questions.
(https://events.linuxfoundation.org/slides/2011/linuxcon-japan/lcj2011_guangrong.pdf)
However, I still have some difficulty in figuring out what happens in
the kvm code.
The host kernel is 3.2.14 and EPT is disabled.
In the guest VM, I run a micro-benchmark program that touches 1024
pages (as an integer array). So in the guest VM, I can trace 1024
mm_page_alloc event. However, in the hypervisor I can only trace about
45 (sometimes < 45) kvm_page_fault events, which means that most page
faults in the guest are not exposed to the hypervisor. My questions
are
(1) why such kind of page faults are not exposed to the hypervisor as
EPT is disabled? (My doubt is that it is related to non-presetn PTE as
you discussed in the slides. But could you give some more details?)
Two cases, the one is the page you accessed have already mapped into the
guest (the Present bit in the SPTE (shadow page table entry) is set).
Another is that we can do page prefetch in KVM that can fill
more nonpresent sptes in one vm-exit.
Post by Steven
(2) In such case, when the physical page are allocated to the VM to
backup the virtual pages? Could you give some hint about which piece
of KVM code calling the get get_user_pages()?
In the case if the hva of the gpa you are accessing is not mapped in
the hypervisor's address space. Please follow the code of try_async_pf
Post by Steven
Thanks in advance.
Enjoy it. :)

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