From: Nicholas Piggin <npiggin@gmail.com>
To: kvm-ppc@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org, Paul Mackerras <paulus@ozlabs.org>
Subject: Re: [PATCH 2/2] KVM: PPC: Book3S HV: lockless tlbie for HPT hcalls
Date: Fri, 6 Apr 2018 15:39:32 +1000 [thread overview]
Message-ID: <20180406153932.3437ad3c@roar.ozlabs.ibm.com> (raw)
In-Reply-To: <20180405175631.31381-3-npiggin@gmail.com>
On Fri, 6 Apr 2018 03:56:31 +1000
Nicholas Piggin <npiggin@gmail.com> wrote:
> tlbies to an LPAR do not have to be serialised since POWER4,
> MMU_FTR_LOCKLESS_TLBIE can be used to avoid the spin lock in
> do_tlbies.
>
> Testing was done on a POWER9 system in HPT mode, with a -smp 32 guest
> in HPT mode. 32 instances of the powerpc fork benchmark from selftests
> were run with --fork, and the results measured.
>
> Without this patch, total throughput was about 13.5K/sec, and this is
> the top of the host profile:
>
> 74.52% [k] do_tlbies
> 2.95% [k] kvmppc_book3s_hv_page_fault
> 1.80% [k] calc_checksum
> 1.80% [k] kvmppc_vcpu_run_hv
> 1.49% [k] kvmppc_run_core
>
> After this patch, throughput was about 51K/sec, with this profile:
>
> 21.28% [k] do_tlbies
> 5.26% [k] kvmppc_run_core
> 4.88% [k] kvmppc_book3s_hv_page_fault
> 3.30% [k] _raw_spin_lock_irqsave
> 3.25% [k] gup_pgd_range
>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> ---
> arch/powerpc/kvm/book3s_hv_rm_mmu.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/kvm/book3s_hv_rm_mmu.c b/arch/powerpc/kvm/book3s_hv_rm_mmu.c
> index 78e6a392330f..0221a0f74f07 100644
> --- a/arch/powerpc/kvm/book3s_hv_rm_mmu.c
> +++ b/arch/powerpc/kvm/book3s_hv_rm_mmu.c
> @@ -439,6 +439,9 @@ static inline int try_lock_tlbie(unsigned int *lock)
> unsigned int tmp, old;
> unsigned int token = LOCK_TOKEN;
>
> + if (mmu_has_feature(MMU_FTR_LOCKLESS_TLBIE))
> + return 1;
> +
> asm volatile("1:lwarx %1,0,%2\n"
> " cmpwi cr0,%1,0\n"
> " bne 2f\n"
> @@ -452,6 +455,12 @@ static inline int try_lock_tlbie(unsigned int *lock)
> return old == 0;
> }
>
> +static inline void unlock_tlbie_after_sync(unsigned int *lock)
> +{
> + if (mmu_has_feature(MMU_FTR_LOCKLESS_TLBIE))
> + return;
> +}
> +
> static void do_tlbies(struct kvm *kvm, unsigned long *rbvalues,
> long npages, int global, bool need_sync)
> {
> @@ -483,7 +492,7 @@ static void do_tlbies(struct kvm *kvm, unsigned long *rbvalues,
> }
>
> asm volatile("eieio; tlbsync; ptesync" : : : "memory");
> - kvm->arch.tlbie_lock = 0;
> + unlock_tlbie_after_sync(&kvm->arch.tlbie_lock);
Well that's a silly bug in the !LOCKLESS path, that was supposed
to move to unlock, of course. Will fix it up after some time for
comments.
Thanks,
Nick
next prev parent reply other threads:[~2018-04-06 5:39 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-05 17:56 [PATCH 0/2] KVM powerpc tlbie scalability improvement Nicholas Piggin
2018-04-05 17:56 ` [PATCH 1/2] KVM: PPC: Book3S HV: trace_tlbie must not be called in realmode Nicholas Piggin
2018-04-08 10:17 ` Balbir Singh
2018-04-08 13:41 ` Nicholas Piggin
2018-04-10 3:21 ` Michael Ellerman
2018-04-10 5:55 ` Naveen N. Rao
2018-04-10 6:10 ` Nicholas Piggin
2018-04-11 14:49 ` [1/2] " Michael Ellerman
2018-04-05 17:56 ` [PATCH 2/2] KVM: PPC: Book3S HV: lockless tlbie for HPT hcalls Nicholas Piggin
2018-04-06 5:39 ` Nicholas Piggin [this message]
2018-04-06 6:12 ` Michael Ellerman
2018-05-10 5:30 ` Paul Mackerras
2018-05-14 4:04 ` Michael Ellerman
2018-05-17 3:53 ` Paul Mackerras
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=20180406153932.3437ad3c@roar.ozlabs.ibm.com \
--to=npiggin@gmail.com \
--cc=kvm-ppc@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paulus@ozlabs.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).