Re: [PATCH v11 7/7] mm: add vm event counters for balloon pages compaction

2012-11-20 Thread Andrew Morton
On Fri, 9 Nov 2012 12:58:29 -0200
Rafael Aquini  wrote:

> On Fri, Nov 09, 2012 at 12:20:33PM +, Mel Gorman wrote:
> > On Wed, Nov 07, 2012 at 01:05:54AM -0200, Rafael Aquini wrote:
> > > This patch introduces a new set of vm event counters to keep track of
> > > ballooned pages compaction activity.
> > > 
> > > Signed-off-by: Rafael Aquini 
> > 
> > Other than confirming the thing actually works can any meaningful
> > conclusions be drawn from this counters?
> > 
> > I know I have been inconsistent on this myself in the past but recently
> > I've been taking the attitude that the counters can be used to fit into
> > some other metric. I'm looking to change the compaction counters to be
> > able to build a basic cost model for example. The same idea could be
> > used for balloons of course but it's a less critical path than
> > compaction for THP for example.
> > 
> > Assuming it builds and all the defines are correct when the feature is
> > not configured (I didn't check) then there is nothing wrong with the
> > patch. However, if it was dropped would it make life very hard or would
> > you notice?
> > 
> 
> Originally, I proposed this patch as droppable (and it's still droppable)
> because its major purpose was solely to show the thing working consistently
> 
> OTOH, it might make the life easier to spot breakages if it remains with the
> merged bits, and per a reviewer request I removed its 'DROP BEFORE MERGE'
> disclaimer.
> 
>https://lkml.org/lkml/2012/8/8/616

There's a lot to be said for not merging things.

I think I'll maintain this as a mm-only patch.  That way it's
available in linux-next and we can merge it later if a need arises.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v11 7/7] mm: add vm event counters for balloon pages compaction

2012-11-20 Thread Andrew Morton
On Fri, 9 Nov 2012 12:58:29 -0200
Rafael Aquini aqu...@redhat.com wrote:

 On Fri, Nov 09, 2012 at 12:20:33PM +, Mel Gorman wrote:
  On Wed, Nov 07, 2012 at 01:05:54AM -0200, Rafael Aquini wrote:
   This patch introduces a new set of vm event counters to keep track of
   ballooned pages compaction activity.
   
   Signed-off-by: Rafael Aquini aqu...@redhat.com
  
  Other than confirming the thing actually works can any meaningful
  conclusions be drawn from this counters?
  
  I know I have been inconsistent on this myself in the past but recently
  I've been taking the attitude that the counters can be used to fit into
  some other metric. I'm looking to change the compaction counters to be
  able to build a basic cost model for example. The same idea could be
  used for balloons of course but it's a less critical path than
  compaction for THP for example.
  
  Assuming it builds and all the defines are correct when the feature is
  not configured (I didn't check) then there is nothing wrong with the
  patch. However, if it was dropped would it make life very hard or would
  you notice?
  
 
 Originally, I proposed this patch as droppable (and it's still droppable)
 because its major purpose was solely to show the thing working consistently
 
 OTOH, it might make the life easier to spot breakages if it remains with the
 merged bits, and per a reviewer request I removed its 'DROP BEFORE MERGE'
 disclaimer.
 
https://lkml.org/lkml/2012/8/8/616

There's a lot to be said for not merging things.

I think I'll maintain this as a mm-only patch.  That way it's
available in linux-next and we can merge it later if a need arises.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v11 7/7] mm: add vm event counters for balloon pages compaction

2012-11-11 Thread Rafael Aquini
On Sat, Nov 10, 2012 at 05:55:38PM +0200, Michael S. Tsirkin wrote:
> > mutex_unlock(>balloon_lock);
> > +   balloon_event_count(COMPACTBALLOONMIGRATED);
> >  
> > return MIGRATEPAGE_BALLOON_SUCCESS;
> >  }
> 
> Looks like any ballon would need to do this.
> Can this  chunk go into caller instead?
>

Good catch. It's done, already (v12 just hit the wild).

Thanks!
-- Rafael
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v11 7/7] mm: add vm event counters for balloon pages compaction

2012-11-11 Thread Rafael Aquini
On Sat, Nov 10, 2012 at 05:55:38PM +0200, Michael S. Tsirkin wrote:
  mutex_unlock(vb-balloon_lock);
  +   balloon_event_count(COMPACTBALLOONMIGRATED);
   
  return MIGRATEPAGE_BALLOON_SUCCESS;
   }
 
 Looks like any ballon would need to do this.
 Can this  chunk go into caller instead?


Good catch. It's done, already (v12 just hit the wild).

Thanks!
-- Rafael
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v11 7/7] mm: add vm event counters for balloon pages compaction

2012-11-10 Thread Michael S. Tsirkin
On Wed, Nov 07, 2012 at 01:05:54AM -0200, Rafael Aquini wrote:
> This patch introduces a new set of vm event counters to keep track of
> ballooned pages compaction activity.
> 
> Signed-off-by: Rafael Aquini 
> ---
>  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 69eede7..3756fc1 100644
> --- a/drivers/virtio/virtio_balloon.c
> +++ b/drivers/virtio/virtio_balloon.c
> @@ -411,6 +411,7 @@ int virtballoon_migratepage(struct address_space *mapping,
>   tell_host(vb, vb->deflate_vq);
>  
>   mutex_unlock(>balloon_lock);
> + balloon_event_count(COMPACTBALLOONMIGRATED);
>  
>   return MIGRATEPAGE_BALLOON_SUCCESS;
>  }

Looks like any ballon would need to do this.
Can this  chunk go into caller instead?

> diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h
> index 3d31145..cbd72fc 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 90935aa..32927eb 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 adb3d44..ee3037d 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 c737057..1363edc 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",
> -- 
> 1.7.11.7
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v11 7/7] mm: add vm event counters for balloon pages compaction

2012-11-10 Thread Michael S. Tsirkin
On Wed, Nov 07, 2012 at 01:05:54AM -0200, Rafael Aquini wrote:
 This patch introduces a new set of vm event counters to keep track of
 ballooned pages compaction activity.
 
 Signed-off-by: Rafael Aquini aqu...@redhat.com
 ---
  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 69eede7..3756fc1 100644
 --- a/drivers/virtio/virtio_balloon.c
 +++ b/drivers/virtio/virtio_balloon.c
 @@ -411,6 +411,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;
  }

Looks like any ballon would need to do this.
Can this  chunk go into caller instead?

 diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h
 index 3d31145..cbd72fc 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 90935aa..32927eb 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 adb3d44..ee3037d 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 c737057..1363edc 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,
 -- 
 1.7.11.7
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v11 7/7] mm: add vm event counters for balloon pages compaction

