[PATCH] cgroup-v1: use find granularity format identifiers to make /proc/cgroups show pretty

Lin Feng posted 1 patch 3 years, 9 months ago
kernel/cgroup/cgroup-v1.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] cgroup-v1: use find granularity format identifiers to make /proc/cgroups show pretty
Posted by Lin Feng 3 years, 9 months ago
The listing subsys info is unaligned with the header columns and we can
make the output more intuitive to read by specifying "left alignment"
and "fixed length" format styles for seq_printf.

# cat /proc/cgroups

the output originally:

#subsys_name	hierarchy	num_cgroups	enabled
cpuset	11	19	1
cpu	5	122	1
cpuacct	5	122	1
blkio	4	122	1
memory	10	129	1
devices	6	122	1
freezer	9	19	1
net_cls	8	19	1
perf_event	3	19	1
net_prio	8	19	1
hugetlb	7	19	1
pids	12	122	1
rdma	2	1	1

output after this patch:

#subsys_name	hierarchy	num_cgroups	enabled
cpuset      	11        	19      	1
cpu         	5         	122     	1
cpuacct     	5         	122     	1
blkio       	4         	122     	1
memory      	10        	129     	1
devices     	6         	122     	1
freezer     	9         	19      	1
net_cls     	8         	19      	1
perf_event  	3         	19      	1
net_prio    	8         	19      	1
hugetlb     	7         	19      	1
pids        	12        	122     	1
rdma        	2         	1       	1

Signed-off-by: Lin Feng <linf@wangsu.com>
---
 kernel/cgroup/cgroup-v1.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/cgroup/cgroup-v1.c b/kernel/cgroup/cgroup-v1.c
index afc6c0e9c966..1a74b0c504aa 100644
--- a/kernel/cgroup/cgroup-v1.c
+++ b/kernel/cgroup/cgroup-v1.c
@@ -677,7 +677,7 @@ int proc_cgroupstats_show(struct seq_file *m, void *v)
 	 */
 
 	for_each_subsys(ss, i)
-		seq_printf(m, "%s\t%d\t%d\t%d\n",
+		seq_printf(m, "%-12s\t%-10d\t%-10d\t%-d\n",
 			   ss->legacy_name, ss->root->hierarchy_id,
 			   atomic_read(&ss->root->nr_cgrps),
 			   cgroup_ssid_enabled(i));
-- 
2.31.1
Re: [PATCH] cgroup-v1: use find granularity format identifiers to make /proc/cgroups show pretty
Posted by Tejun Heo 3 years, 9 months ago
On Thu, Jun 30, 2022 at 04:25:39PM +0800, Lin Feng wrote:
> The listing subsys info is unaligned with the header columns and we can
> make the output more intuitive to read by specifying "left alignment"
> and "fixed length" format styles for seq_printf.

This has been proposed before but the file is useful only in cgroup1
which is in maintenance mode and the format has been like that since
forever. Given that there's some chance that it can break dumb
parsers, the choice has been to leave it alone. It's such a dumb file
format to begin with and just leaving it to wither and die seems to be
the right direction.

Thanks.

-- 
tejun
Re: [PATCH] cgroup-v1: use find granularity format identifiers to make /proc/cgroups show pretty
Posted by Lin Feng 3 years, 9 months ago
Hi Tejun,

On 7/1/22 09:09, Tejun Heo wrote:
> On Thu, Jun 30, 2022 at 04:25:39PM +0800, Lin Feng wrote:
>> The listing subsys info is unaligned with the header columns and we can
>> make the output more intuitive to read by specifying "left alignment"
>> and "fixed length" format styles for seq_printf.
> This has been proposed before but the file is useful only in cgroup1
> which is in maintenance mode and the format has been like that since
> forever. Given that there's some chance that it can break dumb
> parsers, the choice has been to leave it alone. It's such a dumb file
> format to begin with and just leaving it to wither and die seems to be
> the right direction.

Thanks for your explanation and sorry that I missed we have such a consensus
before.

I had considered that if this change would break the parsers, but it's likely
that it won't else the parser is really a broken one and needs some improvements.
On the other hand, cgroup-v1 still has many old users and kernel still has to
maintain it for some time for back compatible reason, so I think this tiny fix
should not be a bad idea.

Thanks,
linfeng