On Wed, Jan 06, 2016 at 09:38:30AM +0100, Peter Zijlstra wrote: > On Wed, Jan 06, 2016 at 09:06:58AM +0100, Daniel Vetter wrote: > > This pretty much went over my head ;-) What I naively hoped for is that > > kfree() on an rcu-freeing slab could be tought to magically stall a bit > > (or at least expedite the delayed freeing) if we're piling up too many > > freed objects. > > Well, RCU does try harder when the callback list is getting 'big' (10k > IIRC). You got it, 10k by default, can be adjusted with the rcutree.qhimark kernel-boot/sysfs parameter. When a given CPU's callback list exceeds this limit, it more aggressively starts a grace period, and if a grace period is already in progress, it does more aggressive quiescent-state forcing. It does nothing to push back on processes generating callbacks, other than by soaking up extra CPU cycles. So, Daniel, if you haven't tried hammering the system hard, give it a shot and see if qhimark is helping enough. And perhaps adjust its value if need be. (Though please let me know if this is necessary -- if it is, we should try to automate its setting.) > > Doing that only in OOM is probably too late since OOM > > handling is a bit unreliable/unpredictable. And I thought we're not the > > first ones running into this problem. > > The whole memory pressure thing is unreliable/unpredictable last time I > looked at it, but sure, I suppose we could try and poke RCU sooner, but > then you get into the problem of when, doing it too soon will be > detrimental to performance, doing it too late is, well, too late. > > > Do all the other users of rcu-freed slabs just open-code their own custom > > approach? If that's the recommendation we can certainly follow that, too. > > The ones I know of seem to simply ignore this problem.. I believe that there are a few that do the occasional synchronize_rcu() to throttle themselves, but have not checked recently. Thanx, Paul -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>