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? 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. > > 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