Thread (43 messages) 43 messages, 6 authors, 2012-07-19

Re: [PATCH 6/7] memcg: add per cgroup writeback pages accounting

From: Fengguang Wu <hidden>
Date: 2012-07-09 04:14:50
Also in: linux-mm, lkml

On Mon, Jul 09, 2012 at 11:36:11AM +0800, Sha Zhengju wrote:
On 07/08/2012 10:53 PM, Fengguang Wu wrote:
quoted
quoted
@@ -2245,7 +2252,10 @@ int test_set_page_writeback(struct page *page)
 {
 	struct address_space *mapping = page_mapping(page);
 	int ret;
+	bool locked;
+	unsigned long flags;

+	mem_cgroup_begin_update_page_stat(page,&locked,&flags);
 	if (mapping) {
 		struct backing_dev_info *bdi = mapping->backing_dev_info;
 		unsigned long flags;
@@ -2272,6 +2282,8 @@ int test_set_page_writeback(struct page *page)
 	}
 	if (!ret)
 		account_page_writeback(page);
+
+	mem_cgroup_end_update_page_stat(page,&locked,&flags);
 	return ret;

 }
Where is the MEM_CGROUP_STAT_FILE_WRITEBACK increased?
It's in account_page_writeback().

 void account_page_writeback(struct page *page)
 {
+	mem_cgroup_inc_page_stat(page, MEM_CGROUP_STAT_FILE_WRITEBACK);
 	inc_zone_page_state(page, NR_WRITEBACK);
 }
I didn't find that chunk, perhaps it's lost due to rebase..
There isn't a unified interface to dec/inc writeback accounting, so
I just follow that.
Maybe we can rework account_page_writeback() to also account
dec in?
The current seperate inc/dec paths are fine. It sounds like
over-engineering if going any further.

I'm a bit worried about some 3rd party kernel module to call
account_page_writeback() without mem_cgroup_begin/end_update_page_stat().
Will that lead to serious locking issues, or merely inaccurate
accounting?

Thanks,
Fengguang
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help