|
@@ -9342,12 +9342,32 @@ out:
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
+static int cpuacct_percpu_seq_read(struct cgroup *cgroup, struct cftype *cft,
|
|
|
+ struct seq_file *m)
|
|
|
+{
|
|
|
+ struct cpuacct *ca = cgroup_ca(cgroup);
|
|
|
+ u64 percpu;
|
|
|
+ int i;
|
|
|
+
|
|
|
+ for_each_present_cpu(i) {
|
|
|
+ percpu = cpuacct_cpuusage_read(ca, i);
|
|
|
+ seq_printf(m, "%llu ", (unsigned long long) percpu);
|
|
|
+ }
|
|
|
+ seq_printf(m, "\n");
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static struct cftype files[] = {
|
|
|
{
|
|
|
.name = "usage",
|
|
|
.read_u64 = cpuusage_read,
|
|
|
.write_u64 = cpuusage_write,
|
|
|
},
|
|
|
+ {
|
|
|
+ .name = "usage_percpu",
|
|
|
+ .read_seq_string = cpuacct_percpu_seq_read,
|
|
|
+ },
|
|
|
+
|
|
|
};
|
|
|
|
|
|
static int cpuacct_populate(struct cgroup_subsys *ss, struct cgroup *cgrp)
|