Messages in this thread |  | | | Date | Mon, 06 Jun 2011 18:45:23 +0200 | | From | Arne Jansen <> | | Subject | Re: [debug patch] printk: Add a printk killswitch to robustify NMI watchdog messages |
| |
On 06.06.2011 18:38, Arne Jansen wrote: > On 06.06.2011 18:17, Ingo Molnar wrote: >> >> * Peter Zijlstra<peterz@infradead.org> wrote: >> >>> On Mon, 2011-06-06 at 18:08 +0200, Ingo Molnar wrote: >>>> * Peter Zijlstra<peterz@infradead.org> wrote: >>>> >>>>> On Mon, 2011-06-06 at 17:52 +0200, Ingo Molnar wrote: >>>>>> * Peter Zijlstra<peterz@infradead.org> wrote: >>>>>> >>>>>>> Needs more staring at, preferably by someone who actually >>>>>>> understands that horrid mess :/ Also, this all still doesn't make >>>>>>> printk() work reliably while holding rq->lock. >>>>>> >>>>>> So, what about my suggestion to just *remove* the wakeup from there >>>>>> and use the deferred wakeup mechanism that klogd uses. >>>>>> >>>>>> That would make printk() *visibly* more robust in practice. >>>>> >>>>> That's currently done from the jiffy tick, do you want to effectively >>>>> delay releasing the console_sem for the better part of a jiffy? >>>> >>>> Yes, and we already do it in some other circumstances. >>> >>> We do? >> >> Yes, see the whole printk_pending logic, it delays: >> >> wake_up_interruptible(&log_wait); >> >> to the next jiffies tick. >> >>>> Can you see >>>> any problem with that? klogd is an utter slowpath anyway. >>> >>> but console_sem isn't klogd. We delay klogd and that's perfectly >>> fine, but afaict we don't delay console_sem. >> >> But console_sem is really a similar special case as klogd. See, it's >> about a *printk*. That's rare by definition. >> >> If someone on the console sees it he'll be startled by at least 10 >> msecs ;-) So delaying the wakeup to the next jiffy really fits into >> the same approach as we already do with&log_wait, hm? > > As long as it doesn't scramble the order of the messages, the delay > imho doesn't matter even in very printk-heavy debugging sessions.
And, as important, doesn't reduce the throughput of printk. Having only 100 wakeups/s sounds like the throughput is limited to 100xsizeof(ring buffer).
> >> >> This would solve a real nightmare that has plagued us ever since >> printk() has done wakeups directly - i.e. like forever. >> >> Thanks, >> >> Ingo > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
|  |