This patch is only for testing report purposes and shall be dropped in case of
the rest of this patchset getting accepted for merging.

Signed-off-by: Rafael Aquini <[email protected]>
---
 drivers/virtio/virtio_balloon.c |    1 +
 include/linux/vm_event_item.h   |    2 ++
 mm/compaction.c                 |    4 +++-
 mm/migrate.c                    |    6 ++++--
 mm/vmstat.c                     |    4 ++++
 5 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index 53386aa..c4a929d 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -406,6 +406,7 @@ int virtballoon_migratepage(struct address_space *mapping,
        spin_unlock(&vb->pfn_list_lock);
        tell_host(vb, vb->deflate_vq, &sg);
 
+       count_vm_event(COMPACTBALLOONMIGRATED);
        return 0;
 }
 
diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h
index 06f8e38..e330c5a 100644
--- a/include/linux/vm_event_item.h
+++ b/include/linux/vm_event_item.h
@@ -40,6 +40,8 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
 #ifdef CONFIG_COMPACTION
                COMPACTBLOCKS, COMPACTPAGES, COMPACTPAGEFAILED,
                COMPACTSTALL, COMPACTFAIL, COMPACTSUCCESS,
+               COMPACTBALLOONMIGRATED, COMPACTBALLOONFAILED,
+               COMPACTBALLOONISOLATED, COMPACTBALLOONFREED,
 #endif
 #ifdef CONFIG_HUGETLB_PAGE
                HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL,
diff --git a/mm/compaction.c b/mm/compaction.c
index 8835d55..cf250b8 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -318,8 +318,10 @@ isolate_migratepages_range(struct zone *zone, struct 
compact_control *cc,
                 * for PageLRU, as well as skip the LRU page isolation steps.
                 */
                if (PageBalloon(page))
-                       if (isolate_balloon_page(page))
+                       if (isolate_balloon_page(page)) {
+                               count_vm_event(COMPACTBALLOONISOLATED);
                                goto isolated_balloon_page;
+               }
 
                if (!PageLRU(page))
                        continue;
diff --git a/mm/migrate.c b/mm/migrate.c
index ffc02a4..3dbca33 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -78,9 +78,10 @@ void putback_lru_pages(struct list_head *l)
                list_del(&page->lru);
                dec_zone_page_state(page, NR_ISOLATED_ANON +
                                page_is_file_cache(page));
-               if (unlikely(PageBalloon(page)))
+               if (unlikely(PageBalloon(page))) {
                        VM_BUG_ON(!putback_balloon_page(page));
-               else
+                       count_vm_event(COMPACTBALLOONFAILED);
+               } else
                        putback_lru_page(page);
        }
 }
@@ -878,6 +879,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);
+               count_vm_event(COMPACTBALLOONFREED);
                return rc;
        }
 out:
diff --git a/mm/vmstat.c b/mm/vmstat.c
index 1bbbbd9..3b7109f 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -767,6 +767,10 @@ const char * const vmstat_text[] = {
        "compact_stall",
        "compact_fail",
        "compact_success",
+       "compact_balloon_migrated",
+       "compact_balloon_failed",
+       "compact_balloon_isolated",
+       "compact_balloon_freed",
 #endif
 
 #ifdef CONFIG_HUGETLB_PAGE
-- 
1.7.10.2

_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to