mm: Kconfig: simplify zswap configuration

- CONFIG_ZRAM: Zram is a user-facing feature, whereas zsmalloc is
  not. Don't make the user chase down a technical dependency like
  that, just select it in automatically when zram is requested. The
  CONFIG_CRYPTO dependency is redundant due to more specific deps.

- CONFIG_ZPOOL: This is not a user-facing feature. Hide the symbol and
  have it selected in as needed.

- CONFIG_ZSWAP: Select CRYPTO instead of depend. Common pattern.

- Make the ZSWAP suboptions and their descriptions (compression,
  allocation backend) a bit more straight-forward for the user.

Link: https://lkml.kernel.org/r/20220510152847.230957-5-hannes@cmpxchg.org
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: Dan Streetman <ddstreet@ieee.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Roman Gushchin <guro@fb.com>
Cc: Seth Jennings <sjenning@redhat.com>
Cc: Shakeel Butt <shakeelb@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Johannes Weiner 2022-05-19 14:08:53 -07:00 committed by akpm
parent 519bcb7979
commit b3fbd58fcb
2 changed files with 27 additions and 31 deletions

View File

@ -1,8 +1,9 @@
# SPDX-License-Identifier: GPL-2.0
config ZRAM
tristate "Compressed RAM block device support"
depends on BLOCK && SYSFS && ZSMALLOC && CRYPTO
depends on BLOCK && SYSFS
depends on CRYPTO_LZO || CRYPTO_ZSTD || CRYPTO_LZ4 || CRYPTO_LZ4HC || CRYPTO_842
select ZSMALLOC
help
Creates virtual block devices called /dev/zramX (X = 0, 1, ...).
Pages written to these disks are compressed and stored in memory

View File

@ -9,6 +9,9 @@ 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
@ -21,8 +24,9 @@ menuconfig SWAP
config ZSWAP
bool "Compressed cache for swap pages (EXPERIMENTAL)"
depends on SWAP && CRYPTO=y
depends on SWAP
select FRONTSWAP
select CRYPTO
select ZPOOL
help
A lightweight compressed cache for swap pages. It takes
@ -38,8 +42,18 @@ config ZSWAP
they have not be fully explored on the large set of potential
configurations and workloads that exist.
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.
choice
prompt "Compressed cache for swap pages default compressor"
prompt "Default compressor"
depends on ZSWAP
default ZSWAP_COMPRESSOR_DEFAULT_LZO
help
@ -105,7 +119,7 @@ config ZSWAP_COMPRESSOR_DEFAULT
default ""
choice
prompt "Compressed cache for swap pages default allocator"
prompt "Default allocator"
depends on ZSWAP
default ZSWAP_ZPOOL_DEFAULT_ZBUD
help
@ -145,26 +159,9 @@ config ZSWAP_ZPOOL_DEFAULT
default "zsmalloc" if ZSWAP_ZPOOL_DEFAULT_ZSMALLOC
default ""
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 ZPOOL
tristate "Common API for compressed memory storage"
depends on ZSWAP
help
Compressed memory storage API. This allows using either zbud or
zsmalloc.
config ZBUD
tristate "Low (Up to 2x) density storage for compressed pages"
depends on ZPOOL
tristate "2:1 compression allocator (zbud)"
depends on ZSWAP
help
A special purpose allocator for storing compressed pages.
It is designed to store up to two compressed pages per physical
@ -173,8 +170,8 @@ config ZBUD
density approach when reclaim will be used.
config Z3FOLD
tristate "Up to 3x density storage for compressed pages"
depends on ZPOOL
tristate "3:1 compression allocator (z3fold)"
depends on ZSWAP
help
A special purpose allocator for storing compressed pages.
It is designed to store up to three compressed pages per physical
@ -182,15 +179,13 @@ config Z3FOLD
still there.
config ZSMALLOC
tristate "Memory allocator for compressed pages"
tristate
prompt "N:1 compression allocator (zsmalloc)" if ZSWAP
depends on MMU
help
zsmalloc is a slab-based memory allocator designed to store
compressed RAM pages. zsmalloc uses virtual memory mapping
in order to reduce fragmentation. However, this results in a
non-standard allocator interface where a handle, not a pointer, is
returned by an alloc(). This handle must be mapped in order to
access the allocated space.
pages of various compression levels efficiently. It achieves
the highest storage density with the least amount of fragmentation.
config ZSMALLOC_STAT
bool "Export zsmalloc statistics"