162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ciconfig ZRAM 362306a36Sopenharmony_ci tristate "Compressed RAM block device support" 462306a36Sopenharmony_ci depends on BLOCK && SYSFS && MMU 562306a36Sopenharmony_ci depends on CRYPTO_LZO || CRYPTO_ZSTD || CRYPTO_LZ4 || CRYPTO_LZ4HC || CRYPTO_842 662306a36Sopenharmony_ci select ZSMALLOC 762306a36Sopenharmony_ci help 862306a36Sopenharmony_ci Creates virtual block devices called /dev/zramX (X = 0, 1, ...). 962306a36Sopenharmony_ci Pages written to these disks are compressed and stored in memory 1062306a36Sopenharmony_ci itself. These disks allow very fast I/O and compression provides 1162306a36Sopenharmony_ci good amounts of memory savings. 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci It has several use cases, for example: /tmp storage, use as swap 1462306a36Sopenharmony_ci disks and maybe many more. 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci See Documentation/admin-guide/blockdev/zram.rst for more information. 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cichoice 1962306a36Sopenharmony_ci prompt "Default zram compressor" 2062306a36Sopenharmony_ci default ZRAM_DEF_COMP_LZORLE 2162306a36Sopenharmony_ci depends on ZRAM 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ciconfig ZRAM_DEF_COMP_LZORLE 2462306a36Sopenharmony_ci bool "lzo-rle" 2562306a36Sopenharmony_ci depends on CRYPTO_LZO 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ciconfig ZRAM_DEF_COMP_ZSTD 2862306a36Sopenharmony_ci bool "zstd" 2962306a36Sopenharmony_ci depends on CRYPTO_ZSTD 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ciconfig ZRAM_DEF_COMP_LZ4 3262306a36Sopenharmony_ci bool "lz4" 3362306a36Sopenharmony_ci depends on CRYPTO_LZ4 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciconfig ZRAM_DEF_COMP_LZO 3662306a36Sopenharmony_ci bool "lzo" 3762306a36Sopenharmony_ci depends on CRYPTO_LZO 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ciconfig ZRAM_DEF_COMP_LZ4HC 4062306a36Sopenharmony_ci bool "lz4hc" 4162306a36Sopenharmony_ci depends on CRYPTO_LZ4HC 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ciconfig ZRAM_DEF_COMP_842 4462306a36Sopenharmony_ci bool "842" 4562306a36Sopenharmony_ci depends on CRYPTO_842 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ciendchoice 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ciconfig ZRAM_DEF_COMP 5062306a36Sopenharmony_ci string 5162306a36Sopenharmony_ci default "lzo-rle" if ZRAM_DEF_COMP_LZORLE 5262306a36Sopenharmony_ci default "zstd" if ZRAM_DEF_COMP_ZSTD 5362306a36Sopenharmony_ci default "lz4" if ZRAM_DEF_COMP_LZ4 5462306a36Sopenharmony_ci default "lzo" if ZRAM_DEF_COMP_LZO 5562306a36Sopenharmony_ci default "lz4hc" if ZRAM_DEF_COMP_LZ4HC 5662306a36Sopenharmony_ci default "842" if ZRAM_DEF_COMP_842 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ciconfig ZRAM_WRITEBACK 5962306a36Sopenharmony_ci bool "Write back incompressible or idle page to backing device" 6062306a36Sopenharmony_ci depends on ZRAM 6162306a36Sopenharmony_ci help 6262306a36Sopenharmony_ci With incompressible page, there is no memory saving to keep it 6362306a36Sopenharmony_ci in memory. Instead, write it out to backing device. 6462306a36Sopenharmony_ci For this feature, admin should set up backing device via 6562306a36Sopenharmony_ci /sys/block/zramX/backing_dev. 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci With /sys/block/zramX/{idle,writeback}, application could ask 6862306a36Sopenharmony_ci idle page's writeback to the backing device to save in memory. 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci See Documentation/admin-guide/blockdev/zram.rst for more information. 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ciconfig ZRAM_MEMORY_TRACKING 7362306a36Sopenharmony_ci bool "Track zRam block status" 7462306a36Sopenharmony_ci depends on ZRAM && DEBUG_FS 7562306a36Sopenharmony_ci help 7662306a36Sopenharmony_ci With this feature, admin can track the state of allocated blocks 7762306a36Sopenharmony_ci of zRAM. Admin could see the information via 7862306a36Sopenharmony_ci /sys/kernel/debug/zram/zramX/block_state. 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci See Documentation/admin-guide/blockdev/zram.rst for more information. 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ciconfig ZRAM_MULTI_COMP 8362306a36Sopenharmony_ci bool "Enable multiple compression streams" 8462306a36Sopenharmony_ci depends on ZRAM 8562306a36Sopenharmony_ci help 8662306a36Sopenharmony_ci This will enable multi-compression streams, so that ZRAM can 8762306a36Sopenharmony_ci re-compress pages using a potentially slower but more effective 8862306a36Sopenharmony_ci compression algorithm. Note, that IDLE page recompression 8962306a36Sopenharmony_ci requires ZRAM_MEMORY_TRACKING. 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_cisource "drivers/block/zram/zram_group/Kconfig" 92