Re: [RFC] memcg: move definitions to .h and inline some functions
From: Balbir Singh <hidden>
Date: 2009-08-19 14:31:21
Also in:
lkml
* KAMEZAWA Hiroyuki [off-list ref] [2009-08-19 23:18:01]:
Wu Fengguang ?$B$5$s$O=q$-$^$7$?!'quoted
On Tue, Aug 18, 2009 at 11:57:52PM +0800, KOSAKI Motohiro wrote:quoted
quoted
quoted
This one of the reasons why we unconditionally deactivate the active anon pages, and do background scanning of the active anon list when reclaiming page cache pages. We want to always move some pages to the inactive anon list, so it does not get too small.Right, the current code tries to pull inactive list out of smallish-size state as long as there are vmscan activities. However there is a possible (and tricky) hole: mem cgroups don't do batched vmscan. shrink_zone() may call shrink_list() with nr_to_scan=1, in which case shrink_list() _still_ calls isolate_pages() with the much larger SWAP_CLUSTER_MAX. It effectively scales up the inactive list scan rate by 10 times when it is still small, and may thus prevent it from growing up for ever. In that case, LRU becomes FIFO. Jeff, can you confirm if the mem cgroup's inactive list is small? If so, this patch should help.This patch does right thing. However, I would explain why I and memcg folks didn't do that in past days. Strangely, some memcg struct declaration is hide in *.c. Thus we can't make inline function and we hesitated to introduce many function calling overhead. So, Can we move some memcg structure declaration to *.h and make mem_cgroup_get_saved_scan() inlined function?OK here it is. I have to move big chunks to make it compile, and it does reduced a dozen lines of code :) Is this big copy&paste acceptable? (memcg developers CCed). Thanks, FengguangI don't like this. plz add hooks to necessary places, at this stage. This will be too big for inlined function, anyway. plz move this after you find overhead is too big.
Me too.. I want to abstract the implementation within memcontrol.c to be honest (I am concerned that someone might include memcontrol.h and access its structure members, which scares me). Hiding it within memcontrol.c provides the right level of abstraction. Could you please explain your motivation for this change? I got cc'ed on to a few emails, is this for the patch that export nr_save_scanned approach? -- Balbir -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>