Re: [PATCH v6 2/3] memcg: move memcg reclaimable page into tail of inactive list
From: Johannes Weiner <hannes@cmpxchg.org>
Date: 2011-02-21 08:40:25
Also in:
lkml
On Sun, Feb 20, 2011 at 11:43:37PM +0900, Minchan Kim wrote:
quoted hunk ↗ jump to hunk
--- a/mm/memcontrol.c +++ b/mm/memcontrol.c@@ -813,6 +813,33 @@ void mem_cgroup_del_lru(struct page *page) mem_cgroup_del_lru_list(page, page_lru(page)); } +/* + * Writeback is about to end against a page which has been marked for immediate + * reclaim. If it still appears to be reclaimable, move it to the tail of the + * inactive list. + */ +void mem_cgroup_rotate_reclaimable_page(struct page *page) +{ + struct mem_cgroup_per_zone *mz; + struct page_cgroup *pc; + enum lru_list lru = page_lru(page); + + if (mem_cgroup_disabled()) + return; + + pc = lookup_page_cgroup(page); + /* + * Used bit is set without atomic ops but after smp_wmb(). + * For making pc->mem_cgroup visible, insert smp_rmb() here. + */ + smp_rmb(); + /* unused or root page is not rotated. */ + if (!PageCgroupUsed(pc) || mem_cgroup_is_root(pc->mem_cgroup)) + return;
The placement of this barrier is confused and has been fixed up in the meantime in other places. It has to be between PageCgroupUsed() and accessing pc->mem_cgroup. You can look at the other memcg lru functions for reference. -- 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/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>