linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm: add NR_ZSMALLOC to vmstat
@ 2016-06-03  2:08 Minchan Kim
  2016-06-03  8:01 ` Sergey Senozhatsky
  0 siblings, 1 reply; 6+ messages in thread
From: Minchan Kim @ 2016-06-03  2:08 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kernel, linux-mm, Minchan Kim, Sangseok Lee, Chanho Min,
	Chan Gyun Jeong

Now, zram is very popular for some of embedded world(e.g., TV, mobile
phone). On those system, zsmalloc consumed memory size is never trivial
(one of example from real product system, total memory: 800M, zsmalloc
consumed: 150M), so we have used this out of tree patch to monitor system
memory behavior via /proc/vmstat.

With zsmalloc in vmstat, it helps tracking down system behavior by
memory usage.

Cc: Sangseok Lee <sangseok.lee@lge.com>
Cc: Chanho Min <chanho.min@lge.com>
Cc: Chan Gyun Jeong <chan.jeong@lge.com>
Signed-off-by: Minchan Kim <minchan@kernel.org>
---
 include/linux/mmzone.h | 3 +++
 mm/vmstat.c            | 4 +++-
 mm/zsmalloc.c          | 7 ++++++-
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 3388ccbab7d6..971d4c9f2550 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -140,6 +140,9 @@ enum zone_stat_item {
 	NR_DIRTIED,		/* page dirtyings since bootup */
 	NR_WRITTEN,		/* page writings since bootup */
 	NR_PAGES_SCANNED,	/* pages scanned since last reclaim */
+#ifdef CONFIG_ZSMALLOC
+	NR_ZSMALLOC,
+#endif
 #ifdef CONFIG_NUMA
 	NUMA_HIT,		/* allocated in intended node */
 	NUMA_MISS,		/* allocated in non intended node */
diff --git a/mm/vmstat.c b/mm/vmstat.c
index 1b585f8e3088..3701905f3eb4 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -730,7 +730,9 @@ const char * const vmstat_text[] = {
 	"nr_dirtied",
 	"nr_written",
 	"nr_pages_scanned",
-
+#ifdef CONFIG_ZSMALLOC
+	"nr_zsmalloc",
+#endif
 #ifdef CONFIG_NUMA
 	"numa_hit",
 	"numa_miss",
diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c
index a80100db16d6..8e71ec4f8005 100644
--- a/mm/zsmalloc.c
+++ b/mm/zsmalloc.c
@@ -1022,6 +1022,7 @@ static void __free_zspage(struct zs_pool *pool, struct size_class *class,
 		reset_page(page);
 		unlock_page(page);
 		put_page(page);
+		dec_zone_page_state(page, NR_ZSMALLOC);
 		page = next;
 	} while (page != NULL);
 
@@ -1149,11 +1150,15 @@ static struct zspage *alloc_zspage(struct zs_pool *pool,
 
 		page = alloc_page(gfp);
 		if (!page) {
-			while (--i >= 0)
+			while (--i >= 0) {
 				__free_page(pages[i]);
+				dec_zone_page_state(page, NR_ZSMALLOC);
+			}
 			cache_free_zspage(pool, zspage);
 			return NULL;
 		}
+
+		inc_zone_page_state(page, NR_ZSMALLOC);
 		pages[i] = page;
 	}
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] mm: add NR_ZSMALLOC to vmstat
  2016-06-03  2:08 [PATCH] mm: add NR_ZSMALLOC to vmstat Minchan Kim
@ 2016-06-03  8:01 ` Sergey Senozhatsky
  2016-06-03  8:23   ` Minchan Kim
  0 siblings, 1 reply; 6+ messages in thread
From: Sergey Senozhatsky @ 2016-06-03  8:01 UTC (permalink / raw)
  To: Minchan Kim
  Cc: Andrew Morton, linux-kernel, linux-mm, Sangseok Lee, Chanho Min,
	Chan Gyun Jeong

On (06/03/16 11:08), Minchan Kim wrote:
> Now, zram is very popular for some of embedded world(e.g., TV, mobile
> phone). On those system, zsmalloc consumed memory size is never trivial
> (one of example from real product system, total memory: 800M, zsmalloc
> consumed: 150M), so we have used this out of tree patch to monitor system
> memory behavior via /proc/vmstat.
> 
> With zsmalloc in vmstat, it helps tracking down system behavior by
> memory usage.

Hello,

may be use zsmalloc stats file instead? as far as I know, you keep
zsmalloc stats enabled in production anyway.

	-ss

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] mm: add NR_ZSMALLOC to vmstat
  2016-06-03  8:01 ` Sergey Senozhatsky
