From: Frederic Weisbecker <fweisbec@gmail.com>
To: Chris Metcalf <cmetcalf@ezchip.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
Preeti U Murthy <preeti@linux.vnet.ibm.com>,
Christoph Lameter <cl@linux.com>, Ingo Molnar <mingo@kernel.org>,
Viresh Kumar <viresh.kumar@linaro.org>,
Rik van Riel <riel@redhat.com>
Subject: Re: [PATCH 08/10] posix-cpu-timers: Migrate to use new tick dependency mask model
Date: Wed, 29 Jul 2015 15:23:45 +0200 [thread overview]
Message-ID: <20150729132343.GC11554@lerouge> (raw)
In-Reply-To: <55B26E74.5040803@ezchip.com>
On Fri, Jul 24, 2015 at 12:57:24PM -0400, Chris Metcalf wrote:
> On 07/23/2015 12:42 PM, Frederic Weisbecker wrote:
> >+static void cpu_timer_list_dequeue(struct cpu_timer_list *t)
> >+{
> >+ if (!list_empty(&t->entry))
> >+ cpu_timer_dec_tick_dependency();
> >+ list_del_init(&t->entry);
> >+}
>
> Is the list_empty() test necessary? It wasn't in the original posix-timers
> code, and it feels like a pretty serious bug if you're doing a list_del on
> an empty list.
No multiple calls to list_del_init() is fine on a list_head as long as it
has been correctly initialized with INIT_LIST_HEAD() and list_del() hasn't
been called at some point before.
It's necessary because we do that dequeue also when we change the timer,
we disarm it in case it was added somewhere before.
> At a higher level, is the posix-cpu-timers code here really providing the
> right semantics? It seems like before, the code was checking a struct
> task-specific state, and now you are setting a global state such that if ANY
> task anywhere in the system (even on housekeeping cores) has a pending posix
> cpu timer, then nothing can go into nohz_full mode.
>
> Perhaps what is needed is a task_struct->tick_dependency to go along with
> the system-wide and per-cpu flag words?
That's an excellent point! Indeed the tick dependency check on posix-cpu-timers
was made on task granularity before and now it's a global dependency.
Which means that if any task in the system has a posix-cpu-timer enqueued, it
prevents all CPUs from shutting down the tick. I need to mention that in the
changelog.
Now here is the rationale: I expect that nohz full users are not interested in
posix cpu timers at all. The only chance for one to run without breaking the
isolation is on housekeeping CPUs. So perhaps there is a corner case somewhere
but I assume there isn't until somebody reports an issue.
Keeping a task level dependency check means that we need to update it on context
switch. Plus it's not only about task but also process. So that means two
states to update on context switch and to check from interrupts. I don't think
it's worth the effort if there is no user at all.
next prev parent reply other threads:[~2015-07-29 13:23 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-23 16:42 [PATCH 00/10] nohz: Tick dependency mask v2 Frederic Weisbecker
2015-07-23 16:42 ` [PATCH 01/10] nohz: Remove idle task special case Frederic Weisbecker
2015-07-23 16:42 ` [PATCH 02/10] nohz: Restart nohz full tick from irq exit Frederic Weisbecker
2015-07-23 16:42 ` [PATCH 03/10] nohz: Move tick_nohz_restart_sched_tick() above its users Frederic Weisbecker
2015-07-23 16:42 ` [PATCH 04/10] nohz: Remove useless argument on tick_nohz_task_switch() Frederic Weisbecker
2015-08-03 12:39 ` Peter Zijlstra
2015-08-03 12:49 ` Frederic Weisbecker
2015-08-03 13:04 ` Peter Zijlstra
2015-07-23 16:42 ` [PATCH 05/10] nohz: New tick dependency mask Frederic Weisbecker
2015-07-24 16:55 ` Chris Metcalf
2015-07-24 17:16 ` Frederic Weisbecker
2015-07-24 17:43 ` Chris Metcalf
2015-08-03 12:48 ` Peter Zijlstra
2015-08-03 12:43 ` Peter Zijlstra
2015-08-03 13:05 ` Frederic Weisbecker
2015-08-03 13:24 ` Peter Zijlstra
2015-08-03 13:49 ` Frederic Weisbecker
2015-08-03 12:57 ` Peter Zijlstra
2015-08-03 13:09 ` Frederic Weisbecker
2015-08-03 13:29 ` Peter Zijlstra
2015-08-03 13:55 ` Frederic Weisbecker
2015-08-03 14:11 ` Peter Zijlstra
2015-07-23 16:42 ` [PATCH 06/10] perf: Migrate perf to use new tick dependency mask model Frederic Weisbecker
2015-07-23 16:42 ` [PATCH 07/10] sched: Migrate sched " Frederic Weisbecker
2015-07-23 16:55 ` Frederic Weisbecker
2015-07-24 16:56 ` Chris Metcalf
2015-07-29 13:01 ` Frederic Weisbecker
2015-08-03 14:00 ` Peter Zijlstra
2015-08-03 14:50 ` Frederic Weisbecker
2015-08-03 17:09 ` Peter Zijlstra
2015-08-03 17:30 ` Frederic Weisbecker
2015-08-04 7:41 ` Peter Zijlstra
2015-08-10 14:02 ` Juri Lelli
2015-08-10 14:16 ` Frederic Weisbecker
2015-08-10 14:28 ` Peter Zijlstra
2015-08-10 15:11 ` Peter Zijlstra
2015-08-10 15:29 ` Frederic Weisbecker
2015-08-10 15:43 ` Juri Lelli
2015-08-10 16:41 ` Peter Zijlstra
2015-08-10 15:33 ` Christoph Lameter
2015-07-23 16:42 ` [PATCH 08/10] posix-cpu-timers: Migrate " Frederic Weisbecker
2015-07-24 16:57 ` Chris Metcalf
2015-07-29 13:23 ` Frederic Weisbecker [this message]
2015-07-29 17:24 ` Chris Metcalf
2015-07-30 0:44 ` Frederic Weisbecker
2015-07-30 14:31 ` Luiz Capitulino
2015-07-30 14:46 ` Frederic Weisbecker
2015-07-30 19:35 ` Chris Metcalf
2015-07-30 19:45 ` Frederic Weisbecker
2015-07-30 19:52 ` Chris Metcalf
2015-07-31 14:49 ` Frederic Weisbecker
2015-08-03 15:59 ` Chris Metcalf
2015-08-03 18:01 ` Frederic Weisbecker
2015-08-03 17:12 ` Peter Zijlstra
2015-08-03 17:39 ` Frederic Weisbecker
2015-08-03 19:07 ` Peter Zijlstra
2015-08-06 17:13 ` Chris Metcalf
2015-07-23 16:42 ` [PATCH 09/10] sched-clock: " Frederic Weisbecker
2015-07-23 16:42 ` [PATCH 10/10] nohz: Remove task switch obsolete tick dependency check Frederic Weisbecker
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=20150729132343.GC11554@lerouge \
--to=fweisbec@gmail.com \
--cc=cl@linux.com \
--cc=cmetcalf@ezchip.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=preeti@linux.vnet.ibm.com \
--cc=riel@redhat.com \
--cc=tglx@linutronix.de \
--cc=viresh.kumar@linaro.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox