git: 70201cc45dc7 - stable/13 - Reduce minimum idle hardclock rate from 2Hz to 1Hz.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 24 Jan 2022 02:36:05 UTC
The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=70201cc45dc7c3466a852e6b93e02dfd13fc8f59 commit 70201cc45dc7c3466a852e6b93e02dfd13fc8f59 Author: Alexander Motin <mav@FreeBSD.org> AuthorDate: 2022-01-10 00:17:43 +0000 Commit: Alexander Motin <mav@FreeBSD.org> CommitDate: 2022-01-24 02:35:58 +0000 Reduce minimum idle hardclock rate from 2Hz to 1Hz. On idle 80-thread system it allows to improve package-level idle state residency and so power consumption by several percent. MFC after: 2 weeks (cherry picked from commit cb1f5d11366dc9b803f2755d83fe02599830882a) --- sys/kern/kern_clocksource.c | 5 +++-- sys/kern/kern_timeout.c | 5 ++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/kern/kern_clocksource.c b/sys/kern/kern_clocksource.c index dfc9081ba9f6..48e06ee082fc 100644 --- a/sys/kern/kern_clocksource.c +++ b/sys/kern/kern_clocksource.c @@ -239,13 +239,14 @@ getnextcpuevent(int idle) /* Handle hardclock() events, skipping some if CPU is idle. */ event = state->nexthard; if (idle) { - hardfreq = (u_int)hz / 2; - if (tc_min_ticktock_freq > 2 + if (tc_min_ticktock_freq > 1 #ifdef SMP && curcpu == CPU_FIRST() #endif ) hardfreq = hz / tc_min_ticktock_freq; + else + hardfreq = hz; if (hardfreq > 1) event += tick_sbt * (hardfreq - 1); } diff --git a/sys/kern/kern_timeout.c b/sys/kern/kern_timeout.c index 992a093d30ab..2e98c1033ee3 100644 --- a/sys/kern/kern_timeout.c +++ b/sys/kern/kern_timeout.c @@ -418,8 +418,7 @@ callout_process(sbintime_t now) struct callout *tmp, *tmpn; struct callout_cpu *cc; struct callout_list *sc; - sbintime_t first, last, max, tmp_max; - uint32_t lookahead; + sbintime_t first, last, lookahead, max, tmp_max; u_int firstb, lastb, nowb; #ifdef CALLOUT_PROFILING int depth_dir = 0, mpcalls_dir = 0, lockcalls_dir = 0; @@ -439,7 +438,7 @@ callout_process(sbintime_t now) else if (nowb - firstb == 1) lookahead = (SBT_1S / 8); else - lookahead = (SBT_1S / 2); + lookahead = SBT_1S; first = last = now; first += (lookahead / 2); last += lookahead;