@ 2016-06-03  8:23   ` Minchan Kim
  2016-06-03 10:24     ` Sergey Senozhatsky
  0 siblings, 1 reply; 6+ messages in thread
From: Minchan Kim @ 2016-06-03  8:23 UTC (permalink / raw)
  To: Sergey Senozhatsky
  Cc: Andrew Morton, linux-kernel, linux-mm, Sangseok Lee, Chanho Min,
	Chan Gyun Jeong

Hello,

On Fri, Jun 03, 2016 at 05:01:41PM +0900, Sergey Senozhatsky wrote:
> On (06/03/16 11:08), Minchan Kim wrote:
> > Now, zram is very popular for some of embedded world(e.g., TV, mobile
> > phone). On those system, zsmalloc consumed memory size is never trivial
> > (one of example from real product system, total memory: 800M, zsmalloc
> > consumed: 150M), so we have used this out of tree patch to monitor system
> > memory behavior via /proc/vmstat.
> > 
> > With zsmalloc in vmstat, it helps tracking down system behavior by
> > memory usage.
> 
> Hello,
> 
> may be use zsmalloc stats file instead? as far as I know, you keep
> zsmalloc stats enabled in production anyway.

It doesn't support per-zone stat which is important to show
the fragmentation of the zone, for exmaple.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] mm: add NR_ZSMALLOC to vmstat
  2016-06-03  8:23   ` Minchan Kim
@ 2016-06-03 10:24     ` Sergey Senozhatsky
  2016-06-07  1:43       ` Minchan Kim
  0 siblings, 1 reply; 6+ messages in thread
From: Sergey Senozhatsky @ 2016-06-03 10:24 UTC (permalink / raw)
  To: Minchan Kim
  Cc: Sergey Senozhatsky, Andrew Morton, linux-kernel, linux-mm,
	Sangseok Lee, Chanho Min, Chan Gyun Jeong

Hello,

On (06/03/16 17:23), Minchan Kim wrote:
> On Fri, Jun 03, 2016 at 05:01:41PM +0900, Sergey Senozhatsky wrote:
> > On (06/03/16 11:08), Minchan Kim wrote:
> > > Now, zram is very popular for some of embedded world(e.g., TV, mobile
> > > phone). On those system, zsmalloc consumed memory size is never trivial
> > > (one of example from real product system, total memory: 800M, zsmalloc
> > > consumed: 150M), so we have used this out of tree patch to monitor system
> > > memory behavior via /proc/vmstat.
> > > 
> > > With zsmalloc in vmstat, it helps tracking down system behavior by
> > > memory usage.
> > 
> > Hello,
> > 
> > may be use zsmalloc stats file instead? as far as I know, you keep
> > zsmalloc stats enabled in production anyway.
> 
> It doesn't support per-zone stat which is important to show
> the fragmentation of the zone, for exmaple.

Ah, I see.

*just an idea*

may be zbud and z3fold folks will be interested as well, so may
be more generic name and define... um, my head doesn't work toay..
ZALLOC... ZPOOLALLOC... hm.. I think you got the idea.

	-ss

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] mm: add NR_ZSMALLOC to vmstat
  2016-06-03 10:24     ` Sergey Senozhatsky
@ 2016-06-07  1:43       ` Minchan Kim
  2016-06-09  1:40         ` Sergey Senozhatsky
  0 siblings, 1 reply; 6+ messages in thread
From: Minchan Kim @ 2016-06-07  1:43 UTC (permalink / raw)
  To: Sergey Senozhatsky
  Cc: Sergey Senozhatsky, Andrew Morton, linux-kernel, linux-mm,
	Sangseok Lee, Chanho Min, Chan Gyun Jeong

Hi Sergey,

