Re: Severe performance regression w/ 4.4+ on Android due to cgroup locking changes

From: Tejun Heo
Date: Thu Jul 14 2016 - 07:35:15 EST


On Wed, Jul 13, 2016 at 04:04:04PM -0700, Paul E. McKenney wrote:
> commit b4edebb8f5664a3a51be1e3ff3d7f1cb2d3d5c88
> Author: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>
> Date: Wed Jul 13 15:13:31 2016 -0700
> rcu: Provide RCUSYNC_EXPEDITE option for rcusync.expedited default
> This commit provides an RCUSYNC_EXPEDITE Kconfig option that specifies
> the default value for the rcusync.expedited kernel parameter. This
> makes it easier to use rcusync.expedited functionality in cases where
> specifying kernel boot parameters should be avoided.
> Reported-by: John Stultz <john.stultz@xxxxxxxxxx>
> Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>
> Tested-by: John Stultz <john.stultz@xxxxxxxxxx>
> Acked-by: John Stultz <john.stultz@xxxxxxxxxx>
> Cc: <stable@xxxxxxxxxxxxxxx> # 4.4.x-

I think it probably makes sense to make this the default on !RT at
least with a separate patch w/o stable cc'd. While most use cases
will be fine with the latency on write path, it also means that the
reader side is blocked for the duration which can hurt. rwsem implies
a lot more readers and thus more read lock operations than writes.
It's weird to trade off higher latency for lower cpu usage when it
would also slow down all readers.