1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 2cd67e10aSMinchan Kimconfig ZRAM 3cd67e10aSMinchan Kim tristate "Compressed RAM block device support" 46140ae41SRandy Dunlap depends on BLOCK && SYSFS && MMU 5b3fbd58fSJohannes Weiner select ZSMALLOC 6cd67e10aSMinchan Kim help 7cd67e10aSMinchan Kim Creates virtual block devices called /dev/zramX (X = 0, 1, ...). 8cd67e10aSMinchan Kim Pages written to these disks are compressed and stored in memory 9cd67e10aSMinchan Kim itself. These disks allow very fast I/O and compression provides 10cd67e10aSMinchan Kim good amounts of memory savings. 11cd67e10aSMinchan Kim 12cd67e10aSMinchan Kim It has several use cases, for example: /tmp storage, use as swap 13cd67e10aSMinchan Kim disks and maybe many more. 14cd67e10aSMinchan Kim 15e7751617SMauro Carvalho Chehab See Documentation/admin-guide/blockdev/zram.rst for more information. 165a47074fSMinchan Kim 1722d651c3SSergey Senozhatskyconfig ZRAM_BACKEND_LZ4 1822d651c3SSergey Senozhatsky bool "lz4 compression support" 1922d651c3SSergey Senozhatsky depends on ZRAM 2022d651c3SSergey Senozhatsky select LZ4_COMPRESS 2122d651c3SSergey Senozhatsky select LZ4_DECOMPRESS 2222d651c3SSergey Senozhatsky 23c60a4ef5SSergey Senozhatskyconfig ZRAM_BACKEND_LZ4HC 24c60a4ef5SSergey Senozhatsky bool "lz4hc compression support" 25c60a4ef5SSergey Senozhatsky depends on ZRAM 26c60a4ef5SSergey Senozhatsky select LZ4HC_COMPRESS 27c60a4ef5SSergey Senozhatsky select LZ4_DECOMPRESS 28c60a4ef5SSergey Senozhatsky 2973e7d81aSSergey Senozhatskyconfig ZRAM_BACKEND_ZSTD 3073e7d81aSSergey Senozhatsky bool "zstd compression support" 3173e7d81aSSergey Senozhatsky depends on ZRAM 3273e7d81aSSergey Senozhatsky select ZSTD_COMPRESS 3373e7d81aSSergey Senozhatsky select ZSTD_DECOMPRESS 3473e7d81aSSergey Senozhatsky 3584112e31SSergey Senozhatskyconfig ZRAM_BACKEND_DEFLATE 3684112e31SSergey Senozhatsky bool "deflate compression support" 3784112e31SSergey Senozhatsky depends on ZRAM 3884112e31SSergey Senozhatsky select ZLIB_DEFLATE 3984112e31SSergey Senozhatsky select ZLIB_INFLATE 4084112e31SSergey Senozhatsky 411d3100cfSSergey Senozhatskyconfig ZRAM_BACKEND_842 421d3100cfSSergey Senozhatsky bool "842 compression support" 431d3100cfSSergey Senozhatsky depends on ZRAM 441d3100cfSSergey Senozhatsky select 842_COMPRESS 451d3100cfSSergey Senozhatsky select 842_DECOMPRESS 461d3100cfSSergey Senozhatsky 471a78390dSSergey Senozhatskyconfig ZRAM_BACKEND_FORCE_LZO 481a78390dSSergey Senozhatsky depends on ZRAM 491a78390dSSergey Senozhatsky def_bool !ZRAM_BACKEND_LZ4 && !ZRAM_BACKEND_LZ4HC && \ 501a78390dSSergey Senozhatsky !ZRAM_BACKEND_ZSTD && !ZRAM_BACKEND_DEFLATE && \ 511a78390dSSergey Senozhatsky !ZRAM_BACKEND_842 521a78390dSSergey Senozhatsky 531a78390dSSergey Senozhatskyconfig ZRAM_BACKEND_LZO 541a78390dSSergey Senozhatsky bool "lzo and lzo-rle compression support" if !ZRAM_BACKEND_FORCE_LZO 551a78390dSSergey Senozhatsky depends on ZRAM 561a78390dSSergey Senozhatsky default ZRAM_BACKEND_FORCE_LZO 571a78390dSSergey Senozhatsky select LZO_COMPRESS 581a78390dSSergey Senozhatsky select LZO_DECOMPRESS 591a78390dSSergey Senozhatsky 602152247cSSergey Senozhatskychoice 612152247cSSergey Senozhatsky prompt "Default zram compressor" 622152247cSSergey Senozhatsky default ZRAM_DEF_COMP_LZORLE 632152247cSSergey Senozhatsky depends on ZRAM 642152247cSSergey Senozhatsky 652152247cSSergey Senozhatskyconfig ZRAM_DEF_COMP_LZORLE 662152247cSSergey Senozhatsky bool "lzo-rle" 672152247cSSergey Senozhatsky depends on ZRAM_BACKEND_LZO 682152247cSSergey Senozhatsky 692152247cSSergey Senozhatskyconfig ZRAM_DEF_COMP_LZO 702152247cSSergey Senozhatsky bool "lzo" 712152247cSSergey Senozhatsky depends on ZRAM_BACKEND_LZO 722152247cSSergey Senozhatsky 7322d651c3SSergey Senozhatskyconfig ZRAM_DEF_COMP_LZ4 7422d651c3SSergey Senozhatsky bool "lz4" 7522d651c3SSergey Senozhatsky depends on ZRAM_BACKEND_LZ4 7622d651c3SSergey Senozhatsky 77c60a4ef5SSergey Senozhatskyconfig ZRAM_DEF_COMP_LZ4HC 78c60a4ef5SSergey Senozhatsky bool "lz4hc" 79c60a4ef5SSergey Senozhatsky depends on ZRAM_BACKEND_LZ4HC 80c60a4ef5SSergey Senozhatsky 8173e7d81aSSergey Senozhatskyconfig ZRAM_DEF_COMP_ZSTD 8273e7d81aSSergey Senozhatsky bool "zstd" 8373e7d81aSSergey Senozhatsky depends on ZRAM_BACKEND_ZSTD 8473e7d81aSSergey Senozhatsky 8584112e31SSergey Senozhatskyconfig ZRAM_DEF_COMP_DEFLATE 8684112e31SSergey Senozhatsky bool "deflate" 8784112e31SSergey Senozhatsky depends on ZRAM_BACKEND_DEFLATE 8884112e31SSergey Senozhatsky 891d3100cfSSergey Senozhatskyconfig ZRAM_DEF_COMP_842 901d3100cfSSergey Senozhatsky bool "842" 911d3100cfSSergey Senozhatsky depends on ZRAM_BACKEND_842 921d3100cfSSergey Senozhatsky 932152247cSSergey Senozhatskyendchoice 942152247cSSergey Senozhatsky 953d711a38SRui Salvaterraconfig ZRAM_DEF_COMP 963d711a38SRui Salvaterra string 97*9f3310ccSGeert Uytterhoeven depends on ZRAM 982152247cSSergey Senozhatsky default "lzo-rle" if ZRAM_DEF_COMP_LZORLE 992152247cSSergey Senozhatsky default "lzo" if ZRAM_DEF_COMP_LZO 10022d651c3SSergey Senozhatsky default "lz4" if ZRAM_DEF_COMP_LZ4 101c60a4ef5SSergey Senozhatsky default "lz4hc" if ZRAM_DEF_COMP_LZ4HC 10273e7d81aSSergey Senozhatsky default "zstd" if ZRAM_DEF_COMP_ZSTD 10384112e31SSergey Senozhatsky default "deflate" if ZRAM_DEF_COMP_DEFLATE 1041d3100cfSSergey Senozhatsky default "842" if ZRAM_DEF_COMP_842 105917a59e8SSergey Senozhatsky default "unset-value" 1063d711a38SRui Salvaterra 1075a47074fSMinchan Kimconfig ZRAM_WRITEBACK 108a939888eSMinchan Kim bool "Write back incompressible or idle page to backing device" 1095a47074fSMinchan Kim depends on ZRAM 1105a47074fSMinchan Kim help 1112e16898dSSergey Senozhatsky This lets zram entries (incompressible or idle pages) be written 1122e16898dSSergey Senozhatsky back to a backing device, helping save memory. 1135a47074fSMinchan Kim For this feature, admin should set up backing device via 1145a47074fSMinchan Kim /sys/block/zramX/backing_dev. 1155a47074fSMinchan Kim 116a939888eSMinchan Kim With /sys/block/zramX/{idle,writeback}, application could ask 117a939888eSMinchan Kim idle page's writeback to the backing device to save in memory. 118a939888eSMinchan Kim 119e7751617SMauro Carvalho Chehab See Documentation/admin-guide/blockdev/zram.rst for more information. 120c0265342SMinchan Kim 121a7a03505SSergey Senozhatskyconfig ZRAM_TRACK_ENTRY_ACTIME 122a7a03505SSergey Senozhatsky bool "Track access time of zram entries" 123a7a03505SSergey Senozhatsky depends on ZRAM 124a7a03505SSergey Senozhatsky help 125a7a03505SSergey Senozhatsky With this feature zram tracks access time of every stored 126a7a03505SSergey Senozhatsky entry (page), which can be used for a more fine grained IDLE 127a7a03505SSergey Senozhatsky pages writeback. 128a7a03505SSergey Senozhatsky 129c0265342SMinchan Kimconfig ZRAM_MEMORY_TRACKING 130c0265342SMinchan Kim bool "Track zRam block status" 131c0265342SMinchan Kim depends on ZRAM && DEBUG_FS 132a7a03505SSergey Senozhatsky select ZRAM_TRACK_ENTRY_ACTIME 133c0265342SMinchan Kim help 134c0265342SMinchan Kim With this feature, admin can track the state of allocated blocks 135c0265342SMinchan Kim of zRAM. Admin could see the information via 136c0265342SMinchan Kim /sys/kernel/debug/zram/zramX/block_state. 137c0265342SMinchan Kim 138e7751617SMauro Carvalho Chehab See Documentation/admin-guide/blockdev/zram.rst for more information. 13984b33bf7SSergey Senozhatsky 14084b33bf7SSergey Senozhatskyconfig ZRAM_MULTI_COMP 14184b33bf7SSergey Senozhatsky bool "Enable multiple compression streams" 14284b33bf7SSergey Senozhatsky depends on ZRAM 14384b33bf7SSergey Senozhatsky help 14484b33bf7SSergey Senozhatsky This will enable multi-compression streams, so that ZRAM can 14584b33bf7SSergey Senozhatsky re-compress pages using a potentially slower but more effective 14684b33bf7SSergey Senozhatsky compression algorithm. Note, that IDLE page recompression 147a7a03505SSergey Senozhatsky requires ZRAM_TRACK_ENTRY_ACTIME. 148