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, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>