[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20221031054108.541190-1-senozhatsky@chromium.org>
Date: Mon, 31 Oct 2022 14:40:59 +0900
From: Sergey Senozhatsky <senozhatsky@...omium.org>
To: Andrew Morton <akpm@...ux-foundation.org>,
Minchan Kim <minchan@...nel.org>
Cc: Nitin Gupta <ngupta@...are.org>, linux-kernel@...r.kernel.org,
linux-mm@...ck.org, Sergey Senozhatsky <senozhatsky@...omium.org>
Subject: [PATCHv4 0/9] zsmalloc/zram: configurable zspage size
Hello,
Some use-cases and/or data patterns may benefit from
larger zspages. Currently the limit on the number of physical
pages that are linked into a zspage is hardcoded to 4. Higher
limit changes key characteristics of a number of the size
classes, improving compactness of the pool and redusing the
amount of memory zsmalloc pool uses. More on this in 0002
commit message.
v4:
-- Fixed type of the max_pages_per_zspage (kbuild reported a
"warning: right shift count >= width of type" warning)
-- Renamed max_pages_per_zspage variable
v3:
-- Removed lots of text from 0002 commit message. Now it's shorter
and simpler.
v2:
-- Cherry picked a patch from Alexey (minor code tweaks to move
it ahead of this series)
-- zsmalloc does not require anymore pages-per-zspage limit to be a
pow of 2 value, and overall doesn't use "order" any longer
-- zram does not require "zspage order" (pow of 2) value anymore
and instead accepts an integer in [1,16] range
-- There is no global huge_class_size in zsmalloc anymore.
huge_class_size is per-pool, since it depends on pager-per-zspage,
which can be different for different pools.
-- There is no global huge_class_size in zram anymore. It should
be per-pool (per-device).
-- Updated documentation
-- Fixed documentation htmldocs warning (Stephen)
-- Dropped get_pages_per_zspage() patch
-- Renamed zram sysfs knob (device attribute)
-- Re-worked "synthetic test" section in the first commit: more numbers,
objects distribution analysis, etc.
Alexey Romanov (1):
zram: add size class equals check into recompression
Sergey Senozhatsky (8):
zsmalloc: turn zspage order into runtime variable
zsmalloc: move away from page order defines
zsmalloc: make huge class watermark zs_pool member
zram: huge size watermark cannot be global
zsmalloc: pass limit on pages per-zspage to zs_create_pool()
zram: add pages_per_pool_page device attribute
Documentation: document zram pages_per_pool_page attribute
zsmalloc: break out of loop when found perfect zspage order
Documentation/admin-guide/blockdev/zram.rst | 38 +++++--
drivers/block/zram/zram_drv.c | 63 +++++++++--
drivers/block/zram/zram_drv.h | 7 ++
include/linux/zsmalloc.h | 14 ++-
mm/zsmalloc.c | 112 +++++++++++++-------
5 files changed, 176 insertions(+), 58 deletions(-)
--
2.38.1.273.g43a17bfeac-goog
Powered by blists - more mailing lists