summaryrefslogtreecommitdiff
path: root/include/linux/psi_types.h
diff options
context:
space:
mode:
authorChengming Zhou <zhouchengming@bytedance.com>2022-08-25 19:41:10 +0300
committerPeter Zijlstra <peterz@infradead.org>2022-09-09 12:08:33 +0300
commitdc86aba751e2867244411adda1562f6664747019 (patch)
treea3da212be6c190b5585ee4f9761c4177ad4f19c6 /include/linux/psi_types.h
parent57899a6610e67ba26fa3251ebbef4a5ed21efc5d (diff)
downloadlinux-dc86aba751e2867244411adda1562f6664747019.tar.xz
sched/psi: Cache parent psi_group to speed up group iteration
We use iterate_groups() to iterate each level psi_group to update PSI stats, which is a very hot path. In current code, iterate_groups() have to use multiple branches and cgroup_parent() to get parent psi_group for each level, which is not very efficient. This patch cache parent psi_group in struct psi_group, only need to get psi_group of task itself first, then just use group->parent to iterate. Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Link: https://lore.kernel.org/r/20220825164111.29534-10-zhouchengming@bytedance.com
Diffstat (limited to 'include/linux/psi_types.h')
-rw-r--r--include/linux/psi_types.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/psi_types.h b/include/linux/psi_types.h
index 40c28171cd91..a0b746258c68 100644
--- a/include/linux/psi_types.h
+++ b/include/linux/psi_types.h
@@ -151,6 +151,8 @@ struct psi_trigger {
};
struct psi_group {
+ struct psi_group *parent;
+
/* Protects data used by the aggregator */
struct mutex avgs_lock;