All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frederic Weisbecker <frederic@kernel.org>
To: Anna-Maria Behnsen <anna-maria@linutronix.de>
Cc: linux-kernel@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	John Stultz <jstultz@google.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Eric Dumazet <edumazet@google.com>,
	"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
	Arjan van de Ven <arjan@infradead.org>,
	"Paul E . McKenney" <paulmck@kernel.org>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Rik van Riel <riel@surriel.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Sebastian Siewior <bigeasy@linutronix.de>,
	Giovanni Gherdovich <ggherdovich@suse.cz>,
	Lukasz Luba <lukasz.luba@arm.com>,
	"Gautham R . Shenoy" <gautham.shenoy@amd.com>
Subject: Re: [PATCH v7 02/21] timer: Do not IPI for deferrable timers
Date: Mon, 5 Jun 2023 23:29:37 +0200	[thread overview]
Message-ID: <ZH5TwdrDwLqsWWRA@localhost.localdomain> (raw)
In-Reply-To: <20230524070629.6377-3-anna-maria@linutronix.de>

Le Wed, May 24, 2023 at 09:06:10AM +0200, Anna-Maria Behnsen a écrit :
> Deferrable timers do not prevent CPU from going idle and are not taken into
> account on idle path. Sending an IPI to a remote CPU when a new first
> deferrable timer was enqueued will wake up the remote CPU and but nothing
> will be done regarding the deferrable timers.
> 
> Drop IPI completely when a new first deferrable timer was enqueued.
> 
> Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
> ---
> v6: new patch
> ---
>  kernel/time/timer.c | 15 ++++++---------
>  1 file changed, 6 insertions(+), 9 deletions(-)
> 
> diff --git a/kernel/time/timer.c b/kernel/time/timer.c
> index 63a8ce7177dd..6e251e3cf659 100644
> --- a/kernel/time/timer.c
> +++ b/kernel/time/timer.c
> @@ -571,18 +571,15 @@ static int calc_wheel_index(unsigned long expires, unsigned long clk,
>  static void
>  trigger_dyntick_cpu(struct timer_base *base, struct timer_list *timer)
>  {
> -	if (!is_timers_nohz_active())
> -		return;
> -
>  	/*
> -	 * TODO: This wants some optimizing similar to the code below, but we
> -	 * will do that when we switch from push to pull for deferrable timers.
> +	 * Deferrable timers do not prevent CPU from going idle and are not
> +	 * taken into account on idle path. An IPI when a new deferrable

Just to make sure everyone is aware that this concerns also nohz_full,
this could be:

	/*
	 * Deferrable timers do not prevent CPU from entering dynticks
	 * and are not taken into account on idle/nohz_full path. An IPI
	 * when a new deferrable timer is enqueued will wake up the remote
	 * CPU but nothing will be done with the deferrable timer base.
	 * Therefore skip remote IPI for deferrable timers completely.
	 */

But anyway:

Reviewed-by: Frederic Weisbecker <frederic@kernel.org>

  reply	other threads:[~2023-06-05 21:29 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-24  7:06 [PATCH v7 00/21] timer: Move from a push remote at enqueue to a pull at expiry model Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 01/21] tick-sched: Warn when next tick seems to be in the past Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 02/21] timer: Do not IPI for deferrable timers Anna-Maria Behnsen
2023-06-05 21:29   ` Frederic Weisbecker [this message]
2023-05-24  7:06 ` [PATCH v7 03/21] timer: Add comment to get_next_timer_interrupt() description Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 04/21] timer: Move store of next event into __next_timer_interrupt() Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 05/21] timer: Split next timer interrupt logic Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 06/21] timer: Rework idle logic Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 07/21] timers: Introduce add_timer() variants which modify timer flags Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 08/21] workqueue: Use global variant for add_timer() Anna-Maria Behnsen
2023-06-05 22:25   ` Frederic Weisbecker
2023-05-24  7:06 ` [PATCH v7 09/21] timer: add_timer_on(): Make sure TIMER_PINNED flag is set Anna-Maria Behnsen
2023-06-05 22:26   ` Frederic Weisbecker
2023-05-24  7:06 ` [PATCH v7 10/21] timers: Ease code in run_local_timers() Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 11/21] timers: Create helper function to forward timer base clk Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 12/21] timer: Keep the pinned timers separate from the others Anna-Maria Behnsen
2023-06-06 10:27   ` Frederic Weisbecker
2023-05-24  7:06 ` [PATCH v7 13/21] timer: Retrieve next expiry of pinned/non-pinned timers separately Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 14/21] timer: Split out "get next timer interrupt" functionality Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 15/21] timer: Add get next timer interrupt functionality for remote CPUs Anna-Maria Behnsen
2023-06-07 14:55   ` Frederic Weisbecker
2023-06-12 12:01     ` Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 16/21] timer: Restructure internal locking Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 17/21] timer: Check if timers base is handled already Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 18/21] tick/sched: Split out jiffies update helper function Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 19/21] timer: Implement the hierarchical pull model Anna-Maria Behnsen
2023-06-06 20:10   ` Frederic Weisbecker
2023-06-07 13:54   ` Frederic Weisbecker
2023-06-12 12:29     ` Anna-Maria Behnsen
2023-06-12 14:30       ` Frederic Weisbecker
2023-06-11 21:19   ` Frederic Weisbecker
2023-06-12 15:09   ` Frederic Weisbecker
2023-06-12 15:57     ` Anna-Maria Behnsen
2023-06-12 21:20       ` Frederic Weisbecker
2023-06-13 10:51   ` Frederic Weisbecker
2023-05-24  7:06 ` [PATCH v7 20/21] timer_migration: Add tracepoints Anna-Maria Behnsen
2023-05-24  7:06 ` [PATCH v7 21/21] timer: Always queue timers on the local CPU Anna-Maria Behnsen

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=ZH5TwdrDwLqsWWRA@localhost.localdomain \
    --to=frederic@kernel.org \
    --cc=anna-maria@linutronix.de \
    --cc=arjan@infradead.org \
    --cc=bigeasy@linutronix.de \
    --cc=edumazet@google.com \
    --cc=fweisbec@gmail.com \
    --cc=gautham.shenoy@amd.com \
    --cc=ggherdovich@suse.cz \
    --cc=jstultz@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lukasz.luba@arm.com \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=riel@surriel.com \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /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.