From: Preeti U Murthy <preeti@linux.vnet.ibm.com>
To: Rik van Riel <riel@redhat.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
LKML <linux-kernel@vger.kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
Christoph Lameter <cl@linux.com>, Ingo Molnar <mingo@kernel.org>,
Viresh Kumar <viresh.kumar@linaro.org>
Subject: Re: [PATCH 7/8] nohz: Evaluate tick dependency once on context switch
Date: Wed, 17 Jun 2015 11:29:06 +0530 [thread overview]
Message-ID: <55810CAA.6010208@linux.vnet.ibm.com> (raw)
In-Reply-To: <5579F3A5.7010103@redhat.com>
On 06/12/2015 02:16 AM, Rik van Riel wrote:
> On 06/11/2015 01:36 PM, Frederic Weisbecker wrote:
>> The tick dependency is evaluated on every irq. This is a batch of checks
>> which determine whether it is safe to stop the tick or not. These checks
>> are often split in many details: posix cpu timers, scheduler, sched clock,
>> perf events. Each of which are made of smaller details: posix cpu
>> timer involves checking process wide timers then thread wide timers. Perf
>> involves checking freq events then more per cpu details.
>>
>> Checking these details every time we update the full dynticks state
>> bring avoidable overhead.
>>
>> So lets evaluate these dependencies once on context switch. Then the
>> further dependency checks will be performed through a single state check.
>>
>> This is a first step that can be later optimized by dividing task level
>> dependency, CPU level dependency and global dependency and update
>> each at the right time.
>
>> +static void tick_nohz_full_update_dependencies(void)
>> +{
>> + struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
>> +
>> + if (!posix_cpu_timers_can_stop_tick(current))
>> + ts->tick_needed |= TICK_NEEDED_POSIX_CPU_TIMER;
>> +
>> + if (!perf_event_can_stop_tick())
>> + ts->tick_needed |= TICK_NEEDED_PERF_EVENT;
>> +
>> + if (!sched_can_stop_tick())
>> + ts->tick_needed |= TICK_NEEDED_SCHED;
>>
>
> I see this getting kicked from task work and from ipi
> context, but does it get kicked on task wakeup, when
> we have a second runnable task on a CPU, but we decide
> not to preempt the currently running task to switch to
> it yet, but we will want to preempt the currently running
> task at a later point in time?
+1. This is not taken care of as far as I can see too.
Regards
Preeti U Murthy
>
next prev parent reply other threads:[~2015-06-17 5:59 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-11 17:36 [PATCH 0/8] tick/nohz: Tick dependency quick check + cleanups Frederic Weisbecker
2015-06-11 17:36 ` [PATCH 1/8] jiffies: Remove HZ > USEC_PER_SEC special case Frederic Weisbecker
2015-06-11 20:46 ` Rik van Riel
2015-06-11 17:36 ` [PATCH 2/8] apm32: Fix cputime == jiffies assumption Frederic Weisbecker
2015-06-11 20:47 ` Rik van Riel
2015-06-11 17:36 ` [PATCH 3/8] alpha: Fix jiffies based cputime assumption Frederic Weisbecker
2015-06-11 20:47 ` Rik van Riel
2015-06-11 17:36 ` [PATCH 4/8] nohz: Remove idle task special case Frederic Weisbecker
2015-06-11 20:47 ` Rik van Riel
2015-06-14 1:44 ` Preeti U Murthy
2015-07-07 14:45 ` Frederic Weisbecker
2015-06-11 17:36 ` [PATCH 5/8] nohz: Restart the tick from irq exit Frederic Weisbecker
2015-06-11 20:48 ` Rik van Riel
2015-06-12 7:32 ` Peter Zijlstra
2015-06-12 12:38 ` Frederic Weisbecker
2015-06-12 12:59 ` Peter Zijlstra
2015-06-12 13:06 ` Frederic Weisbecker
2015-06-14 9:30 ` Preeti U Murthy
2015-07-07 14:23 ` Frederic Weisbecker
2015-06-14 9:18 ` Preeti U Murthy
2015-06-14 9:19 ` Preeti U Murthy
2015-07-07 14:20 ` Frederic Weisbecker
2015-06-11 17:36 ` [PATCH 6/8] nohz: Move tick_nohz_restart_sched_tick() above its users Frederic Weisbecker
2015-06-11 20:48 ` Rik van Riel
2015-06-11 17:36 ` [PATCH 7/8] nohz: Evaluate tick dependency once on context switch Frederic Weisbecker
2015-06-11 20:46 ` Rik van Riel
2015-06-17 5:59 ` Preeti U Murthy [this message]
2015-07-07 14:30 ` Frederic Weisbecker
2015-06-12 7:36 ` Peter Zijlstra
2015-07-06 16:14 ` Frederic Weisbecker
2015-06-11 17:36 ` [PATCH 8/8] nohz: Remove useless argument on tick_nohz_task_switch() 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=55810CAA.6010208@linux.vnet.ibm.com \
--to=preeti@linux.vnet.ibm.com \
--cc=cl@linux.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--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