On Fri, Jun 03, 2016 at 07:24:32PM +0900, Sergey Senozhatsky wrote:
> Hello,
> 
> On (06/03/16 17:23), Minchan Kim wrote:
> > On Fri, Jun 03, 2016 at 05:01:41PM +0900, Sergey Senozhatsky wrote:
> > > On (06/03/16 11:08), Minchan Kim wrote:
> > > > Now, zram is very popular for some of embedded world(e.g., TV, mobile
> > > > phone). On those system, zsmalloc consumed memory size is never trivial
> > > > (one of example from real product system, total memory: 800M, zsmalloc
> > > > consumed: 150M), so we have used this out of tree patch to monitor system
> > > > memory behavior via /proc/vmstat.
> > > > 
> > > > With zsmalloc in vmstat, it helps tracking down system behavior by
> > > > memory usage.
> > > 
> > > Hello,
> > > 
> > > may be use zsmalloc stats file instead? as far as I know, you keep
> > > zsmalloc stats enabled in production anyway.
> > 
> > It doesn't support per-zone stat which is important to show
> > the fragmentation of the zone, for exmaple.
> 
> Ah, I see.
> 
> *just an idea*
> 
> may be zbud and z3fold folks will be interested as well, so may

First motivation of stat came from fragmentation problem from zsmalloc
which caused by storing many thin zpages in a pageframe and across two
pageframes while zswap limits the limitation by design.

Second motivation is zsmalloc can allocate page from HIGH/movable zones
so I want to know how distribution zsmalloced pages is.
However, zbud doesn't.

Lastly, zswap is designed for short-lived with backed storage so I guess
it shouldn't be a problem.

http://marc.info/?l=linux-mm&m=136570894925571&w=2
http://marc.info/?l=linux-kernel&m=136571103026450&w=2

Quote from Seth
"
> Compaction - compaction would basically involve creating a virtual address
> space of sorts, which zsmalloc is capable of through its API with handles,
> not pointer. However, as Dan points out this requires a structure the maintain
> the mappings and adds to complexity. Additionally, the need for compaction
> diminishes as the allocations are short-lived with frontswap backends doing
> writeback and cleancache backends shrinking.

Of course I say this, but for zram, this can be important as the allocations
can't be moved out of memory and, therefore, are long lived. I was speaking
from the zswap perspective.
"


> be more generic name and define... um, my head doesn't work toay..
> ZALLOC... ZPOOLALLOC... hm.. I think you got the idea.

Having said that, generic name is better rather than zsmalloc. Thanks.
I want to use *zspage* which is term from the beginning of zprojects. :)

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] mm: add NR_ZSMALLOC to vmstat
  2016-06-07  1:43       ` Minchan Kim
@ 2016-06-09  1:40         ` Sergey Senozhatsky
  0 siblings, 0 replies; 6+ messages in thread
From: Sergey Senozhatsky @ 2016-06-09  1:40 UTC (permalink / raw)
  To: Minchan Kim
  Cc: Sergey Senozhatsky, Sergey Senozhatsky, Andrew Morton,
	linux-kernel, linux-mm, Sangseok Lee, Chanho Min,
	Chan Gyun Jeong

Hello Minchan,

On (06/07/16 10:43), Minchan Kim wrote:
[..]
> > > It doesn't support per-zone stat which is important to show
> > > the fragmentation of the zone, for exmaple.
> > 
> > Ah, I see.
> > 
> > *just an idea*
> > 
> > may be zbud and z3fold folks will be interested as well, so may
> 
> First motivation of stat came from fragmentation problem from zsmalloc
> which caused by storing many thin zpages in a pageframe and across two
> pageframes while zswap limits the limitation by design.
> 
> Second motivation is zsmalloc can allocate page from HIGH/movable zones
> so I want to know how distribution zsmalloced pages is.
> However, zbud doesn't.

good points.
well, my "motivation" was "on 64-bit systems high zone is empty,
so those are zones below the high zone that we are interested in".

[..]
> > be more generic name and define... um, my head doesn't work toay..
> > ZALLOC... ZPOOLALLOC... hm.. I think you got the idea.
> 
> Having said that, generic name is better rather than zsmalloc. Thanks.
> I want to use *zspage* which is term from the beginning of zprojects. :)

thanks!

	-ss

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-06-09  1:40 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-03  2:08 [PATCH] mm: add NR_ZSMALLOC to vmstat Minchan Kim
2016-06-03  8:01 ` Sergey Senozhatsky
2016-06-03  8:23   ` Minchan Kim
2016-06-03 10:24     ` Sergey Senozhatsky
2016-06-07  1:43       ` Minchan Kim
2016-06-09  1:40         ` Sergey Senozhatsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).