Re: [PATCH] cgroup: make cgroups info more readable

From: xiujianfeng
Date: Fri Apr 19 2024 - 22:47:47 EST


Hi,

On 2024/4/19 14:25, Huan Yang wrote:
> HI jianfeng
>
> 在 2024/4/19 11:33, xiujianfeng 写道:
>> [Some people who received this message don't often get email from
>> xiujianfeng@xxxxxxxxxx. Learn why this is important at
>> https://aka.ms/LearnAboutSenderIdentification ]
>>
>> Hi,
>>
>> I found a discussion about this change in the email thread bellow, and
>> hope it helps you.
> It's helpful to know why this patch not need, thank you.
>>
>> https://lore.kernel.org/all/YwMwlMv%2FtK3sRXbB@xxxxxxxxxxxxxxx/#t
>
> I have a question, that, now that only for cgroup1, when I running qemu
> ubuntu, I got this:
>
>> mount | grep cgroup
>> cgroup2 on /sys/fs/cgroup type cgroup2
> (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)
>
> Only cgroup2 mount in my system, but /proc/cgroup also worked, maybe
> better to disable this when only cgroup2 mounted?

I’m not the maintainer, so the official answer to this question should
be left to them:).

However, I don’t think this is the right way. Even though the
information shown by /proc/cgroups doesn’t seem as useful for cgroup2 as
for cgroup1 due to cgroup2 has only single hierarchy, it’s not entirely
useless, IMHO.

>
>> On 2024/4/9 10:18, Huan Yang wrote:
>>> The current cgroups output format is based on tabs, which
>>> may cause misalignment of output information.
>>>
>>> Using placeholder formatting can make the output information
>>> more readable.
>>>
>>> Signed-off-by: Huan Yang <link@xxxxxxxx>
>>> ---
>>>   kernel/cgroup/cgroup-v1.c | 7 ++++---
>>>   1 file changed, 4 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/kernel/cgroup/cgroup-v1.c b/kernel/cgroup/cgroup-v1.c
>>> index 520a11cb12f4..c082a78f4c22 100644
>>> --- a/kernel/cgroup/cgroup-v1.c
>>> +++ b/kernel/cgroup/cgroup-v1.c
>>> @@ -669,15 +669,16 @@ int proc_cgroupstats_show(struct seq_file *m,
>>> void *v)
>>>        struct cgroup_subsys *ss;
>>>        int i;
>>>
>>> -     seq_puts(m, "#subsys_name\thierarchy\tnum_cgroups\tenabled\n");
>>> +     seq_printf(m, "%16s %16s %16s %16s\n", "#subsys_name",
>>> "hierarchy",
>>> +                "num_cgroups", "enabled");
>>>        /*
>>>         * Grab the subsystems state racily. No need to add avenue to
>>>         * cgroup_mutex contention.
>>>         */
>>>
>>>        for_each_subsys(ss, i)
>>> -             seq_printf(m, "%s\t%d\t%d\t%d\n",
>>> -                        ss->legacy_name, ss->root->hierarchy_id,
>>> +             seq_printf(m, "%16s %16d %16d %16d\n", ss->legacy_name,
>>> +                        ss->root->hierarchy_id,
>>>                           atomic_read(&ss->root->nr_cgrps),
>>>                           cgroup_ssid_enabled(i));
>>>