From: Viresh Kumar <viresh.kumar@linaro.org>
To: Jan Kara <jack@suse.cz>,
Andrew Morton <akpm@linux-foundation.org>,
Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Jan Kara <jack@suse.com>, Petr Mladek <pmladek@suse.com>,
Tejun Heo <tj@kernel.org>,
Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Byungchul Park <byungchul.park@lge.com>,
Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>,
vlevenetz@mm-sol.com,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [PATCH v10 1/2] printk: Make printk() completely async
Date: Wed, 10 Aug 2016 14:17:55 -0700 [thread overview]
Message-ID: <CAOh2x==kfRXeN_OGL822izfDEZ66uvTT=uxBaiwUdC3ca6O-dQ@mail.gmail.com> (raw)
In-Reply-To: <20160406082758.GA3554@quack.suse.cz>
+Vladi/Greg,
On Wed, Apr 6, 2016 at 1:27 AM, Jan Kara <jack@suse.cz> wrote:
> On Mon 04-04-16 15:51:49, Andrew Morton wrote:
>> > +static int __init init_printk_kthread(void)
>> > +{
>> > + struct task_struct *thread;
>> > +
>> > + if (printk_sync)
>> > + return 0;
>> > +
>> > + thread = kthread_run(printk_kthread_func, NULL, "printk");
>>
>> This gets normal scheduling policy, so a spinning userspace SCHED_FIFO
>> task will block printk for ever. This seems bad.
>
> I have to research this a bit but won't the SCHED_FIFO task that has
> potentially unbounded amount of work lockup the CPU even though it does
> occasional cond_resched()?
We are facing complete hogs because of the printk thread being a SCHED_FIFO
task and have this patch to fix it up for now.
Author: Vladislav Levenetz <vblagoev@mm-sol.com>
Date: Wed Aug 10 13:58:00 2016 -0700
SW-7786: printk: Lower the priority of printk thread
Flooding the console (with a test module) in a tight loop indefinitely
makes android user interface very sluggish. Opening YouTube app and the
device hangs and becomes even more unresponsive to the point it
completely hangs.
The asynchronous printk thread is a SCHED FIFO thread with priority
MAX_RT_PRIO - 1. If we create it as a simple thread (i.e. no SCHED FIFO)
instead, we observe much better performance using the same printk flood
test. We don't even notice any kind of sluggishness during device usage.
We can play a YouTube clip smoothly and use the device normally in
general. The kernel log looks fine as well, as the flood of messages
continue normally.
Signed-off-by: Vladislav Levenetz <vblagoev@mm-sol.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
kernel/printk/printk.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index c32872872cb6..ad5b30e5e6d9 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -2856,9 +2856,6 @@ static int printk_kthread_func(void *data)
static int __init_printk_kthread(void)
{
struct task_struct *thread;
- struct sched_param param = {
- .sched_priority = MAX_RT_PRIO - 1,
- };
if (!printk_kthread_can_run || printk_sync || printk_kthread)
return 0;
@@ -2870,7 +2867,6 @@ static int __init_printk_kthread(void)
return PTR_ERR(thread);
}
- sched_setscheduler(thread, SCHED_FIFO, ¶m);
printk_kthread = thread;
return 0;
}
next prev parent reply other threads:[~2016-08-10 21:18 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-04 16:57 [PATCH v10 0/2] printk: Make printk() completely async Sergey Senozhatsky
2016-04-04 16:57 ` [PATCH v10 1/2] " Sergey Senozhatsky
2016-04-04 22:51 ` Andrew Morton
2016-04-05 5:17 ` Sergey Senozhatsky
2016-04-05 7:39 ` Sergey Senozhatsky
2016-04-06 0:19 ` Sergey Senozhatsky
2016-04-06 8:27 ` Jan Kara
2016-04-07 9:48 ` Sergey Senozhatsky
2016-04-07 12:08 ` Sergey Senozhatsky
2016-04-07 13:15 ` Jan Kara
2016-08-10 21:17 ` Viresh Kumar [this message]
2016-08-12 9:44 ` Petr Mladek
2016-08-15 14:26 ` Vladislav Levenetz
2016-08-16 9:04 ` Petr Mladek
2016-08-18 2:27 ` Sergey Senozhatsky
2016-08-18 9:33 ` Petr Mladek
2016-08-18 9:51 ` Sergey Senozhatsky
2016-08-18 10:56 ` Petr Mladek
2016-08-19 6:32 ` Sergey Senozhatsky
2016-08-19 9:54 ` Petr Mladek
2016-08-19 19:00 ` Jan Kara
2016-08-20 5:24 ` Sergey Senozhatsky
2016-08-22 4:15 ` Sergey Senozhatsky
2016-08-23 12:19 ` Petr Mladek
2016-08-24 1:33 ` Sergey Senozhatsky
2016-08-25 21:10 ` Petr Mladek
2016-08-26 1:56 ` Sergey Senozhatsky
2016-08-26 8:20 ` Sergey Senozhatsky
2016-08-30 9:29 ` Petr Mladek
2016-08-31 2:31 ` Sergey Senozhatsky
2016-08-31 9:38 ` Petr Mladek
2016-08-31 12:52 ` Sergey Senozhatsky
2016-09-01 8:58 ` Petr Mladek
2016-09-02 7:58 ` Sergey Senozhatsky
2016-09-02 15:15 ` Petr Mladek
2016-09-06 7:16 ` Sergey Senozhatsky
2016-08-23 13:03 ` Petr Mladek
2016-08-23 13:48 ` Petr Mladek
2016-04-04 16:57 ` [PATCH v10 2/2] printk: Make wake_up_klogd_work_func() async Sergey Senozhatsky
2016-08-23 3:32 [PATCH v10 1/2] printk: Make printk() completely async Andreas Mohr
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='CAOh2x==kfRXeN_OGL822izfDEZ66uvTT=uxBaiwUdC3ca6O-dQ@mail.gmail.com' \
--to=viresh.kumar@linaro.org \
--cc=akpm@linux-foundation.org \
--cc=byungchul.park@lge.com \
--cc=gregkh@linuxfoundation.org \
--cc=jack@suse.com \
--cc=jack@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=pmladek@suse.com \
--cc=sergey.senozhatsky.work@gmail.com \
--cc=sergey.senozhatsky@gmail.com \
--cc=tj@kernel.org \
--cc=vlevenetz@mm-sol.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.