2012-11-09 Thread Rafael Aquini
On Fri, Nov 09, 2012 at 12:20:33PM +, Mel Gorman wrote:
> On Wed, Nov 07, 2012 at 01:05:54AM -0200, Rafael Aquini wrote:
> > This patch introduces a new set of vm event counters to keep track of
> > ballooned pages compaction activity.
> > 
> > Signed-off-by: Rafael Aquini 
> 
> Other than confirming the thing actually works can any meaningful
> conclusions be drawn from this counters?
> 
> I know I have been inconsistent on this myself in the past but recently
> I've been taking the attitude that the counters can be used to fit into
> some other metric. I'm looking to change the compaction counters to be
> able to build a basic cost model for example. The same idea could be
> used for balloons of course but it's a less critical path than
> compaction for THP for example.
> 
> Assuming it builds and all the defines are correct when the feature is
> not configured (I didn't check) then there is nothing wrong with the
> patch. However, if it was dropped would it make life very hard or would
> you notice?
> 

Originally, I proposed this patch as droppable (and it's still droppable)
because its major purpose was solely to show the thing working consistently

OTOH, it might make the life easier to spot breakages if it remains with the
merged bits, and per a reviewer request I removed its 'DROP BEFORE MERGE'
disclaimer.

   https://lkml.org/lkml/2012/8/8/616

-- Rafael
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v11 7/7] mm: add vm event counters for balloon pages compaction

2012-11-09 Thread Mel Gorman
On Wed, Nov 07, 2012 at 01:05:54AM -0200, Rafael Aquini wrote:
> This patch introduces a new set of vm event counters to keep track of
> ballooned pages compaction activity.
> 
> Signed-off-by: Rafael Aquini 

Other than confirming the thing actually works can any meaningful
conclusions be drawn from this counters?

I know I have been inconsistent on this myself in the past but recently
I've been taking the attitude that the counters can be used to fit into
some other metric. I'm looking to change the compaction counters to be
able to build a basic cost model for example. The same idea could be
used for balloons of course but it's a less critical path than
compaction for THP for example.

Assuming it builds and all the defines are correct when the feature is
not configured (I didn't check) then there is nothing wrong with the
patch. However, if it was dropped would it make life very hard or would
you notice?

-- 
Mel Gorman
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v11 7/7] mm: add vm event counters for balloon pages compaction

2012-11-09 Thread Mel Gorman
On Wed, Nov 07, 2012 at 01:05:54AM -0200, Rafael Aquini wrote:
 This patch introduces a new set of vm event counters to keep track of
 ballooned pages compaction activity.
 
 Signed-off-by: Rafael Aquini aqu...@redhat.com

Other than confirming the thing actually works can any meaningful
conclusions be drawn from this counters?

I know I have been inconsistent on this myself in the past but recently
I've been taking the attitude that the counters can be used to fit into
some other metric. I'm looking to change the compaction counters to be
able to build a basic cost model for example. The same idea could be
used for balloons of course but it's a less critical path than
compaction for THP for example.

Assuming it builds and all the defines are correct when the feature is
not configured (I didn't check) then there is nothing wrong with the
patch. However, if it was dropped would it make life very hard or would
you notice?

-- 
Mel Gorman
SUSE Labs
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v11 7/7] mm: add vm event counters for balloon pages compaction

2012-11-09 Thread Rafael Aquini
On Fri, Nov 09, 2012 at 12:20:33PM +, Mel Gorman wrote:
 On Wed, Nov 07, 2012 at 01:05:54AM -0200, Rafael Aquini wrote:
  This patch introduces a new set of vm event counters to keep track of
  ballooned pages compaction activity.
  
  Signed-off-by: Rafael Aquini aqu...@redhat.com
 
 Other than confirming the thing actually works can any meaningful
 conclusions be drawn from this counters?
 
 I know I have been inconsistent on this myself in the past but recently
 I've been taking the attitude that the counters can be used to fit into
 some other metric. I'm looking to change the compaction counters to be
 able to build a basic cost model for example. The same idea could be
 used for balloons of course but it's a less critical path than
 compaction for THP for example.
 
 Assuming it builds and all the defines are correct when the feature is
 not configured (I didn't check) then there is nothing wrong with the
 patch. However, if it was dropped would it make life very hard or would
 you notice?
 

Originally, I proposed this patch as droppable (and it's still droppable)
because its major purpose was solely to show the thing working consistently

OTOH, it might make the life easier to spot breakages if it remains with the
merged bits, and per a reviewer request I removed its 'DROP BEFORE MERGE'
disclaimer.

   https://lkml.org/lkml/2012/8/8/616

-- Rafael
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH v11 7/7] mm: add vm event counters for balloon pages compaction

2012-11-06 Thread Rafael Aquini
This patch introduces a new set of vm event counters to keep track of
ballooned pages compaction activity.

Signed-off-by: Rafael Aquini 
---
 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 69eede7..3756fc1 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -411,6 +411,7 @@ int virtballoon_migratepage(struct address_space *mapping,
tell_host(vb, vb->deflate_vq);
 
mutex_unlock(>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 3d31145..cbd72fc 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 90935aa..32927eb 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 adb3d44..ee3037d 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 c737057..1363edc 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",
-- 
1.7.11.7

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH v11 7/7] mm: add vm event counters for balloon pages compaction

2012-11-06 Thread Rafael Aquini
This patch introduces a new set of vm event counters to keep track of
ballooned pages compaction activity.

Signed-off-by: Rafael Aquini aqu...@redhat.com
---
 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 69eede7..3756fc1 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -411,6 +411,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 3d31145..cbd72fc 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 90935aa..32927eb 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 adb3d44..ee3037d 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 c737057..1363edc 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,
-- 
1.7.11.7

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/