All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frederic Weisbecker <frederic@kernel.org>
To: Aaron Tomlin <atomlin@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
	cl@linux.com, tglx@linutronix.de, mingo@kernel.org,
	peterz@infradead.org, pauld@redhat.com, neelx@redhat.com,
	oleksandr@natalenko.name, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org
Subject: Re: [PATCH v7 2/3] tick/sched: Ensure quiet_vmstat() is called when the idle tick was stopped too
Date: Wed, 14 Sep 2022 13:04:26 +0200	[thread overview]
Message-ID: <20220914110426.GD1936@lothringen> (raw)
In-Reply-To: <20220912143822.irn6xhs2etmumqlt@ava.usersys.com>

On Mon, Sep 12, 2022 at 03:38:23PM +0100, Aaron Tomlin wrote:
> On Fri 2022-09-09 16:35 -0300, Marcelo Tosatti wrote:
> Hi Frederic,
> 
> Sorry about that. How about the following:
> 
>  - Note: CPU X is part of 'tick_nohz_full_mask'
> 
>     1.      CPU Y migrated running task A to CPU X that
> 	    was in an idle state i.e. waiting for an IRQ;
> 	    marked the current task on CPU X to need/or
> 	    require a reschedule i.e., set TIF_NEED_RESCHED
> 	    and invoked a reschedule IPI to CPU X
> 	    (see sched_move_task())
> 
>     2.      CPU X acknowledged the reschedule IPI. Generic
> 	    idle loop code noticed the TIF_NEED_RESCHED flag
> 	    against the idle task and attempts to exit of the
> 	    loop and calls the main scheduler function i.e.
> 	    __schedule().
> 
> 	    Since the idle tick was previously stopped no
> 	    scheduling-clock tick would occur.
> 	    So, no deferred timers would be handled
> 
>     3.      Post transition to kernel execution Task A
> 	    running on CPU X, indirectly released a few pages
> 	    (e.g. see __free_one_page()); CPU X's
> 	    'vm_stat_diff[NR_FREE_PAGES]' was updated and zone
> 	    specific 'vm_stat[]' update was deferred as per the
> 	    CPU-specific stat threshold
> 
>     4.      Task A does invoke exit(2) and the kernel does
> 	    remove the task from the run-queue; the idle task
> 	    was selected to execute next since there are no
> 	    other runnable tasks assigned to the given CPU
> 	    (see pick_next_task() and pick_next_task_idle())
> 
>     5.      On return to the idle loop since the idle tick
> 	    was already stopped and can remain so (see [1]
> 	    below) e.g. no pending soft IRQs, no attempt is
> 	    made to zero and fold CPU X's vmstat counters
> 	    since reprogramming of the scheduling-clock tick
> 	    is not required/or needed (see [2])

Much better thanks.

Please cut the patch in two patches: one that fixes the stuff in
the idle path and another one that fixes the return to user path.

The first one is definetly a fix, the second one is rather a feature
that is definetly wanted as well but I need to think it through further.

> 
> 
> 
> Kind regards,
> 
> -- 
> Aaron Tomlin
> 


  reply	other threads:[~2022-09-14 11:04 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-17 19:13 [PATCH v7 0/3] tick/sched: Ensure quiet_vmstat() is called when the idle tick was stopped too Marcelo Tosatti
2022-08-17 19:13 ` [PATCH v7 1/3] mm/vmstat: Use per cpu variable to track a vmstat discrepancy Marcelo Tosatti
2022-08-24 20:20   ` Andrew Morton
2022-08-26 13:29     ` Aaron Tomlin
2022-08-17 19:13 ` [PATCH v7 2/3] tick/sched: Ensure quiet_vmstat() is called when the idle tick was stopped too Marcelo Tosatti
2022-08-24 20:20   ` Andrew Morton
2022-09-09 12:12   ` Frederic Weisbecker
2022-09-09 19:35     ` Marcelo Tosatti
2022-09-12 14:38       ` Aaron Tomlin
2022-09-14 11:04         ` Frederic Weisbecker [this message]
2022-08-17 19:13 ` [PATCH v7 3/3] mm/vmstat: do not queue vmstat_update if tick is stopped Marcelo Tosatti
  -- strict thread matches above, loose matches on Subject: below --
2022-08-17 19:01 [patch 0/3] tick/sched: Ensure quiet_vmstat() is called when the idle tick was stopped too Marcelo Tosatti
2022-08-17 19:01 ` [PATCH v7 2/3] " Marcelo Tosatti
2022-08-17 19:01   ` Marcelo Tosatti

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=20220914110426.GD1936@lothringen \
    --to=frederic@kernel.org \
    --cc=atomlin@redhat.com \
    --cc=cl@linux.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mingo@kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=neelx@redhat.com \
    --cc=oleksandr@natalenko.name \
    --cc=pauld@redhat.com \
    --cc=peterz@infradead.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.