From: Sean Christopherson <seanjc@google.com>
To: David Matlack <dmatlack@google.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>, kvm@vger.kernel.org
Subject: Re: [PATCH v2 0/6] KVM: x86/mmu: Optimize TDP MMU huge page recovery during disable-dirty-log
Date: Thu, 31 Oct 2024 13:00:22 -0700 [thread overview]
Message-ID: <ZyPh1nARL4vThB4J@google.com> (raw)
In-Reply-To: <20240823235648.3236880-1-dmatlack@google.com>
On Fri, Aug 23, 2024, David Matlack wrote:
> Rework the TDP MMU disable-dirty-log path to batch TLB flushes and
> recover huge page mappings, rather than zapping and flushing for every
> potential huge page mapping.
>
> With this series, dirty_log_perf_test shows a decrease in the time it takes to
> disable dirty logging, as well as a decrease in the number of vCPU faults:
>
> $ ./dirty_log_perf_test -s anonymous_hugetlb_2mb -v 64 -e -b 4g
>
> Before: Disabling dirty logging time: 14.334453428s (131072 flushes)
> After: Disabling dirty logging time: 4.794969689s (76 flushes)
>
> Before: 393,599 kvm:kvm_page_fault
> After: 262,575 kvm:kvm_page_fault
>
> v2:
> - Use a separate iterator to walk down to child SPTEs during huge page
> recovery [Sean]
> - Return SHADOW_NONPRESENT_VALUE in error conditions in
> make_huge_spte() [Vipin][off-list]
>
> v1: https://lore.kernel.org/kvm/20240805233114.4060019-8-dmatlack@google.com/
>
> David Matlack (6):
> KVM: x86/mmu: Drop @max_level from kvm_mmu_max_mapping_level()
> KVM: x86/mmu: Batch TLB flushes when zapping collapsible TDP MMU SPTEs
> KVM: x86/mmu: Refactor TDP MMU iter need resched check
> KVM: x86/mmu: Recover TDP MMU huge page mappings in-place instead of
> zapping
> KVM: x86/mmu: Rename make_huge_page_split_spte() to make_small_spte()
> KVM: x86/mmu: WARN if huge page recovery triggered during dirty
> logging
>
> arch/x86/include/asm/kvm_host.h | 4 +-
> arch/x86/kvm/mmu/mmu.c | 16 ++--
> arch/x86/kvm/mmu/mmu_internal.h | 3 +-
> arch/x86/kvm/mmu/spte.c | 43 +++++++++--
> arch/x86/kvm/mmu/spte.h | 5 +-
> arch/x86/kvm/mmu/tdp_mmu.c | 129 +++++++++++++++++---------------
> arch/x86/kvm/mmu/tdp_mmu.h | 4 +-
> arch/x86/kvm/x86.c | 18 ++---
> 8 files changed, 128 insertions(+), 94 deletions(-)
FYI, these are sitting in kvm-x86 mmu, but will be rebased next week, at which
point I'll send the "official" thank yous.
[1/8] KVM: x86/mmu: Drop @max_level from kvm_mmu_max_mapping_level()
https://github.com/kvm-x86/linux/commit/8ccd51cb5911
[2/8] KVM: x86/mmu: Batch TLB flushes when zapping collapsible TDP MMU SPTEs
https://github.com/kvm-x86/linux/commit/35ef80eb29ab
[3/8] KVM: x86/mmu: Check yielded_gfn for forward progress iff resched is needed
https://github.com/kvm-x86/linux/commit/d400ce271d9c
[4/8] KVM: x86/mmu: Demote the WARN on yielded in xxx_cond_resched() to KVM_MMU_WARN_ON
https://github.com/kvm-x86/linux/commit/012a5c17cba4
[5/8] KVM: x86/mmu: Refactor TDP MMU iter need resched check
https://github.com/kvm-x86/linux/commit/cb059b9e2432
[6/8] KVM: x86/mmu: Recover TDP MMU huge page mappings in-place instead of zapping
https://github.com/kvm-x86/linux/commit/13237fb40c74
[7/8] KVM: x86/mmu: Rename make_huge_page_split_spte() to make_small_spte()
https://github.com/kvm-x86/linux/commit/1d2a6d0b6438
[8/8] KVM: x86/mmu: WARN if huge page recovery triggered during dirty logging
https://github.com/kvm-x86/linux/commit/ed5ca61d995f
next prev parent reply other threads:[~2024-10-31 20:00 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-23 23:56 [PATCH v2 0/6] KVM: x86/mmu: Optimize TDP MMU huge page recovery during disable-dirty-log David Matlack
2024-08-23 23:56 ` [PATCH v2 1/6] KVM: x86/mmu: Drop @max_level from kvm_mmu_max_mapping_level() David Matlack
2024-08-23 23:56 ` [PATCH v2 2/6] KVM: x86/mmu: Batch TLB flushes when zapping collapsible TDP MMU SPTEs David Matlack
2024-08-23 23:56 ` [PATCH v2 3/6] KVM: x86/mmu: Refactor TDP MMU iter need resched check David Matlack
2024-10-31 0:04 ` Sean Christopherson
2024-08-23 23:56 ` [PATCH v2 4/6] KVM: x86/mmu: Recover TDP MMU huge page mappings in-place instead of zapping David Matlack
2024-10-09 16:23 ` Vipin Sharma
2024-10-09 17:35 ` Sean Christopherson
2024-10-09 20:21 ` Vipin Sharma
2024-10-30 23:42 ` Sean Christopherson
2024-11-01 20:37 ` Vipin Sharma
2024-11-04 22:39 ` Sean Christopherson
2024-08-23 23:56 ` [PATCH v2 5/6] KVM: x86/mmu: Rename make_huge_page_split_spte() to make_small_spte() David Matlack
2024-08-23 23:56 ` [PATCH v2 6/6] KVM: x86/mmu: WARN if huge page recovery triggered during dirty logging David Matlack
2024-10-31 20:00 ` Sean Christopherson [this message]
2024-11-05 5:56 ` [PATCH v2 0/6] KVM: x86/mmu: Optimize TDP MMU huge page recovery during disable-dirty-log Sean Christopherson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZyPh1nARL4vThB4J@google.com \
--to=seanjc@google.com \
--cc=dmatlack@google.com \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.