* [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap
@ 2024-02-23 3:55 Kefeng Wang
2024-02-23 3:55 ` [PATCH 1/5] zram: zcomp: remove zcomp_set_max_streams() declaration Kefeng Wang
` (6 more replies)
0 siblings, 7 replies; 11+ messages in thread
From: Kefeng Wang @ 2024-02-23 3:55 UTC (permalink / raw)
To: Johannes Weiner, Yosry Ahmed, Nhat Pham, Andrew Morton
Cc: Chengming Zhou, Huacai Chen, Minchan Kim, Sergey Senozhatsky,
linux-mm, linux-block, Kefeng Wang
Both zram and zswap are used to reduce memory usage by compressing cold
page, a default compressor algorithm is selected from kinds of compressor
algorithm as the default one from very similar Kconfig, also both of
them could change the algorithm by sysfs interfaces, so unify the
default compressor algorithm to cleanup the default algorithm chosen.
Kefeng Wang (5):
zram: zcomp: remove zcomp_set_max_streams() declaration
zram: make zram depends on SWAP
zram: support deflate compressor
mm: zswap: default to lzo-rle instead of lzo
mm: unify default compressor algorithm for zswap and zram
Documentation/admin-guide/mm/zswap.rst | 2 +-
arch/loongarch/configs/loongson3_defconfig | 2 +-
drivers/block/zram/Kconfig | 44 +------
drivers/block/zram/zcomp.c | 3 +
drivers/block/zram/zcomp.h | 1 -
drivers/block/zram/zram_drv.c | 2 +-
mm/Kconfig | 134 +++++++++++----------
mm/zswap.c | 8 +-
8 files changed, 83 insertions(+), 113 deletions(-)
--
2.27.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/5] zram: zcomp: remove zcomp_set_max_streams() declaration
2024-02-23 3:55 [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap Kefeng Wang
@ 2024-02-23 3:55 ` Kefeng Wang
2024-02-23 3:55 ` [PATCH 2/5] zram: make zram depends on SWAP Kefeng Wang
` (5 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Kefeng Wang @ 2024-02-23 3:55 UTC (permalink / raw)
To: Johannes Weiner, Yosry Ahmed, Nhat Pham, Andrew Morton
Cc: Chengming Zhou, Huacai Chen, Minchan Kim, Sergey Senozhatsky,
linux-mm, linux-block, Kefeng Wang
The zcomp_set_max_streams() is removed from commit 43209ea2d17a
("zram: remove max_comp_streams internals"), remove the declaration.
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
drivers/block/zram/zcomp.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/block/zram/zcomp.h b/drivers/block/zram/zcomp.h
index cdefdef93da8..e9fe63da0e9b 100644
--- a/drivers/block/zram/zcomp.h
+++ b/drivers/block/zram/zcomp.h
@@ -39,5 +39,4 @@ int zcomp_compress(struct zcomp_strm *zstrm,
int zcomp_decompress(struct zcomp_strm *zstrm,
const void *src, unsigned int src_len, void *dst);
-bool zcomp_set_max_streams(struct zcomp *comp, int num_strm);
#endif /* _ZCOMP_H_ */
--
2.27.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/5] zram: make zram depends on SWAP
2024-02-23 3:55 [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap Kefeng Wang
2024-02-23 3:55 ` [PATCH 1/5] zram: zcomp: remove zcomp_set_max_streams() declaration Kefeng Wang
@ 2024-02-23 3:55 ` Kefeng Wang
2024-02-23 4:39 ` Sergey Senozhatsky
2024-02-23 3:55 ` [PATCH 3/5] zram: support deflate compressor Kefeng Wang
` (4 subsequent siblings)
6 siblings, 1 reply; 11+ messages in thread
From: Kefeng Wang @ 2024-02-23 3:55 UTC (permalink / raw)
To: Johannes Weiner, Yosry Ahmed, Nhat Pham, Andrew Morton
Cc: Chengming Zhou, Huacai Chen, Minchan Kim, Sergey Senozhatsky,
linux-mm, linux-block, Kefeng Wang
The zram is useless when SWAP is disabled, make zram depends on SWAP.
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
drivers/block/zram/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/block/zram/Kconfig b/drivers/block/zram/Kconfig
index 7b29cce60ab2..0cee425da0f5 100644
--- a/drivers/block/zram/Kconfig
+++ b/drivers/block/zram/Kconfig
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
config ZRAM
tristate "Compressed RAM block device support"
- depends on BLOCK && SYSFS && MMU
+ depends on SWAP && SYSFS
depends on CRYPTO_LZO || CRYPTO_ZSTD || CRYPTO_LZ4 || CRYPTO_LZ4HC || CRYPTO_842
select ZSMALLOC
help
--
2.27.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 3/5] zram: support deflate compressor
2024-02-23 3:55 [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap Kefeng Wang
2024-02-23 3:55 ` [PATCH 1/5] zram: zcomp: remove zcomp_set_max_streams() declaration Kefeng Wang
2024-02-23 3:55 ` [PATCH 2/5] zram: make zram depends on SWAP Kefeng Wang
@ 2024-02-23 3:55 ` Kefeng Wang
2024-02-23 3:55 ` [PATCH 4/5] mm: zswap: default to lzo-rle instead of lzo Kefeng Wang
` (3 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Kefeng Wang @ 2024-02-23 3:55 UTC (permalink / raw)
To: Johannes Weiner, Yosry Ahmed, Nhat Pham, Andrew Morton
Cc: Chengming Zhou, Huacai Chen, Minchan Kim, Sergey Senozhatsky,
linux-mm, linux-block, Kefeng Wang
Add deflate compressor support, also it is prepare for unifying the
default compressor compressor for zram and zswap.
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
drivers/block/zram/Kconfig | 7 ++++++-
drivers/block/zram/zcomp.c | 3 +++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/block/zram/Kconfig b/drivers/block/zram/Kconfig
index 0cee425da0f5..b007dda16430 100644
--- a/drivers/block/zram/Kconfig
+++ b/drivers/block/zram/Kconfig
@@ -2,7 +2,7 @@
config ZRAM
tristate "Compressed RAM block device support"
depends on SWAP && SYSFS
- depends on CRYPTO_LZO || CRYPTO_ZSTD || CRYPTO_LZ4 || CRYPTO_LZ4HC || CRYPTO_842
+ depends on CRYPTO_LZO || CRYPTO_ZSTD || CRYPTO_LZ4 || CRYPTO_LZ4HC || CRYPTO_842 || CRYPTO_DEFLATE
select ZSMALLOC
help
Creates virtual block devices called /dev/zramX (X = 0, 1, ...).
@@ -20,6 +20,10 @@ choice
default ZRAM_DEF_COMP_LZORLE
depends on ZRAM
+config ZRAM_DEF_COMP_DEFLATE
+ bool "Deflate"
+ depends on CRYPTO_DEFLATE
+
config ZRAM_DEF_COMP_LZORLE
bool "lzo-rle"
depends on CRYPTO_LZO
@@ -48,6 +52,7 @@ endchoice
config ZRAM_DEF_COMP
string
+ default "deflate" if ZRAM_DEF_COMP_DEFLATE
default "lzo-rle" if ZRAM_DEF_COMP_LZORLE
default "zstd" if ZRAM_DEF_COMP_ZSTD
default "lz4" if ZRAM_DEF_COMP_LZ4
diff --git a/drivers/block/zram/zcomp.c b/drivers/block/zram/zcomp.c
index 8237b08c49d8..1f9a431f771e 100644
--- a/drivers/block/zram/zcomp.c
+++ b/drivers/block/zram/zcomp.c
@@ -16,6 +16,9 @@
#include "zcomp.h"
static const char * const backends[] = {
+#if IS_ENABLED(CONFIG_CRYPTO_DEFLATE)
+ "deflate",
+#endif
#if IS_ENABLED(CONFIG_CRYPTO_LZO)
"lzo",
"lzo-rle",
--
2.27.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 4/5] mm: zswap: default to lzo-rle instead of lzo
2024-02-23 3:55 [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap Kefeng Wang
` (2 preceding siblings ...)
2024-02-23 3:55 ` [PATCH 3/5] zram: support deflate compressor Kefeng Wang
@ 2024-02-23 3:55 ` Kefeng Wang
2024-02-23 3:55 ` [PATCH 5/5] mm: unify default compressor algorithm for zswap and zram Kefeng Wang
` (2 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Kefeng Wang @ 2024-02-23 3:55 UTC (permalink / raw)
To: Johannes Weiner, Yosry Ahmed, Nhat Pham, Andrew Morton
Cc: Chengming Zhou, Huacai Chen, Minchan Kim, Sergey Senozhatsky,
linux-mm, linux-block, Kefeng Wang
Since lzo-rle performance is better than lzo, see commit ce82f19fd580
("zram: default to lzo-rle instead of lzo"), converting zswap to use
lze-rle too.
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
mm/Kconfig | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/mm/Kconfig b/mm/Kconfig
index b1448aa81e15..f41a28b74efd 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -62,7 +62,7 @@ config ZSWAP_SHRINKER_DEFAULT_ON
choice
prompt "Default compressor"
depends on ZSWAP
- default ZSWAP_COMPRESSOR_DEFAULT_LZO
+ default ZSWAP_COMPRESSOR_DEFAULT_LZORLE
help
Selects the default compression algorithm for the compressed cache
for swap pages.
@@ -72,7 +72,7 @@ choice
available at the following LWN page:
https://lwn.net/Articles/751795/
- If in doubt, select 'LZO'.
+ If in doubt, select 'LZO-RLE'.
The selection made here can be overridden by using the kernel
command line 'zswap.compressor=' option.
@@ -83,6 +83,12 @@ config ZSWAP_COMPRESSOR_DEFAULT_DEFLATE
help
Use the Deflate algorithm as the default compression algorithm.
+config ZSWAP_COMPRESSOR_DEFAULT_LZORLE
+ bool "LZO-RLE"
+ select CRYPTO_LZO
+ help
+ Use the LZO algorithm as the default compression algorithm.
+
config ZSWAP_COMPRESSOR_DEFAULT_LZO
bool "LZO"
select CRYPTO_LZO
@@ -118,6 +124,7 @@ config ZSWAP_COMPRESSOR_DEFAULT
string
depends on ZSWAP
default "deflate" if ZSWAP_COMPRESSOR_DEFAULT_DEFLATE
+ default "lzo-rle" if ZSWAP_COMPRESSOR_DEFAULT_LZORLE
default "lzo" if ZSWAP_COMPRESSOR_DEFAULT_LZO
default "842" if ZSWAP_COMPRESSOR_DEFAULT_842
default "lz4" if ZSWAP_COMPRESSOR_DEFAULT_LZ4
--
2.27.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 5/5] mm: unify default compressor algorithm for zswap and zram
2024-02-23 3:55 [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap Kefeng Wang
` (3 preceding siblings ...)
2024-02-23 3:55 ` [PATCH 4/5] mm: zswap: default to lzo-rle instead of lzo Kefeng Wang
@ 2024-02-23 3:55 ` Kefeng Wang
2024-02-23 4:46 ` [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap Yosry Ahmed
2024-02-23 4:51 ` Sergey Senozhatsky
6 siblings, 0 replies; 11+ messages in thread
From: Kefeng Wang @ 2024-02-23 3:55 UTC (permalink / raw)
To: Johannes Weiner, Yosry Ahmed, Nhat Pham, Andrew Morton
Cc: Chengming Zhou, Huacai Chen, Minchan Kim, Sergey Senozhatsky,
linux-mm, linux-block, Kefeng Wang
Both zswap and zram could change compressor algorithm dynamically, it
can be overridden at boot time by 'zswap.compressor=' for zswap, also
there is a sysfs interface to change it, see
/sys/block/zramX/comp_algorithm
/sys/module/zswap/parameters/compressor
So there is no need to maintain independence default compressor algorithm,
unify the Kconfig to use lzo-rle as the default page compressor algorithm.
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
Documentation/admin-guide/mm/zswap.rst | 2 +-
arch/loongarch/configs/loongson3_defconfig | 2 +-
drivers/block/zram/Kconfig | 47 +-------
drivers/block/zram/zram_drv.c | 2 +-
mm/Kconfig | 131 +++++++++++----------
mm/zswap.c | 8 +-
6 files changed, 74 insertions(+), 118 deletions(-)
diff --git a/Documentation/admin-guide/mm/zswap.rst b/Documentation/admin-guide/mm/zswap.rst
index b42132969e31..375366b9a642 100644
--- a/Documentation/admin-guide/mm/zswap.rst
+++ b/Documentation/admin-guide/mm/zswap.rst
@@ -90,7 +90,7 @@ controlled policy:
* max_pool_percent - The maximum percentage of memory that the compressed
pool can occupy.
-The default compressor is selected in ``CONFIG_ZSWAP_COMPRESSOR_DEFAULT``
+The default compressor is selected in ``CONFIG_COMPRESSOR_DEFAULT``
Kconfig option, but it can be overridden at boot time by setting the
``compressor`` attribute, e.g. ``zswap.compressor=lzo``.
It can also be changed at runtime using the sysfs "compressor"
diff --git a/arch/loongarch/configs/loongson3_defconfig b/arch/loongarch/configs/loongson3_defconfig
index f18c2ba871ef..dc718089a530 100644
--- a/arch/loongarch/configs/loongson3_defconfig
+++ b/arch/loongarch/configs/loongson3_defconfig
@@ -91,7 +91,7 @@ CONFIG_BFQ_GROUP_IOSCHED=y
CONFIG_BINFMT_MISC=m
CONFIG_ZPOOL=y
CONFIG_ZSWAP=y
-CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD=y
+CONFIG_COMPRESSOR_DEFAULT_ZSTD=y
CONFIG_ZBUD=y
CONFIG_Z3FOLD=y
CONFIG_ZSMALLOC=m
diff --git a/drivers/block/zram/Kconfig b/drivers/block/zram/Kconfig
index b007dda16430..26558159824e 100644
--- a/drivers/block/zram/Kconfig
+++ b/drivers/block/zram/Kconfig
@@ -2,7 +2,7 @@
config ZRAM
tristate "Compressed RAM block device support"
depends on SWAP && SYSFS
- depends on CRYPTO_LZO || CRYPTO_ZSTD || CRYPTO_LZ4 || CRYPTO_LZ4HC || CRYPTO_842 || CRYPTO_DEFLATE
+ select CRYPTO
select ZSMALLOC
help
Creates virtual block devices called /dev/zramX (X = 0, 1, ...).
@@ -15,51 +15,6 @@ config ZRAM
See Documentation/admin-guide/blockdev/zram.rst for more information.
-choice
- prompt "Default zram compressor"
- default ZRAM_DEF_COMP_LZORLE
- depends on ZRAM
-
-config ZRAM_DEF_COMP_DEFLATE
- bool "Deflate"
- depends on CRYPTO_DEFLATE
-
-config ZRAM_DEF_COMP_LZORLE
- bool "lzo-rle"
- depends on CRYPTO_LZO
-
-config ZRAM_DEF_COMP_ZSTD
- bool "zstd"
- depends on CRYPTO_ZSTD
-
-config ZRAM_DEF_COMP_LZ4
- bool "lz4"
- depends on CRYPTO_LZ4
-
-config ZRAM_DEF_COMP_LZO
- bool "lzo"
- depends on CRYPTO_LZO
-
-config ZRAM_DEF_COMP_LZ4HC
- bool "lz4hc"
- depends on CRYPTO_LZ4HC
-
-config ZRAM_DEF_COMP_842
- bool "842"
- depends on CRYPTO_842
-
-endchoice
-
-config ZRAM_DEF_COMP
- string
- default "deflate" if ZRAM_DEF_COMP_DEFLATE
- default "lzo-rle" if ZRAM_DEF_COMP_LZORLE
- default "zstd" if ZRAM_DEF_COMP_ZSTD
- default "lz4" if ZRAM_DEF_COMP_LZ4
- default "lzo" if ZRAM_DEF_COMP_LZO
- default "lz4hc" if ZRAM_DEF_COMP_LZ4HC
- default "842" if ZRAM_DEF_COMP_842
-
config ZRAM_WRITEBACK
bool "Write back incompressible or idle page to backing device"
depends on ZRAM
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index f0639df6cd18..664c4012ced4 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -41,7 +41,7 @@ static DEFINE_IDR(zram_index_idr);
static DEFINE_MUTEX(zram_index_mutex);
static int zram_major;
-static const char *default_compressor = CONFIG_ZRAM_DEF_COMP;
+static const char *default_compressor = CONFIG_COMPRESSOR_DEFAULT;
/* Module params (documentation at end) */
static unsigned int num_devices = 1;
diff --git a/mm/Kconfig b/mm/Kconfig
index f41a28b74efd..9da2671e0b20 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -9,9 +9,6 @@ menu "Memory Management options"
config ARCH_NO_SWAP
bool
-config ZPOOL
- bool
-
menuconfig SWAP
bool "Support for paging of anonymous memory (swap)"
depends on MMU && BLOCK && !ARCH_NO_SWAP
@@ -22,116 +19,118 @@ menuconfig SWAP
used to provide more virtual memory than the actual RAM present
in your computer. If unsure say Y.
-config ZSWAP
- bool "Compressed cache for swap pages"
- depends on SWAP
- select CRYPTO
- select ZPOOL
- help
- A lightweight compressed cache for swap pages. It takes
- pages that are in the process of being swapped out and attempts to
- compress them into a dynamically allocated RAM-based memory pool.
- This can result in a significant I/O reduction on swap device and,
- in the case where decompressing from RAM is faster than swap device
- reads, can also improve workload performance.
-
-config ZSWAP_DEFAULT_ON
- bool "Enable the compressed cache for swap pages by default"
- depends on ZSWAP
- help
- If selected, the compressed cache for swap pages will be enabled
- at boot, otherwise it will be disabled.
-
- The selection made here can be overridden by using the kernel
- command line 'zswap.enabled=' option.
-
-config ZSWAP_SHRINKER_DEFAULT_ON
- bool "Shrink the zswap pool on memory pressure"
- depends on ZSWAP
- default n
- help
- If selected, the zswap shrinker will be enabled, and the pages
- stored in the zswap pool will become available for reclaim (i.e
- written back to the backing swap device) on memory pressure.
-
- This means that zswap writeback could happen even if the pool is
- not yet full, or the cgroup zswap limit has not been reached,
- reducing the chance that cold pages will reside in the zswap pool
- and consume memory indefinitely.
+if SWAP
choice
- prompt "Default compressor"
- depends on ZSWAP
- default ZSWAP_COMPRESSOR_DEFAULT_LZORLE
+ prompt "Default page compressor algorithm"
+ depends on ZSWAP || ZRAM
+ default COMPRESSOR_DEFAULT_LZORLE
help
- Selects the default compression algorithm for the compressed cache
- for swap pages.
+ Selects the default compression algorithm for compressing pages.
For an overview what kind of performance can be expected from
a particular compression algorithm please refer to the benchmarks
available at the following LWN page:
https://lwn.net/Articles/751795/
- If in doubt, select 'LZO-RLE'.
+ If in doubt, select 'LZO-rle'.
- The selection made here can be overridden by using the kernel
- command line 'zswap.compressor=' option.
-
-config ZSWAP_COMPRESSOR_DEFAULT_DEFLATE
+config COMPRESSOR_DEFAULT_DEFLATE
bool "Deflate"
select CRYPTO_DEFLATE
help
Use the Deflate algorithm as the default compression algorithm.
-config ZSWAP_COMPRESSOR_DEFAULT_LZORLE
+config COMPRESSOR_DEFAULT_LZORLE
bool "LZO-RLE"
select CRYPTO_LZO
help
Use the LZO algorithm as the default compression algorithm.
-config ZSWAP_COMPRESSOR_DEFAULT_LZO
+config COMPRESSOR_DEFAULT_LZO
bool "LZO"
select CRYPTO_LZO
help
Use the LZO algorithm as the default compression algorithm.
-config ZSWAP_COMPRESSOR_DEFAULT_842
+config COMPRESSOR_DEFAULT_842
bool "842"
select CRYPTO_842
help
Use the 842 algorithm as the default compression algorithm.
-config ZSWAP_COMPRESSOR_DEFAULT_LZ4
+config COMPRESSOR_DEFAULT_LZ4
bool "LZ4"
select CRYPTO_LZ4
help
Use the LZ4 algorithm as the default compression algorithm.
-config ZSWAP_COMPRESSOR_DEFAULT_LZ4HC
+config COMPRESSOR_DEFAULT_LZ4HC
bool "LZ4HC"
select CRYPTO_LZ4HC
help
Use the LZ4HC algorithm as the default compression algorithm.
-config ZSWAP_COMPRESSOR_DEFAULT_ZSTD
- bool "zstd"
+config COMPRESSOR_DEFAULT_ZSTD
+ bool "ZSTD"
select CRYPTO_ZSTD
help
Use the zstd algorithm as the default compression algorithm.
+
endchoice
-config ZSWAP_COMPRESSOR_DEFAULT
+config COMPRESSOR_DEFAULT
string
- depends on ZSWAP
- default "deflate" if ZSWAP_COMPRESSOR_DEFAULT_DEFLATE
- default "lzo-rle" if ZSWAP_COMPRESSOR_DEFAULT_LZORLE
- default "lzo" if ZSWAP_COMPRESSOR_DEFAULT_LZO
- default "842" if ZSWAP_COMPRESSOR_DEFAULT_842
- default "lz4" if ZSWAP_COMPRESSOR_DEFAULT_LZ4
- default "lz4hc" if ZSWAP_COMPRESSOR_DEFAULT_LZ4HC
- default "zstd" if ZSWAP_COMPRESSOR_DEFAULT_ZSTD
+ depends on ZSWAP || ZRAM
+ default "deflate" if COMPRESSOR_DEFAULT_DEFLATE
+ default "lzo-rle" if COMPRESSOR_DEFAULT_LZORLE
+ default "lzo" if COMPRESSOR_DEFAULT_LZO
+ default "842" if COMPRESSOR_DEFAULT_842
+ default "lz4" if COMPRESSOR_DEFAULT_LZ4
+ default "lz4hc" if COMPRESSOR_DEFAULT_LZ4HC
+ default "zstd" if COMPRESSOR_DEFAULT_ZSTD
default ""
+config ZPOOL
+ bool
+
+config ZSWAP
+ bool "Compressed cache for swap pages"
+ depends on SWAP
+ select CRYPTO
+ select ZPOOL
+ help
+ A lightweight compressed cache for swap pages. It takes
+ pages that are in the process of being swapped out and attempts to
+ compress them into a dynamically allocated RAM-based memory pool.
+ This can result in a significant I/O reduction on swap device and,
+ in the case where decompressing from RAM is faster than swap device
+ reads, can also improve workload performance.
+
+config ZSWAP_DEFAULT_ON
+ bool "Enable the compressed cache for swap pages by default"
+ depends on ZSWAP
+ help
+ If selected, the compressed cache for swap pages will be enabled
+ at boot, otherwise it will be disabled.
+
+ The selection made here can be overridden by using the kernel
+ command line 'zswap.enabled=' option.
+
+config ZSWAP_SHRINKER_DEFAULT_ON
+ bool "Shrink the zswap pool on memory pressure"
+ depends on ZSWAP
+ default n
+ help
+ If selected, the zswap shrinker will be enabled, and the pages
+ stored in the zswap pool will become available for reclaim (i.e
+ written back to the backing swap device) on memory pressure.
+
+ This means that zswap writeback could happen even if the pool is
+ not yet full, or the cgroup zswap limit has not been reached,
+ reducing the chance that cold pages will reside in the zswap pool
+ and consume memory indefinitely.
+
choice
prompt "Default allocator"
depends on ZSWAP
@@ -231,6 +230,8 @@ config ZSMALLOC_CHAIN_SIZE
For more information, see zsmalloc documentation.
+endif #SWAP
+
menu "Slab allocator options"
config SLUB
diff --git a/mm/zswap.c b/mm/zswap.c
index 011e068eb355..907ae7797d98 100644
--- a/mm/zswap.c
+++ b/mm/zswap.c
@@ -96,7 +96,7 @@ static const struct kernel_param_ops zswap_enabled_param_ops = {
module_param_cb(enabled, &zswap_enabled_param_ops, &zswap_enabled, 0644);
/* Crypto compressor to use */
-static char *zswap_compressor = CONFIG_ZSWAP_COMPRESSOR_DEFAULT;
+static char *zswap_compressor = CONFIG_COMPRESSOR_DEFAULT;
static int zswap_compressor_param_set(const char *,
const struct kernel_param *);
static const struct kernel_param_ops zswap_compressor_param_ops = {
@@ -386,11 +386,11 @@ static struct zswap_pool *__zswap_pool_create_fallback(void)
has_comp = crypto_has_acomp(zswap_compressor, 0, 0);
if (!has_comp && strcmp(zswap_compressor,
- CONFIG_ZSWAP_COMPRESSOR_DEFAULT)) {
+ CONFIG_COMPRESSOR_DEFAULT)) {
pr_err("compressor %s not available, using default %s\n",
- zswap_compressor, CONFIG_ZSWAP_COMPRESSOR_DEFAULT);
+ zswap_compressor, CONFIG_COMPRESSOR_DEFAULT);
param_free_charp(&zswap_compressor);
- zswap_compressor = CONFIG_ZSWAP_COMPRESSOR_DEFAULT;
+ zswap_compressor = CONFIG_COMPRESSOR_DEFAULT;
has_comp = crypto_has_acomp(zswap_compressor, 0, 0);
}
if (!has_comp) {
--
2.27.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/5] zram: make zram depends on SWAP
2024-02-23 3:55 ` [PATCH 2/5] zram: make zram depends on SWAP Kefeng Wang
@ 2024-02-23 4:39 ` Sergey Senozhatsky
0 siblings, 0 replies; 11+ messages in thread
From: Sergey Senozhatsky @ 2024-02-23 4:39 UTC (permalink / raw)
To: Kefeng Wang
Cc: Johannes Weiner, Yosry Ahmed, Nhat Pham, Andrew Morton,
Chengming Zhou, Huacai Chen, Minchan Kim, Sergey Senozhatsky,
linux-mm, linux-block
On (24/02/23 11:55), Kefeng Wang wrote:
>
> The zram is useless when SWAP is disabled, make zram depends on SWAP.
>
I'm sorry, this doesn't make a lot of sense to me. zram is a generic
block device.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap
2024-02-23 3:55 [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap Kefeng Wang
` (4 preceding siblings ...)
2024-02-23 3:55 ` [PATCH 5/5] mm: unify default compressor algorithm for zswap and zram Kefeng Wang
@ 2024-02-23 4:46 ` Yosry Ahmed
2024-02-23 6:43 ` Kefeng Wang
2024-02-23 4:51 ` Sergey Senozhatsky
6 siblings, 1 reply; 11+ messages in thread
From: Yosry Ahmed @ 2024-02-23 4:46 UTC (permalink / raw)
To: Kefeng Wang
Cc: Johannes Weiner, Nhat Pham, Andrew Morton, Chengming Zhou,
Huacai Chen, Minchan Kim, Sergey Senozhatsky, linux-mm,
linux-block
On Thu, Feb 22, 2024 at 7:56 PM Kefeng Wang <wangkefeng.wang@huawei.com> wrote:
>
> Both zram and zswap are used to reduce memory usage by compressing cold
> page, a default compressor algorithm is selected from kinds of compressor
> algorithm as the default one from very similar Kconfig, also both of
> them could change the algorithm by sysfs interfaces, so unify the
> default compressor algorithm to cleanup the default algorithm chosen.
Both zswap and zram *can* be used for compressed swap, but zram is a
generic block device that has other use cases, see
https://docs.kernel.org/admin-guide/blockdev/zram.html.
For starters, making zram depend on SWAP may break some of those use cases.
Otherwise, I don't immediately see the benefit of unifying the config
options for two independent subsystems just because they both use
"compression". The reduction of the config options is nice, but in
this case I am not sure it's doing more good than harm. Also, most
people use either zswap or zram in my experience, so they don't really
have to configure both anyway.
>
> Kefeng Wang (5):
> zram: zcomp: remove zcomp_set_max_streams() declaration
> zram: make zram depends on SWAP
> zram: support deflate compressor
> mm: zswap: default to lzo-rle instead of lzo
> mm: unify default compressor algorithm for zswap and zram
>
> Documentation/admin-guide/mm/zswap.rst | 2 +-
> arch/loongarch/configs/loongson3_defconfig | 2 +-
> drivers/block/zram/Kconfig | 44 +------
> drivers/block/zram/zcomp.c | 3 +
> drivers/block/zram/zcomp.h | 1 -
> drivers/block/zram/zram_drv.c | 2 +-
> mm/Kconfig | 134 +++++++++++----------
> mm/zswap.c | 8 +-
> 8 files changed, 83 insertions(+), 113 deletions(-)
>
> --
> 2.27.0
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap
2024-02-23 3:55 [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap Kefeng Wang
` (5 preceding siblings ...)
2024-02-23 4:46 ` [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap Yosry Ahmed
@ 2024-02-23 4:51 ` Sergey Senozhatsky
2024-02-23 6:45 ` Kefeng Wang
6 siblings, 1 reply; 11+ messages in thread
From: Sergey Senozhatsky @ 2024-02-23 4:51 UTC (permalink / raw)
To: Kefeng Wang
Cc: Johannes Weiner, Yosry Ahmed, Nhat Pham, Andrew Morton,
Chengming Zhou, Huacai Chen, Minchan Kim, Sergey Senozhatsky,
linux-mm, linux-block
On (24/02/23 11:55), Kefeng Wang wrote:
>
> Both zram and zswap are used to reduce memory usage by compressing cold
> page, a default compressor algorithm is selected from kinds of compressor
> algorithm as the default one from very similar Kconfig, also both of
> them could change the algorithm by sysfs interfaces, so unify the
> default compressor algorithm to cleanup the default algorithm chosen.
>
> Kefeng Wang (5):
> zram: zcomp: remove zcomp_set_max_streams() declaration
I'm afraid this (1/5) is the only patch in the series that we can land.
The rest of the series doesn't look beneficial nor correct. Sorry.
> zram: make zram depends on SWAP
> zram: support deflate compressor
> mm: zswap: default to lzo-rle instead of lzo
> mm: unify default compressor algorithm for zswap and zram
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap
2024-02-23 4:46 ` [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap Yosry Ahmed
@ 2024-02-23 6:43 ` Kefeng Wang
0 siblings, 0 replies; 11+ messages in thread
From: Kefeng Wang @ 2024-02-23 6:43 UTC (permalink / raw)
To: Yosry Ahmed
Cc: Johannes Weiner, Nhat Pham, Andrew Morton, Chengming Zhou,
Huacai Chen, Minchan Kim, Sergey Senozhatsky, linux-mm,
linux-block
On 2024/2/23 12:46, Yosry Ahmed wrote:
> On Thu, Feb 22, 2024 at 7:56 PM Kefeng Wang <wangkefeng.wang@huawei.com> wrote:
>>
>> Both zram and zswap are used to reduce memory usage by compressing cold
>> page, a default compressor algorithm is selected from kinds of compressor
>> algorithm as the default one from very similar Kconfig, also both of
>> them could change the algorithm by sysfs interfaces, so unify the
>> default compressor algorithm to cleanup the default algorithm chosen.
>
> Both zswap and zram *can* be used for compressed swap, but zram is a
> generic block device that has other use cases, see
> https://docs.kernel.org/admin-guide/blockdev/zram.html.
>
> For starters, making zram depend on SWAP may break some of those use cases.
>
> Otherwise, I don't immediately see the benefit of unifying the config
> options for two independent subsystems just because they both use
> "compression". The reduction of the config options is nice, but in
> this case I am not sure it's doing more good than harm. Also, most
> people use either zswap or zram in my experience, so they don't really
> have to configure both anyway.
Fair enough, then, please ignore the patches, thanks.
>
>>
>> Kefeng Wang (5):
>> zram: zcomp: remove zcomp_set_max_streams() declaration
>> zram: make zram depends on SWAP
>> zram: support deflate compressor
>> mm: zswap: default to lzo-rle instead of lzo
>> mm: unify default compressor algorithm for zswap and zram
>>
>> Documentation/admin-guide/mm/zswap.rst | 2 +-
>> arch/loongarch/configs/loongson3_defconfig | 2 +-
>> drivers/block/zram/Kconfig | 44 +------
>> drivers/block/zram/zcomp.c | 3 +
>> drivers/block/zram/zcomp.h | 1 -
>> drivers/block/zram/zram_drv.c | 2 +-
>> mm/Kconfig | 134 +++++++++++----------
>> mm/zswap.c | 8 +-
>> 8 files changed, 83 insertions(+), 113 deletions(-)
>>
>> --
>> 2.27.0
>>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap
2024-02-23 4:51 ` Sergey Senozhatsky
@ 2024-02-23 6:45 ` Kefeng Wang
0 siblings, 0 replies; 11+ messages in thread
From: Kefeng Wang @ 2024-02-23 6:45 UTC (permalink / raw)
To: Sergey Senozhatsky
Cc: Johannes Weiner, Yosry Ahmed, Nhat Pham, Andrew Morton,
Chengming Zhou, Huacai Chen, Minchan Kim, linux-mm, linux-block
On 2024/2/23 12:51, Sergey Senozhatsky wrote:
> On (24/02/23 11:55), Kefeng Wang wrote:
>>
>> Both zram and zswap are used to reduce memory usage by compressing cold
>> page, a default compressor algorithm is selected from kinds of compressor
>> algorithm as the default one from very similar Kconfig, also both of
>> them could change the algorithm by sysfs interfaces, so unify the
>> default compressor algorithm to cleanup the default algorithm chosen.
>>
>> Kefeng Wang (5):
>> zram: zcomp: remove zcomp_set_max_streams() declaration
>
> I'm afraid this (1/5) is the only patch in the series that we can land.
>
> The rest of the series doesn't look beneficial nor correct. Sorry.
OK, please ignore the reset of patches, Andrew, could you only pick the
first one, thanks.
>
>> zram: make zram depends on SWAP
>> zram: support deflate compressor
>> mm: zswap: default to lzo-rle instead of lzo
>> mm: unify default compressor algorithm for zswap and zram
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2024-02-23 6:45 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-23 3:55 [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap Kefeng Wang
2024-02-23 3:55 ` [PATCH 1/5] zram: zcomp: remove zcomp_set_max_streams() declaration Kefeng Wang
2024-02-23 3:55 ` [PATCH 2/5] zram: make zram depends on SWAP Kefeng Wang
2024-02-23 4:39 ` Sergey Senozhatsky
2024-02-23 3:55 ` [PATCH 3/5] zram: support deflate compressor Kefeng Wang
2024-02-23 3:55 ` [PATCH 4/5] mm: zswap: default to lzo-rle instead of lzo Kefeng Wang
2024-02-23 3:55 ` [PATCH 5/5] mm: unify default compressor algorithm for zswap and zram Kefeng Wang
2024-02-23 4:46 ` [PATCH 0/5] mm: unify default compressor algorithm for zram/zswap Yosry Ahmed
2024-02-23 6:43 ` Kefeng Wang
2024-02-23 4:51 ` Sergey Senozhatsky
2024-02-23 6:45 ` Kefeng Wang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox