Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1301569 > unrolled thread
| Started by | Jan Kara <jack@suse.cz> |
|---|---|
| First post | 2016-01-05 15:40 +0100 |
| Last post | 2016-01-11 14:30 +0100 |
| Articles | 5 — 3 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH 1/7] printk: Hand over printing to console if printing too long Jan Kara <jack@suse.cz> - 2016-01-05 15:40 +0100
Re: [PATCH 1/7] printk: Hand over printing to console if printing too long Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> - 2016-01-06 02:50 +0100
Re: [PATCH 1/7] printk: Hand over printing to console if printing too long Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> - 2016-01-06 07:50 +0100
Re: [PATCH 1/7] printk: Hand over printing to console if printing too long Jan Kara <jack@suse.cz> - 2016-01-06 13:30 +0100
Re: [PATCH 1/7] printk: Hand over printing to console if printing too long Sergey Senozhatsky <sergey.senozhatsky@gmail.com> - 2016-01-11 14:30 +0100
| From | Jan Kara <jack@suse.cz> |
|---|---|
| Date | 2016-01-05 15:40 +0100 |
| Subject | Re: [PATCH 1/7] printk: Hand over printing to console if printing too long |
| Message-ID | <qNAWe-43s-9@gated-at.bofh.it> |
Hi,
On Wed 23-12-15 10:54:49, Sergey Senozhatsky wrote:
> slowly looking through the patches.
Back from Christmas vacation...
> How about setting 'sync_print' to 'true' in...
> bust_spinlocks() /* only set to true */
> or
> console_verbose() /* um... may be... */
> or
> having a separate one-liner for that
>
> void console_panic_mode(void)
> {
> sync_print = true;
> }
>
> and call it early in panic(), before we send out IPI_STOP.
I like using console_verbose() for setting sync_print to true. That will
likely be more reliable than using oops in progress. After all
console_verbose() is used like console_panic_mode() anyway and in quite a
few places so it is a reasonable match.
Honza
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
--
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/
[toc] | [next] | [standalone]
| From | Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> |
|---|---|
| Date | 2016-01-06 02:50 +0100 |
| Message-ID | <qNLoC-2IC-19@gated-at.bofh.it> |
| In reply to | #1301569 |
Hello,
On (01/05/16 15:37), Jan Kara wrote:
> Hi,
>
> On Wed 23-12-15 10:54:49, Sergey Senozhatsky wrote:
> > slowly looking through the patches.
>
> Back from Christmas vacation...
>
> > How about setting 'sync_print' to 'true' in...
> > bust_spinlocks() /* only set to true */
> > or
> > console_verbose() /* um... may be... */
> > or
> > having a separate one-liner for that
> >
> > void console_panic_mode(void)
> > {
> > sync_print = true;
> > }
> >
> > and call it early in panic(), before we send out IPI_STOP.
>
> I like using console_verbose() for setting sync_print to true. That will
> likely be more reliable than using oops in progress. After all
> console_verbose() is used like console_panic_mode() anyway and in quite a
> few places so it is a reasonable match.
Agree, only arch/microblaze/kernel/setup.c and arch/nios2/kernel/setup.c
do console_verbose() early in setup_arch(), the rest seems to be what I
was thinking of.
-ss
--
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/
[toc] | [prev] | [next] | [standalone]
| From | Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> |
|---|---|
| Date | 2016-01-06 07:50 +0100 |
| Message-ID | <qNQ4W-5Yl-13@gated-at.bofh.it> |
| In reply to | #1301569 |
On (01/05/16 15:37), Jan Kara wrote:
> > How about setting 'sync_print' to 'true' in...
> > bust_spinlocks() /* only set to true */
> > or
> > console_verbose() /* um... may be... */
> > or
> > having a separate one-liner for that
> >
> > void console_panic_mode(void)
> > {
> > sync_print = true;
> > }
> >
> > and call it early in panic(), before we send out IPI_STOP.
>
> I like using console_verbose() for setting sync_print to true. That will
> likely be more reliable than using oops in progress. After all
> console_verbose() is used like console_panic_mode() anyway and in quite a
> few places so it is a reasonable match.
another corner case.
a quote from -mm a74b6533ead8 http://www.spinics.net/lists/linux-mm/msg98990.html
: This patch reduces the probability of such a lockup by introducing a
: specialized kernel thread (oom_reaper) which tries to reclaim additional
: memory by preemptively reaping the anonymous or swapped out memory owned
: by the oom victim under an assumption that such a memory won't be needed
: when its owner is killed and kicked from the userspace anyway. There is
: one notable exception to this, though, if the OOM victim was in the
: process of coredumping the result would be incomplete. This is considered
: a reasonable constrain because the overall system health is more important
: than debugability of a particular application.
:
: A kernel thread has been chosen because we need a reliable way of
: invocation so workqueue context is not appropriate because all the workers
: might be busy (e.g. allocating memory). Kswapd which sounds like another
: good fit is not appropriate as well because it might get blocked on locks
: during reclaim as well.
particularly this "workqueue context is not appropriate because all the workers
might be busy (e.g. allocating memory)" part. I think printk should switch to
sync mode in this case, since printk now does queue_work(system_wq, work).
um... console_verbose() call from oom kill? but it'll be nice to return back
to async mode once (if) memory pressure goes away.
-ss
--
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/
[toc] | [prev] | [next] | [standalone]
| From | Jan Kara <jack@suse.cz> |
|---|---|
| Date | 2016-01-06 13:30 +0100 |
| Message-ID | <qNVnY-12A-15@gated-at.bofh.it> |
| In reply to | #1302419 |
On Wed 06-01-16 15:48:36, Sergey Senozhatsky wrote:
> On (01/05/16 15:37), Jan Kara wrote:
> > > How about setting 'sync_print' to 'true' in...
> > > bust_spinlocks() /* only set to true */
> > > or
> > > console_verbose() /* um... may be... */
> > > or
> > > having a separate one-liner for that
> > >
> > > void console_panic_mode(void)
> > > {
> > > sync_print = true;
> > > }
> > >
> > > and call it early in panic(), before we send out IPI_STOP.
> >
> > I like using console_verbose() for setting sync_print to true. That will
> > likely be more reliable than using oops in progress. After all
> > console_verbose() is used like console_panic_mode() anyway and in quite a
> > few places so it is a reasonable match.
>
> another corner case.
>
> a quote from -mm a74b6533ead8 http://www.spinics.net/lists/linux-mm/msg98990.html
>
> : This patch reduces the probability of such a lockup by introducing a
> : specialized kernel thread (oom_reaper) which tries to reclaim additional
> : memory by preemptively reaping the anonymous or swapped out memory owned
> : by the oom victim under an assumption that such a memory won't be needed
> : when its owner is killed and kicked from the userspace anyway. There is
> : one notable exception to this, though, if the OOM victim was in the
> : process of coredumping the result would be incomplete. This is considered
> : a reasonable constrain because the overall system health is more important
> : than debugability of a particular application.
> :
> : A kernel thread has been chosen because we need a reliable way of
> : invocation so workqueue context is not appropriate because all the workers
> : might be busy (e.g. allocating memory). Kswapd which sounds like another
> : good fit is not appropriate as well because it might get blocked on locks
> : during reclaim as well.
>
> particularly this "workqueue context is not appropriate because all the workers
> might be busy (e.g. allocating memory)" part. I think printk should switch to
> sync mode in this case, since printk now does queue_work(system_wq, work).
> um... console_verbose() call from oom kill? but it'll be nice to return back
> to async mode once (if) memory pressure goes away.
Hum, yes, some mechanism to switch to sync printing in case work cannot be
executed for a long time is probably needed. I'll think about it.
Honza
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
--
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/
[toc] | [prev] | [next] | [standalone]
| From | Sergey Senozhatsky <sergey.senozhatsky@gmail.com> |
|---|---|
| Date | 2016-01-11 14:30 +0100 |
| Message-ID | <qPKHM-2Wj-17@gated-at.bofh.it> |
| In reply to | #1302718 |
Hello Jan, On (01/06/16 13:25), Jan Kara wrote: [..] > > a quote from -mm a74b6533ead8 http://www.spinics.net/lists/linux-mm/msg98990.html [..] > > particularly this "workqueue context is not appropriate because all the workers > > might be busy (e.g. allocating memory)" part. I think printk should switch to > > sync mode in this case, since printk now does queue_work(system_wq, work). > > um... console_verbose() call from oom kill? but it'll be nice to return back > > to async mode once (if) memory pressure goes away. > > Hum, yes, some mechanism to switch to sync printing in case work cannot be > executed for a long time is probably needed. I'll think about it. well, technically, worker_pool keeps ->watchdog_ts updated, so ,basically, worker pool knows when it stall. with CONFIG_WQ_WATCHDOG enabled timer_fn wq_watchdog_timer_fn() checks that value and pr_emerg(). in the worst case, printk can depend on CONFIG_WQ_WATCHDOG (yes, this sounds a bit sad) -- which implies, however, potentially long print from timer_fn. having a printk() specific timer_fn, that will do the same, is just a duplication of functionality; and checking the value in every vprintk_emit() is not really an option too, I'm afraid, there may be no printk calls for some time. just my 5 cents. probably you have better ideas. one another thing, include/linux/workqueue.h says : System-wide workqueues which are always present. : : system_wq is the one used by schedule[_delayed]_work[_on](). : Multi-CPU multi-threaded. There are users which expect relatively : short queue flush time. Don't queue works which can run for too : long. : [..] : : system_long_wq is similar to system_wq but may host long running : works. Queue flushing might take relatively long. : : system_unbound_wq is unbound workqueue. Workers are not bound to : any specific CPU, not concurrency managed, and all queued works are : executed immediately as long as max_active limit is not reached and : resources are available. wake_up_klogd_work_func() is using `system_wq' to do 'console_lock()/console_unlock()', both of which can take a long time. should it be switched to `system_long_wq' or `system_unbound_wq'? -ss
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web