Re: [PATCH v4 0/4] zram memory control enhance

From: Dan Streetman
Date: Fri Aug 22 2014 - 15:16:04 EST


On Thu, Aug 21, 2014 at 8:42 PM, Minchan Kim <minchan@xxxxxxxxxx> wrote:
> Currently, zram has no feature to limit memory so theoretically
> zram can deplete system memory.
> Users have asked for a limit several times as even without exhaustion
> zram makes it hard to control memory usage of the platform.
> This patchset adds the feature.
>
> Patch 1 makes zs_get_total_size_bytes faster because it would be
> used frequently in later patches for the new feature.
>
> Patch 2 changes zs_get_total_size_bytes's return unit from bytes
> to page so that zsmalloc doesn't need unnecessary operation(ie,
> << PAGE_SHIFT).
>
> Patch 3 adds new feature. I added the feature into zram layer,
> not zsmalloc because limiation is zram's requirement, not zsmalloc
> so any other user using zsmalloc(ie, zpool) shouldn't affected
> by unnecessary branch of zsmalloc. In future, if every users
> of zsmalloc want the feature, then, we could move the feature
> from client side to zsmalloc easily but vice versa would be
> painful.
>
> Patch 4 adds news facility to report maximum memory usage of zram
> so that this avoids user polling frequently via /sys/block/zram0/
> mem_used_total and ensures transient max are not missed.

FWIW, with the minor update to checking the memparse in patch 3 David
mentioned, feel free to add to all the patches:

Reviewed-by: Dan Streetman <ddstreet@xxxxxxxx>

>
> * From v3
> * get_zs_total_size_byte function name change - Dan
> * clarifiction of the document - Dan
> * atomic account instead of introducing new lock in zsmalloc - David
> * remove unnecessary atomic instruction in updating max - David
>
> * From v2
> * introduce helper funcntion to update max_used_pages
> for readability - David
> * avoid unncessary zs_get_total_size call in updating loop
> for max_used_pages - David
>
> * From v1
> * rebased on next-20140815
> * fix up race problem - David, Dan
> * reset mem_used_max as current total_bytes, rather than 0 - David
> * resetting works with only "0" write for extensiblilty - David, Dan
>
> Minchan Kim (4):
> zsmalloc: move pages_allocated to zs_pool
> zsmalloc: change return value unit of zs_get_total_size_bytes
> zram: zram memory size limitation
> zram: report maximum used memory
>
> Documentation/ABI/testing/sysfs-block-zram | 20 ++++++
> Documentation/blockdev/zram.txt | 25 +++++--
> drivers/block/zram/zram_drv.c | 101 ++++++++++++++++++++++++++++-
> drivers/block/zram/zram_drv.h | 6 ++
> include/linux/zsmalloc.h | 2 +-
> mm/zsmalloc.c | 30 ++++-----
> 6 files changed, 158 insertions(+), 26 deletions(-)
>
> --
> 2.0.0
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/