mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-18 16:44:27 +08:00
84b33bf788
Allow zram to recompress (using secondary compression streams) pages. Re-compression algorithms (we support up to 3 at this stage) are selected via recomp_algorithm: echo "algo=zstd priority=1" > /sys/block/zramX/recomp_algorithm Please read documentation for more details. We support several recompression modes: 1) IDLE pages recompression is activated by `idle` mode echo "type=idle" > /sys/block/zram0/recompress 2) Since there may be many idle pages user-space may pass a size threshold value (in bytes) and we will recompress pages only of equal or greater size: echo "threshold=888" > /sys/block/zram0/recompress 3) HUGE pages recompression is activated by `huge` mode echo "type=huge" > /sys/block/zram0/recompress 4) HUGE_IDLE pages recompression is activated by `huge_idle` mode echo "type=huge_idle" > /sys/block/zram0/recompress [senozhatsky@chromium.org: we should always zero out err variable in recompress loop[ Link: https://lkml.kernel.org/r/20221110143423.3250790-1-senozhatsky@chromium.org Link: https://lkml.kernel.org/r/20221109115047.2921851-5-senozhatsky@chromium.org Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org> Acked-by: Minchan Kim <minchan@kernel.org> Cc: Nathan Chancellor <nathan@kernel.org> Cc: Alexey Romanov <avromanov@sberdevices.ru> Cc: Nhat Pham <nphamcs@gmail.com> Cc: Nitin Gupta <ngupta@vflare.org> Cc: Suleiman Souhlal <suleiman@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
90 lines
2.5 KiB
Plaintext
90 lines
2.5 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
config ZRAM
|
|
tristate "Compressed RAM block device support"
|
|
depends on BLOCK && SYSFS && MMU
|
|
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
|
|
itself. These disks allow very fast I/O and compression provides
|
|
good amounts of memory savings.
|
|
|
|
It has several use cases, for example: /tmp storage, use as swap
|
|
disks and maybe many more.
|
|
|
|
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_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 "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
|
|
help
|
|
With incompressible page, there is no memory saving to keep it
|
|
in memory. Instead, write it out to backing device.
|
|
For this feature, admin should set up backing device via
|
|
/sys/block/zramX/backing_dev.
|
|
|
|
With /sys/block/zramX/{idle,writeback}, application could ask
|
|
idle page's writeback to the backing device to save in memory.
|
|
|
|
See Documentation/admin-guide/blockdev/zram.rst for more information.
|
|
|
|
config ZRAM_MEMORY_TRACKING
|
|
bool "Track zRam block status"
|
|
depends on ZRAM && DEBUG_FS
|
|
help
|
|
With this feature, admin can track the state of allocated blocks
|
|
of zRAM. Admin could see the information via
|
|
/sys/kernel/debug/zram/zramX/block_state.
|
|
|
|
See Documentation/admin-guide/blockdev/zram.rst for more information.
|
|
|
|
config ZRAM_MULTI_COMP
|
|
bool "Enable multiple compression streams"
|
|
depends on ZRAM
|
|
help
|
|
This will enable multi-compression streams, so that ZRAM can
|
|
re-compress pages using a potentially slower but more effective
|
|
compression algorithm. Note, that IDLE page recompression
|
|
requires ZRAM_MEMORY_TRACKING.
|