Messages in this thread | | | Date | Thu, 16 May 2013 13:38:12 +0200 | From | Frederic Weisbecker <> | Subject | Re: [PATCH 1/2] nohz: Disable LOCKUP_DETECTOR when NO_HZ_FULL is enabled |
| |
On Thu, May 16, 2013 at 10:10:27AM +0200, Peter Zijlstra wrote: > On Wed, May 15, 2013 at 01:04:01PM -0400, Steven Rostedt wrote: > > On Wed, 2013-05-15 at 18:59 +0200, Peter Zijlstra wrote: > > > > > At which point we could run the watchdog without perf_event_task_tick(). > > > > At which point we can drop the disable LOCKUP_DETECTOR when NO_HZ_FULL > > is enabled ;-) > > > > Can we? The thing I'm worried about is RCU (of course!). ISTR we rely on RCU > working in NMI context. AFAIR for RCU to work, we need to come out of out magic > NO_HZ state since that would've put RCU into EQS. > > Frederic, PaulMck?
But they are protected inside rcu_nmi_*() functions, that's the only thing we need. If this interrupt userspace then we resume back to it quickly after the NMI and re-enter EQS.
No need to restart the tick for that. A remote CPU that wants a quiescent state from the dyntick CPU will notice soon enough the EQS.
We can certainly drop the perf tick for NMI watchdog:
1) As long as there are no flexible events competing on the CPU, no rotation should be needed.
2) We don't want event throttling for the watchdog. There is even a hack to handle that:
/* Callback function for perf event subsystem */ static void watchdog_overflow_callback(struct perf_event *event, struct perf_sample_data *data, struct pt_regs *regs) { /* Ensure the watchdog never gets throttled */ event->hw.interrupts = 0;
| |