From c642cc6d8ef87d398f34ff12b262146aba907b76 Mon Sep 17 00:00:00 2001 From: Rafael Aquini Date: Fri, 9 Nov 2012 14:04:32 +1100 Subject: [PATCH] mm: add vm event counters for balloon pages compaction Introduce a new set of vm event counters to keep track of ballooned pages compaction activity. Signed-off-by: Rafael Aquini Cc: Rusty Russell Cc: "Michael S. Tsirkin" Cc: Rik van Riel Cc: Mel Gorman Cc: Andi Kleen Cc: Konrad Rzeszutek Wilk Cc: Minchan Kim Signed-off-by: Andrew Morton --- drivers/virtio/virtio_balloon.c | 1 + include/linux/vm_event_item.h | 8 +++++++- mm/balloon_compaction.c | 2 ++ mm/migrate.c | 1 + mm/vmstat.c | 10 +++++++++- 5 files changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index c298a9a09c0e..f70151b34f4d 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -406,6 +406,7 @@ int virtballoon_migratepage(struct address_space *mapping, tell_host(vb, vb->deflate_vq); mutex_unlock(&vb->balloon_lock); + balloon_event_count(COMPACTBALLOONMIGRATED); return MIGRATEPAGE_BALLOON_SUCCESS; } diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h index 3d3114594370..cbd72fc7ac08 100644 --- a/include/linux/vm_event_item.h +++ b/include/linux/vm_event_item.h @@ -41,7 +41,13 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, #ifdef CONFIG_COMPACTION COMPACTBLOCKS, COMPACTPAGES, COMPACTPAGEFAILED, COMPACTSTALL, COMPACTFAIL, COMPACTSUCCESS, -#endif +#ifdef CONFIG_BALLOON_COMPACTION + COMPACTBALLOONISOLATED, /* isolated from balloon pagelist */ + COMPACTBALLOONMIGRATED, /* balloon page sucessfully migrated */ + COMPACTBALLOONRELEASED, /* old-page released after migration */ + COMPACTBALLOONRETURNED, /* putback to pagelist, not-migrated */ +#endif /* CONFIG_BALLOON_COMPACTION */ +#endif /* CONFIG_COMPACTION */ #ifdef CONFIG_HUGETLB_PAGE HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL, #endif diff --git a/mm/balloon_compaction.c b/mm/balloon_compaction.c index 90935aa59cc7..32927ebaa42e 100644 --- a/mm/balloon_compaction.c +++ b/mm/balloon_compaction.c @@ -215,6 +215,7 @@ bool balloon_page_isolate(struct page *page) if (__is_movable_balloon_page(page) && page_count(page) == 2) { __isolate_balloon_page(page); + balloon_event_count(COMPACTBALLOONISOLATED); unlock_page(page); return true; } @@ -237,6 +238,7 @@ void balloon_page_putback(struct page *page) if (__is_movable_balloon_page(page)) { __putback_balloon_page(page); put_page(page); + balloon_event_count(COMPACTBALLOONRETURNED); } else { __WARN(); dump_page(page); diff --git a/mm/migrate.c b/mm/migrate.c index 9b0ab155eafa..dca04a15f747 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -896,6 +896,7 @@ static int unmap_and_move(new_page_t get_new_page, unsigned long private, page_is_file_cache(page)); put_page(page); __free_page(page); + balloon_event_count(COMPACTBALLOONRELEASED); return 0; } out: diff --git a/mm/vmstat.c b/mm/vmstat.c index c7370579111b..1363edc6b004 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -781,7 +781,15 @@ const char * const vmstat_text[] = { "compact_stall", "compact_fail", "compact_success", -#endif + +#ifdef CONFIG_BALLOON_COMPACTION + "compact_balloon_isolated", + "compact_balloon_migrated", + "compact_balloon_released", + "compact_balloon_returned", +#endif /* CONFIG_BALLOON_COMPACTION */ + +#endif /* CONFIG_COMPACTION */ #ifdef CONFIG_HUGETLB_PAGE "htlb_buddy_alloc_success", -- 2.39.5