Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752430AbdHIHnq (ORCPT ); Wed, 9 Aug 2017 03:43:46 -0400 Received: from bombadil.infradead.org ([65.50.211.133]:59809 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750879AbdHIHnp (ORCPT ); Wed, 9 Aug 2017 03:43:45 -0400 Date: Wed, 9 Aug 2017 09:43:37 +0200 From: Peter Zijlstra To: Yafang Shao Cc: mingo@redhat.com, gregkh@linuxfoundation.org, jslaby@suse.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3] scheduler: enhancement to show_state_filter and SysRq Message-ID: <20170809074337.awcwac6u2cxr5h2m@hirez.programming.kicks-ass.net> References: <1502274688-2508-1-git-send-email-laoar.shao@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1502274688-2508-1-git-send-email-laoar.shao@gmail.com> User-Agent: NeoMutt/20170609 (1.8.3) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1407 Lines: 35 On Wed, Aug 09, 2017 at 06:31:28PM +0800, Yafang Shao wrote: > Sometimes we want to get tasks in TASK_RUNNING sepcifically, > instead of dump all tasks. > > For example, when the loadavg are high, we want to dump > tasks in TASK_RUNNING and TASK_UNINTERRUPTIBLE, which contribute > to system load. But mostly there're lots of tasks in Sleep state, > which occupies almost all of the kernel log buffer, even overflows > it, that causes the useful messages get lost. Although we can > enlarge the kernel log buffer, but that's not a good idea. That's what you have serial consoles for... > +static void sysrq_handle_showstate_load(int key) > { > + show_state_filter(TASK_UNINTERRUPTIBLE << 1 | (TASK_RUNNING | 0x1)); > } How is that not unreadable gunk? > @@ -477,7 +478,7 @@ static void sysrq_handle_unrt(int key) > &sysrq_mountro_op, /* u */ > /* v: May be registered for frame buffer console restore */ > NULL, /* v */ > - &sysrq_showstate_blocked_op, /* w */ > + &sysrq_showstate_load_op, /* w */ > /* x: May be registered on mips for TLB dump */ > /* x: May be registered on ppc/powerpc for xmon */ > /* x: May be registered on sparc64 for global PMU dump */ So I'm really not convinced this is useful. The blocked thing is very useful if you're trying to debug a deadlock. Now you get endless clutter with runnable tasks. High load-avg as such isn't a problem. Why do you care?