]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mm: add vm event counters for balloon pages compaction
authorRafael Aquini <aquini@redhat.com>
Fri, 9 Nov 2012 03:04:32 +0000 (14:04 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Mon, 12 Nov 2012 04:17:12 +0000 (15:17 +1100)
Introduce a new set of vm event counters to keep track of ballooned pages
compaction activity.

Signed-off-by: Rafael Aquini <aquini@redhat.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Minchan Kim <minchan@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
drivers/virtio/virtio_balloon.c
include/linux/vm_event_item.h
mm/balloon_compaction.c
mm/migrate.c
mm/vmstat.c

index c298a9a09c0e1ff6e66590c9cb211607bd8fcd49..f70151b34f4d48c978675bce5f5d9578a2928efb 100644 (file)
@@ -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;
 }
index 3d3114594370118addc16ee1156e9b19f6d97fef..cbd72fc7ac08141591cd1c38c82db27fa650488d 100644 (file)
@@ -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
index 90935aa59cc7a087344f35f12bb2698c8f17e068..32927ebaa42e8c72956f2fa09c57b6a1d13079d7 100644 (file)
@@ -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);
index 9b0ab155eafaa3e43f2277d4c25f896e03e4f42b..dca04a15f747b3465b6aab698ca8d3e48125d4f1 100644 (file)
@@ -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:
index c7370579111b872943c56bd694dc0bd02121092d..1363edc6b004fada67ce1acb033e2bd186121d52 100644 (file)
@@ -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",