fs/proc: add short desc for /proc/softirqs
diff mbox series

Message ID 1593614103-23574-1-git-send-email-pizhenwei@bytedance.com
State New
Headers show
Series
  • fs/proc: add short desc for /proc/softirqs
Related show

Commit Message

zhenwei pi July 1, 2020, 2:35 p.m. UTC
Only softirq name is not friendly to end-users, typically 'HI' is
difficult to understand. During developing irqtop/lsirq utilities
for util-linux, Karel Zak considered that we should give more
information to end-users. Discuss about this:
    https://github.com/karelzak/util-linux/pull/1079

Add short desc for /proc/softirqs in this patch, then /proc/softirqs
gets more human-readable.

Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
 fs/proc/softirqs.c        |  2 +-
 include/linux/interrupt.h |  5 +++--
 kernel/softirq.c          | 12 ++++++++++++
 3 files changed, 16 insertions(+), 3 deletions(-)

Comments

Alexey Dobriyan July 1, 2020, 6:14 p.m. UTC | #1
On Wed, Jul 01, 2020 at 10:35:03PM +0800, zhenwei pi wrote:
> Only softirq name is not friendly to end-users, typically 'HI' is
> difficult to understand. During developing irqtop/lsirq utilities
> for util-linux, Karel Zak considered that we should give more
> information to end-users. Discuss about this:
>     https://github.com/karelzak/util-linux/pull/1079
> 
> Add short desc for /proc/softirqs in this patch, then /proc/softirqs
> gets more human-readable.

> --- a/fs/proc/softirqs.c
> +++ b/fs/proc/softirqs.c
> @@ -20,7 +20,7 @@ static int show_softirqs(struct seq_file *p, void *v)
>  		seq_printf(p, "%12s:", softirq_to_name[i]);
>  		for_each_possible_cpu(j)
>  			seq_printf(p, " %10u", kstat_softirqs_cpu(i, j));
> -		seq_putc(p, '\n');
> +		seq_printf(p, "  %s\n", softirq_to_desc[i]);

This could break parsers. I'd rather leave it as is and update proc(5).

Of course this file doesn't need more characters in it. :-\

Patch
diff mbox series

diff --git a/fs/proc/softirqs.c b/fs/proc/softirqs.c
index 12901dc..fcd21f3 100644
--- a/fs/proc/softirqs.c
+++ b/fs/proc/softirqs.c
@@ -20,7 +20,7 @@  static int show_softirqs(struct seq_file *p, void *v)
 		seq_printf(p, "%12s:", softirq_to_name[i]);
 		for_each_possible_cpu(j)
 			seq_printf(p, " %10u", kstat_softirqs_cpu(i, j));
-		seq_putc(p, '\n');
+		seq_printf(p, "  %s\n", softirq_to_desc[i]);
 	}
 	return 0;
 }
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 5db970b..1d51397 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -543,10 +543,11 @@  enum
 
 #define SOFTIRQ_STOP_IDLE_MASK (~(1 << RCU_SOFTIRQ))
 
-/* map softirq index to softirq name. update 'softirq_to_name' in
- * kernel/softirq.c when adding a new softirq.
+/* map softirq index to softirq name. update 'softirq_to_name' &
+ * 'softirq_to_desc' in kernel/softirq.c when adding a new softirq.
  */
 extern const char * const softirq_to_name[NR_SOFTIRQS];
+extern const char * const softirq_to_desc[NR_SOFTIRQS];
 
 /* softirq mask and active fields moved to irq_cpustat_t in
  * asm/hardirq.h to get better cache usage.  KAO
diff --git a/kernel/softirq.c b/kernel/softirq.c
index c4201b7f..74eca3b 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -61,6 +61,18 @@  const char * const softirq_to_name[NR_SOFTIRQS] = {
 	"TASKLET", "SCHED", "HRTIMER", "RCU"
 };
 
+const char * const softirq_to_desc[NR_SOFTIRQS] = {
+	"high priority tasklet softirq",
+	"timer softirq",
+	"network transmit softirq",
+	"network receive softirq",
+	"block device softirq",
+	"IO poll softirq",
+	"normal priority tasklet softirq",
+	"schedule softirq",
+	"high resolution timer softirq",
+	"RCU softirq"
+};
 /*
  * we cannot loop indefinitely here to avoid userspace starvation,
  * but we also don't want to introduce a worst case 1/HZ latency