Re: [RFC PATCH 00/15] Nohz task support

From: Frederic Weisbecker
Date: Tue Dec 21 2010 - 12:01:20 EST


On Tue, Dec 21, 2010 at 03:56:36PM +0200, Avi Kivity wrote:
> On 12/21/2010 01:33 AM, Frederic Weisbecker wrote:
> >On Mon, Dec 20, 2010 at 10:44:46AM -0500, Steven Rostedt wrote:
> >> On Mon, 2010-12-20 at 16:24 +0100, Frederic Weisbecker wrote:
> >> > The timer interrupt handles several things like preemption,
> >> > timekeeping, rcu, etc...
> >> >
> >> > However it appears that sometimes it is simply useless like
> >> > when a task runs alone and even more when it is in userspace
> >> > as RCU doesn't need it at all in such case.
> >> >
> >> > It appears that HPC workload would get some win of such timer
> >> > deactivation, and perhaps also the Real Time world as this
> >> > minimizes the critical sections due to way less interrupts to
> >> > handle.
> >> >
> >> > It works through the procfs interface:
> >> >
> >> > echo 1> /proc/self/nohz
> >>
> >> I wounder if we could just have this happen automatically.
> >
> >But this would add some global overhead, especially in the syscall
> >path as we need to take the slow path to hook userspace resume/exit.
>
> This is zero as there is already a test on thread_info->flags on the
> syscall exit path.
>
> (or I misunderstood you - what's the purpose of the slow path?)


Yes but on most cases threads don't have flags that route them to the
syscall slow path, which is to call syscall_trace_enter() and
syscall_trace_leave() as proxys. They call the syscall handler
directly.

But the nohz tasks must use a TIF_ flag that forces the syscall
slow path, which is where is the overhead. So if you wanted to
make that automatic for every task, you need to force the syscall
slow path on every tasks. And this is quite an overhead.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/