From: Madadi Vineeth Reddy <vineethr@linux.ibm.com>
To: Madhavan Srinivasan <maddy@linux.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>,
Nicholas Piggin <npiggin@gmail.com>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Naveen N Rao <naveen@kernel.org>,
Ard Biesheuvel <ardb@kernel.org>,
Eric Biggers <ebiggers@google.com>,
"Martin K . Petersen" <martin.petersen@oracle.com>,
Andrew Morton <akpm@linux-foundation.org>,
Yosry Ahmed <yosry.ahmed@linux.dev>,
Tamir Duberstein <tamird@gmail.com>,
Srikar Dronamraju <srikar@linux.ibm.com>,
Shrikanth Hegde <sshegde@linux.ibm.com>,
linuxppc-dev@lists.ozlabs.org,
LKML <linux-kernel@vger.kernel.org>,
Madadi Vineeth Reddy <vineethr@linux.ibm.com>
Subject: Re: [PATCH] powerpc/defconfigs: Set HZ=1000 on ppc64 and powernv defconfigs
Date: Wed, 16 Apr 2025 12:10:52 +0530 [thread overview]
Message-ID: <d482d2ff-90e6-4c71-8681-1d9fceeb70f9@linux.ibm.com> (raw)
In-Reply-To: <20250330074734.16679-1-vineethr@linux.ibm.com>
Hi Maddy,
Ping.
Any thoughts on this? Can it be picked up?
Thanks,
Madadi Vineeth Reddy
On 30/03/25 13:17, Madadi Vineeth Reddy wrote:
> Commit 030bdc3fd080 ("powerpc/defconfigs: Set HZ=100 on pseries and ppc64
> defconfigs") lowered CONFIG_HZ from 250 to 100, citing reduced need for a
> higher tick rate due to high-resolution timers and concerns about timer
> interrupt overhead and cascading effects in the timer wheel.
>
> However, improvements have been made to the timer wheel algorithm since
> then, particularly in eliminating cascading effects at the cost of minor
> timekeeping inaccuracies. More details are available here
> https://lwn.net/Articles/646950/. This removes the original concern about
> cascading, and the reliance on high-resolution timers is not applicable
> to the scheduler, which still depends on periodic ticks set by CONFIG_HZ.
>
> With the introduction of the EEVDF scheduler, users can specify custom
> slices for workloads. The default base_slice is 3ms, but with CONFIG_HZ=100
> (10ms tick interval), base_slice is ineffective. Workloads like stress-ng
> that do not voluntarily yield the CPU run for ~10ms before switching out.
> Additionally, setting a custom slice below 3ms (e.g., 2ms) should lower
> task latency, but this effect is lost due to the coarse 10ms tick.
>
> By increasing CONFIG_HZ to 1000 (1ms tick), base_slice is properly honored,
> and user-defined slices work as expected. Benchmark results support this
> change:
>
> Latency improvements in schbench with EEVDF under stress-ng-induced noise:
>
> Scheduler CONFIG_HZ Custom Slice 99th Percentile Latency (µs)
> --------------------------------------------------------------------
> EEVDF 1000 No 0.30x
> EEVDF 1000 2 ms 0.29x
> EEVDF (default) 100 No 1.00x
>
> Switching to HZ=1000 reduces the 99th percentile latency in schbench by
> ~70%. This improvement occurs because, with HZ=1000, stress-ng tasks run
> for ~3ms before yielding, compared to ~10ms with HZ=100. As a result,
> schbench gets CPU time sooner, reducing its latency.
>
> Daytrader Performance:
>
> Daytrader results show minor variation within standard deviation,
> indicating no significant regression.
>
> Workload (Users/Instances) Throughput 1000HZ vs 100HZ (Std Dev%)
> --------------------------------------------------------------------------
> 30 u, 1 i +3.01% (1.62%)
> 60 u, 1 i +1.46% (2.69%)
> 90 u, 1 i –1.33% (3.09%)
> 30 u, 2 i -1.20% (1.71%)
> 30 u, 3 i –0.07% (1.33%)
>
> Avg. Response Time: No Change (=)
>
> pgbench select queries:
>
> Metric 1000HZ vs 100HZ (Std Dev%)
> ------------------------------------------------------------------
> Average TPS Change +2.16% (1.27%)
> Average Latency Change –2.21% (1.21%)
>
> Average TPS: Higher the better
> Average Latency: Lower the better
>
> pgbench shows both throughput and latency improvements beyond standard
> deviation.
>
> Given these results and the improvements in timer wheel implementation,
> increasing CONFIG_HZ to 1000 ensures that powerpc benefits from EEVDF’s
> base_slice and allows fine-tuned scheduling for latency-sensitive
> workloads.
>
> Signed-off-by: Madadi Vineeth Reddy <vineethr@linux.ibm.com>
> ---
> arch/powerpc/configs/powernv_defconfig | 2 +-
> arch/powerpc/configs/ppc64_defconfig | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/configs/powernv_defconfig b/arch/powerpc/configs/powernv_defconfig
> index 6b6d7467fecf..8abf17d26b3a 100644
> --- a/arch/powerpc/configs/powernv_defconfig
> +++ b/arch/powerpc/configs/powernv_defconfig
> @@ -46,7 +46,7 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=y
> CONFIG_CPU_FREQ_GOV_USERSPACE=y
> CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
> CONFIG_CPU_IDLE=y
> -CONFIG_HZ_100=y
> +CONFIG_HZ_1000=y
> CONFIG_BINFMT_MISC=m
> CONFIG_PPC_TRANSACTIONAL_MEM=y
> CONFIG_PPC_UV=y
> diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig
> index 5fa154185efa..45d437e4c62e 100644
> --- a/arch/powerpc/configs/ppc64_defconfig
> +++ b/arch/powerpc/configs/ppc64_defconfig
> @@ -57,7 +57,7 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=y
> CONFIG_CPU_FREQ_GOV_USERSPACE=y
> CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
> CONFIG_CPU_FREQ_PMAC64=y
> -CONFIG_HZ_100=y
> +CONFIG_HZ_1000=y
> CONFIG_PPC_TRANSACTIONAL_MEM=y
> CONFIG_KEXEC=y
> CONFIG_KEXEC_FILE=y
prev parent reply other threads:[~2025-04-16 6:41 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-30 7:47 [PATCH] powerpc/defconfigs: Set HZ=1000 on ppc64 and powernv defconfigs Madadi Vineeth Reddy
2025-03-31 7:08 ` Shrikanth Hegde
2025-04-01 5:43 ` Mukesh Kumar Chaurasiya
2025-04-02 7:43 ` Srikar Dronamraju
2025-04-16 6:40 ` Madadi Vineeth Reddy [this message]
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=d482d2ff-90e6-4c71-8681-1d9fceeb70f9@linux.ibm.com \
--to=vineethr@linux.ibm.com \
--cc=20250330074734.16679-1-vineethr@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=ardb@kernel.org \
--cc=christophe.leroy@csgroup.eu \
--cc=ebiggers@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=martin.petersen@oracle.com \
--cc=mpe@ellerman.id.au \
--cc=naveen@kernel.org \
--cc=npiggin@gmail.com \
--cc=srikar@linux.ibm.com \
--cc=sshegde@linux.ibm.com \
--cc=tamird@gmail.com \
--cc=yosry.ahmed@linux.dev \
/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.