From: Petr Mladek <pmladek@suse.com>
To: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Peter Zijlstra <peterz@infradead.org>,
"Rafael J . Wysocki" <rjw@rjwysocki.net>,
linux-kernel@vger.kernel.org,
Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Subject: Re: [RFC][PATCH 0/4] printk: introduce printing kernel thread
Date: Tue, 4 Apr 2017 14:59:59 +0200 [thread overview]
Message-ID: <20170404125959.GH3452@pathway.suse.cz> (raw)
In-Reply-To: <20170403115311.GC7867@jagdpanzerIV.localdomain>
On Mon 2017-04-03 20:53:11, Sergey Senozhatsky wrote:
> On (03/06/17 21:45), Sergey Senozhatsky wrote:
> [..]
> > printk kthread changes the behavior of printk in one _corner case_.
> > The corner case is quite interesting and actually consists of two corner
> > cases. Suppose on SMP system there is only one CPU that printk()-s a lot,
> > the rest of CPUs don't lock console_sem and don't printk(). Previously
> > that printing CPU had been throttling itself (*) because of console drivers
> > call for every printk():
> >
> > CPU0
> >
> > printk("a")
> > console_unlock()
> > call_console_drivers("a")
> >
> > ...
> >
> > printk("z")
> > console_unlock()
> > call_console_drivers("z")
> >
> > * Given that no other CPU locks the console_sem.
> >
> > With printk kthread the case turns into this one:
> >
> > CPU0 CPU1
> >
> > printk("a")
> > wake_up printk_kthread
> > ... printk_kthread
> > printk("k") console_unlock()
> > ... call_console_drivers("a")
> > printk("z") call_console_drivers("b")
> > call_console_drivers("c")
> > ...
> >
> >
> > The second 'corner case' part here is that CPU0 may be much faster
> > than printing CPU, which may result in dropped printk messages.
> >
> > This all is absolutely possible even with out the printk-kthread.
> > A single console_lock() call from CPUx will result in exactly the
> > same condition. So it's not necessarily a regression. But there may
> > be some scenarios in the kernel that may suffer from this change.
> > From the top of my head -- sysrq backtrace dump, and, probably, OOM
> > print out and backtrace dump.
>
> there is another possibility here.
>
> being always reschedulable potentially can put us at risk of having
> unpleasant situations when printk_kthread is getting preempted too
> often (well, who knows what can happen on the system), which can slow
> down logbuf emit process (printk_kthread) up to the point when printk()
> CPUs will force log_store() to begin dropping the messages. this can
> happen.
I believe that this will be rather a corner case. If it happens, we
could do something with scheduling priority and policy. Also there
is the possibility to fallback to the old mode.
We use some variants of the printk offload on SLE for years and
I am not aware of any complains of this sort.
Best Regards,
Petr
prev parent reply other threads:[~2017-04-04 13:00 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-06 12:45 [RFC][PATCH 0/4] printk: introduce printing kernel thread Sergey Senozhatsky
2017-03-06 12:45 ` [RFC][PATCH 1/4] " Sergey Senozhatsky
2017-03-22 16:40 ` Petr Mladek
2017-03-23 5:12 ` Sergey Senozhatsky
2017-03-23 10:40 ` Petr Mladek
2017-03-24 5:20 ` Sergey Senozhatsky
2017-03-06 12:45 ` [RFC][PATCH 2/4] printk: offload printing from wake_up_klogd_work_func() Sergey Senozhatsky
2017-03-17 12:19 ` Petr Mladek
2017-03-18 9:57 ` Sergey Senozhatsky
2017-03-20 16:09 ` Petr Mladek
2017-03-21 4:01 ` Sergey Senozhatsky
2017-03-23 9:00 ` Sergey Senozhatsky
2017-03-23 12:11 ` Petr Mladek
2017-03-06 12:45 ` [RFC][PATCH 3/4] kernel, power: disable printk_kthread in unsafe places Sergey Senozhatsky
2017-03-22 15:38 ` Petr Mladek
2017-03-06 12:45 ` [RFC][PATCH 4/4] printk: enable printk offloading Sergey Senozhatsky
2017-03-22 15:43 ` Petr Mladek
2017-03-22 16:40 ` Sergey Senozhatsky
2017-03-22 17:59 ` [RFC][PATCH 0/4] printk: introduce printing kernel thread Peter Zijlstra
2017-03-23 4:09 ` Sergey Senozhatsky
2017-03-23 8:51 ` Peter Zijlstra
2017-03-24 1:59 ` Sergey Senozhatsky
2017-03-24 4:43 ` Sergey Senozhatsky
2017-03-24 14:43 ` Petr Mladek
2017-03-25 0:18 ` Sergey Senozhatsky
2017-03-23 12:01 ` Petr Mladek
2017-04-03 11:53 ` Sergey Senozhatsky
2017-04-04 12:59 ` Petr Mladek [this message]
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=20170404125959.GH3452@pathway.suse.cz \
--to=pmladek@suse.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=rjw@rjwysocki.net \
--cc=rostedt@goodmis.org \
--cc=sergey.senozhatsky.work@gmail.com \
--cc=sergey.senozhatsky@gmail.com \
--cc=torvalds@linux-foundation.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