mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 01:32:21 +02:00
mm/memcontrol: hoist pstatc_pcpu assignment out of CPU loop
In mem_cgroup_alloc(), the assignment of pstatc_pcpu is invariant with respect to the for_each_possible_cpu() loop: both the 'parent' pointer and 'parent->vmstats_percpu' remain constant throughout all iterations. The original code redundantly re-evaluated the 'if (parent)' condition and reassigned pstatc_pcpu on every CPU iteration, then repeated the same ternary check 'parent ? pstatc_pcpu : NULL' when storing into statc->parent_pcpu. Move the single conditional assignment of pstatc_pcpu to before the loop, resolving both the loop-invariant placement issue and the duplicated null check. On systems with a large number of possible CPUs, this eliminates repeated branch evaluation with no functional change. No functional change intended. Link: https://lore.kernel.org/20260429084216.186238-1-hui.zhu@linux.dev Signed-off-by: Hui Zhu <zhuhui@kylinos.cn> Reviewed-by: SeongJae Park <sj@kernel.org> Acked-by: Shakeel Butt <shakeel.butt@linux.dev> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@kernel.org> Cc: Muchun Song <muchun.song@linux.dev> Cc: Roman Gushchin <roman.gushchin@linux.dev> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
d94d0f9c15
commit
838376c60d
|
|
@ -4002,11 +4002,10 @@ static struct mem_cgroup *mem_cgroup_alloc(struct mem_cgroup *parent)
|
|||
if (!memcg1_alloc_events(memcg))
|
||||
goto fail;
|
||||
|
||||
pstatc_pcpu = parent ? parent->vmstats_percpu : NULL;
|
||||
for_each_possible_cpu(cpu) {
|
||||
if (parent)
|
||||
pstatc_pcpu = parent->vmstats_percpu;
|
||||
statc = per_cpu_ptr(memcg->vmstats_percpu, cpu);
|
||||
statc->parent_pcpu = parent ? pstatc_pcpu : NULL;
|
||||
statc->parent_pcpu = pstatc_pcpu;
|
||||
statc->vmstats = memcg->vmstats;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user