提交 50134731 编写于 作者: A Andrea Arcangeli 提交者: Linus Torvalds

mm: vmscan: check if we isolated a compound page during lumpy scan

Properly take into account if we isolated a compound page during the lumpy
scan in reclaim and skip over the tail pages when encountered.  This
corrects the values given to the tracepoint for number of lumpy pages
isolated and will avoid breaking the loop early if compound pages smaller
than the requested allocation size are requested.

[mgorman@suse.de: Updated changelog]
Signed-off-by: NAndrea Arcangeli <aarcange@redhat.com>
Signed-off-by: NMel Gorman <mgorman@suse.de>
Reviewed-by: NMinchan Kim <minchan.kim@gmail.com>
Reviewed-by: NRik van Riel <riel@redhat.com>
Cc: Dave Jones <davej@redhat.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Andy Isaacson <adi@hexapodia.org>
Cc: Nai Xia <nai.xia@gmail.com>
Cc: Johannes Weiner <jweiner@redhat.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 b16d3d5a
...@@ -1196,13 +1196,17 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, ...@@ -1196,13 +1196,17 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
break; break;
if (__isolate_lru_page(cursor_page, mode, file) == 0) { if (__isolate_lru_page(cursor_page, mode, file) == 0) {
unsigned int isolated_pages;
mem_cgroup_lru_del(cursor_page); mem_cgroup_lru_del(cursor_page);
list_move(&cursor_page->lru, dst); list_move(&cursor_page->lru, dst);
nr_taken += hpage_nr_pages(cursor_page); isolated_pages = hpage_nr_pages(cursor_page);
nr_lumpy_taken++; nr_taken += isolated_pages;
nr_lumpy_taken += isolated_pages;
if (PageDirty(cursor_page)) if (PageDirty(cursor_page))
nr_lumpy_dirty++; nr_lumpy_dirty += isolated_pages;
scan++; scan++;
pfn += isolated_pages - 1;
} else { } else {
/* /*
* Check if the page is freed already. * Check if the page is freed already.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册