All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Nicholas Piggin" <npiggin@gmail.com>
To: "Shrikanth Hegde" <sshegde@linux.ibm.com>, <mpe@ellerman.id.au>
Cc: aneesh.kumar@kernel.org, naveen.n.rao@linux.ibm.com,
	linuxppc-dev@lists.ozlabs.org, srikar@linux.vnet.ibm.com
Subject: Re: [PATCH] powerpc/pseries: fix accuracy of stolen time
Date: Tue, 13 Feb 2024 15:53:55 +1000	[thread overview]
Message-ID: <CZ3PV3B25X28.11IO3Q978SM4P@wheely> (raw)
In-Reply-To: <20240213052635.231597-1-sshegde@linux.ibm.com>

On Tue Feb 13, 2024 at 3:26 PM AEST, Shrikanth Hegde wrote:
> powerVM hypervisor updates the VPA fields with stolen time data.
> It currently reports enqueue_dispatch_tb and ready_enqueue_tb for
> this purpose. In linux these two fields are used to report the stolen time.
>
> The VPA fields are updated at the TB frequency. On powerPC its mostly
> set at 512Mhz. Hence this needs a conversion to ns when reporting it
> back as rest of the kernel timings are in ns. This conversion is already
> handled in tb_to_ns function. So use that function to report accurate
> stolen time.
>
> Observed this issue and used an Capped Shared Processor LPAR(SPLPAR) to
> simplify the experiments. In all these cases, 100% VP Load is run using
> stress-ng workload. Values of stolen time is in percentages as reported
> by mpstat. With the patch values are close to expected.
>
> 		6.8.rc1		+Patch
> 12EC/12VP	   0.0		   0.0
> 12EC/24VP	  25.7		  50.2
> 12EC/36VP	  37.3		  69.2
> 12EC/48VP	  38.5		  78.3
>
>
> Fixes: 0e8a63132800 ("powerpc/pseries: Implement CONFIG_PARAVIRT_TIME_ACCOUNTING")

Good find and fix. Paper bag for me.

I wonder why we didn't catch it in the first place. Maybe we
didn't understand the hypervisor's sharing algorithm and what
we expected it to report.

In any case this is right. The KVM implementation of the counters is
in TB, so that's fine.

Reviewed-by: Nicholas Piggin <npiggin@gmail.com>

Thanks,
Nick

> Signed-off-by: Shrikanth Hegde <sshegde@linux.ibm.com>
> ---
>  arch/powerpc/platforms/pseries/lpar.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c
> index 4561667832ed..bdcc428e1c2b 100644
> --- a/arch/powerpc/platforms/pseries/lpar.c
> +++ b/arch/powerpc/platforms/pseries/lpar.c
> @@ -662,8 +662,12 @@ u64 pseries_paravirt_steal_clock(int cpu)
>  {
>  	struct lppaca *lppaca = &lppaca_of(cpu);
>
> -	return be64_to_cpu(READ_ONCE(lppaca->enqueue_dispatch_tb)) +
> -		be64_to_cpu(READ_ONCE(lppaca->ready_enqueue_tb));
> +	/*
> +	 * VPA steal time counters are reported at TB frequency. Hence do a
> +	 * conversion to ns before returning
> +	 */
> +	return tb_to_ns(be64_to_cpu(READ_ONCE(lppaca->enqueue_dispatch_tb)) +
> +			 be64_to_cpu(READ_ONCE(lppaca->ready_enqueue_tb)));
>  }
>  #endif
>
> --
> 2.39.3


  reply	other threads:[~2024-02-13  5:54 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-13  5:26 [PATCH] powerpc/pseries: fix accuracy of stolen time Shrikanth Hegde
2024-02-13  5:53 ` Nicholas Piggin [this message]
2024-02-13  6:12 ` Srikar Dronamraju
2024-02-15 12:57 ` Michael Ellerman

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=CZ3PV3B25X28.11IO3Q978SM4P@wheely \
    --to=npiggin@gmail.com \
    --cc=aneesh.kumar@kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=naveen.n.rao@linux.ibm.com \
    --cc=srikar@linux.vnet.ibm.com \
    --cc=sshegde@linux.ibm.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.