[Devel] [PATCH vz10] cpuacct: expose interface file in cgroup v2
Konstantin Khorenko
khorenko at virtuozzo.com
Wed Nov 19 19:26:31 MSK 2025
On 11/10/25 17:03, Aleksei Oladko wrote:
> In commit 0a76d99f5aa, the cpuacct controller was implicitly enabled in
> cgroup v2. This patch enables user access to the cpuacct interface files
> in cgroup v2, allowing statistics such as cpuacct.usage_percpu to be
> retrieved in the same way as in cgroup v1.
>
> https://virtuozzo.atlassian.net/browse/VSTOR-100092
>
> Signed-off-by: Aleksei Oladko <aleksey.oladko at virtuozzo.com>
> ---
> kernel/sched/cpuacct.c | 38 ++++++++++++++++++++++++++++++++++++++
> 1 file changed, 38 insertions(+)
>
> diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c
> index 65a331807e5d..4aa845afa9e7 100644
> --- a/kernel/sched/cpuacct.c
> +++ b/kernel/sched/cpuacct.c
> @@ -293,6 +293,43 @@ static int cpuacct_stats_show(struct seq_file *sf, void *v)
> return 0;
> }
>
> +static struct cftype cpuacct_files[] = {
> + {
> + .name = "usage",
> + .read_u64 = cpuusage_read,
> + .write_u64 = cpuusage_write,
> + },
> + {
> + .name = "usage_user",
> + .read_u64 = cpuusage_user_read,
> + },
> + {
> + .name = "usage_sys",
> + .read_u64 = cpuusage_sys_read,
> + },
> + {
> + .name = "usage_percpu",
> + .seq_show = cpuacct_percpu_seq_show,
> + },
> + {
> + .name = "usage_percpu_user",
> + .seq_show = cpuacct_percpu_user_seq_show,
> + },
> + {
> + .name = "usage_percpu_sys",
> + .seq_show = cpuacct_percpu_sys_seq_show,
> + },
> + {
> + .name = "usage_all",
> + .seq_show = cpuacct_all_seq_show,
> + },
> + {
> + .name = "stat",
> + .seq_show = cpuacct_stats_show,
> + },
> + { } /* terminate */
> +};
> +
> static struct cftype files[] = {
> {
> .name = "usage",
> @@ -363,6 +400,7 @@ struct cgroup_subsys cpuacct_cgrp_subsys = {
> .css_alloc = cpuacct_css_alloc,
> .css_free = cpuacct_css_free,
> .legacy_cftypes = files,
> + .dfl_cftypes = cpuacct_files,
May be just
1 │ struct cgroup_subsys cpuacct_cgrp_subsys = {
2 │ .css_alloc = cpuacct_css_alloc,
3 │ .css_free = cpuacct_css_free,
4 │ .legacy_cftypes = files,
5 │+ .dfl_cftypes = files, /* Same files for v1 and v2 */
6 │ .early_init = true,
7 │
8 │ .implicit_on_dfl = true,
9 │ .threaded = true,
10 │ };
?
int __init cgroup_init(void)
{
...
if (ss->dfl_cftypes == ss->legacy_cftypes) {
WARN_ON(cgroup_add_cftypes(ss, ss->dfl_cftypes));
} else {
WARN_ON(cgroup_add_dfl_cftypes(ss, ss->dfl_cftypes));
WARN_ON(cgroup_add_legacy_cftypes(ss, ss->legacy_cftypes));
}
> .early_init = true,
>
> .implicit_on_dfl = true,
More information about the Devel
mailing list