Skip to content

Commit

Permalink
Revert "cgroup: Add memory barriers to plug cgroup_rstat_updated() ra…
Browse files Browse the repository at this point in the history
…ce window"

This reverts commit 9a9e97b ("cgroup: Add memory barriers to plug
cgroup_rstat_updated() race window").

The commit was added in anticipation of memcg rstat conversion which needed
synchronous accounting for the event counters (e.g. oom kill count). However,
the conversion didn't get merged due to percpu memory overhead concern which
couldn't be addressed at the time.

Unfortunately, the patch's addition of smp_mb() to cgroup_rstat_updated()
meant that every scheduling event now had to go through an additional full
barrier and Mel Gorman noticed it as 1% regression in netperf UDP_STREAM test.

There's no need to have this barrier in tree now and even if we need
synchronous accounting in the future, the right thing to do is separating that
out to a separate function so that hot paths which don't care about
synchronous behavior don't have to pay the overhead of the full barrier. Let's
revert.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Mel Gorman <mgorman@techsingularity.net>
Link: http://lkml.kernel.org/r/20200409154413.GK3818@techsingularity.net
Cc: v4.18+
  • Loading branch information
htejun committed Apr 9, 2020
1 parent 87ebc45 commit d8ef4b3
Showing 1 changed file with 3 additions and 13 deletions.
16 changes: 3 additions & 13 deletions kernel/cgroup/rstat.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,9 @@ void cgroup_rstat_updated(struct cgroup *cgrp, int cpu)
return;

/*
* Paired with the one in cgroup_rstat_cpu_pop_updated(). Either we
* see NULL updated_next or they see our updated stat.
*/
smp_mb();

/*
* Speculative already-on-list test. This may race leading to
* temporary inaccuracies, which is fine.
*
* Because @parent's updated_children is terminated with @parent
* instead of NULL, we can tell whether @cgrp is on the list by
* testing the next pointer for NULL.
Expand Down Expand Up @@ -134,13 +131,6 @@ static struct cgroup *cgroup_rstat_cpu_pop_updated(struct cgroup *pos,
*nextp = rstatc->updated_next;
rstatc->updated_next = NULL;

/*
* Paired with the one in cgroup_rstat_cpu_updated().
* Either they see NULL updated_next or we see their
* updated stat.
*/
smp_mb();

return pos;
}

Expand Down

0 comments on commit d8ef4b3

Please sign in to comment.