On (12/18/17 21:03), Steven Rostedt wrote: > > and this is exactly what I'm still observing. i_do_printks-1992 stops > > printing, while console_sem is owned by another task. Since log_store() > > much faster than call_console_drivers() AND console_sem owner is getting > > preempted for unknown period of time, we end up having pending messages > > in logbuf... and it's kworker/0:1-135 that prints them all. > > > > systemd-udevd-671 [003] d..3 66.334866: offloading: set > > console_owner > > kworker/0:1-135 [000] d..2 66.335999: offloading: > > vprintk_emit()->trylock FAIL will spin? :1 > > i_do_printks-1992 [002] d..2 66.345474: offloading: > > vprintk_emit()->trylock FAIL will spin? :0 x 1100 > > ... > > systemd-udevd-671 [003] d..3 66.345917: offloading: clear > > console_owner waiter != NULL :1 > > And kworker will still be bounded in what it can print. Yes it may end > up being the entire buffer, but that should not take longer than a > watchdog.
not the case on my setup. "1100 messages" is already longer than watchdog. consoles don't scale. if anyone's console can keep up with 2 printing CPUs, then let's see what logbuf size that person will set on a system with 1024 CPUs under OOM. I doubt that will be 128KB. anyway, before you guys push the patch to printk.git, can we wait for Tejun to run his tests against it? (or do we have a preemptive "non realistic tests" conclusion?) -ss