On Sat, Aug 24, 2019 at 9:05 PM Hillf Danton <hdanton@xxxxxxxx> wrote: > > > On Sat, 24 Aug 2019 16:15:38 +0800 Yafang Shao wrote: > > > > The memcg soft reclaim is called from kswapd reclam path and direct > > reclaim path, > > so why not pass the scan_control from the callsite in these two > > reclaim paths and use it in memcg soft reclaim ? > > Seems there's no specially reason that we must introduce a new > > scan_control here. > > > To protect memcg from being over reclaimed? Not only this, but also makes the reclaim path more clear. > Victim memcg is selected one after another in a fair way, and punished > by reclaiming one memcg a round no more than nr_to_reclaim == > SWAP_CLUSTER_MAX pages. And so is the flip-flop from global to memcg > reclaiming. We can see similar protection activities in > commit a394cb8ee632 ("memcg,vmscan: do not break out targeted reclaim > without reclaimed pages") and > commit 2bb0f34fe3c1 ("mm: vmscan: do not iterate all mem cgroups for > global direct reclaim"). > > No preference seems in either way except for retaining > nr_to_reclaim == SWAP_CLUSTER_MAX and target_mem_cgroup == memcg. Setting target_mem_cgroup here may be a very subtle change for subsequent processing. Regarding retraining nr_to_reclaim == SWAP_CLUSTER_MAX, it may not proper for direct reclaim, that may cause some stall if we iterate all memcgs here. > > > > I have checked the hisotry why this order check is introduced here. > > The first commit is 4e41695356fb ("memory controller: soft limit > > reclaim on contention"), > > but it didn't explained why. > > At the first glance it is reasonable to remove it, but we should > > understand why it was introduced at the first place. > > Reclaiming order can not make much sense in soft-limit reclaiming > under the current protection. > > Thanks to Adric Blake again. > > Hillf >