diff options
author | Chengming Zhou <zhouchengming@bytedance.com> | 2022-08-25 19:41:10 +0300 |
---|---|---|
committer | Peter Zijlstra <peterz@infradead.org> | 2022-09-09 12:08:33 +0300 |
commit | dc86aba751e2867244411adda1562f6664747019 (patch) | |
tree | a3da212be6c190b5585ee4f9761c4177ad4f19c6 /include | |
parent | 57899a6610e67ba26fa3251ebbef4a5ed21efc5d (diff) | |
download | linux-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')
-rw-r--r-- | include/linux/psi_types.h | 2 |
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; |