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 53d711a38SRui Salvaterra depends on CRYPTO_LZO || CRYPTO_ZSTD || CRYPTO_LZ4 || CRYPTO_LZ4HC || CRYPTO_842 6b3fbd58fSJohannes Weiner select ZSMALLOC 7cd67e10aSMinchan Kim help 8cd67e10aSMinchan Kim Creates virtual block devices called /dev/zramX (X = 0, 1, ...). 9cd67e10aSMinchan Kim Pages written to these disks are compressed and stored in memory 10cd67e10aSMinchan Kim itself. These disks allow very fast I/O and compression provides 11cd67e10aSMinchan Kim good amounts of memory savings. 12cd67e10aSMinchan Kim 13cd67e10aSMinchan Kim It has several use cases, for example: /tmp storage, use as swap 14cd67e10aSMinchan Kim disks and maybe many more. 15cd67e10aSMinchan Kim 16e7751617SMauro Carvalho Chehab See Documentation/admin-guide/blockdev/zram.rst for more information. 175a47074fSMinchan Kim 183d711a38SRui Salvaterrachoice 193d711a38SRui Salvaterra prompt "Default zram compressor" 203d711a38SRui Salvaterra default ZRAM_DEF_COMP_LZORLE 213d711a38SRui Salvaterra depends on ZRAM 223d711a38SRui Salvaterra 233d711a38SRui Salvaterraconfig ZRAM_DEF_COMP_LZORLE 243d711a38SRui Salvaterra bool "lzo-rle" 253d711a38SRui Salvaterra depends on CRYPTO_LZO 263d711a38SRui Salvaterra 273d711a38SRui Salvaterraconfig ZRAM_DEF_COMP_ZSTD 283d711a38SRui Salvaterra bool "zstd" 293d711a38SRui Salvaterra depends on CRYPTO_ZSTD 303d711a38SRui Salvaterra 313d711a38SRui Salvaterraconfig ZRAM_DEF_COMP_LZ4 323d711a38SRui Salvaterra bool "lz4" 333d711a38SRui Salvaterra depends on CRYPTO_LZ4 343d711a38SRui Salvaterra 353d711a38SRui Salvaterraconfig ZRAM_DEF_COMP_LZO 363d711a38SRui Salvaterra bool "lzo" 373d711a38SRui Salvaterra depends on CRYPTO_LZO 383d711a38SRui Salvaterra 393d711a38SRui Salvaterraconfig ZRAM_DEF_COMP_LZ4HC 403d711a38SRui Salvaterra bool "lz4hc" 413d711a38SRui Salvaterra depends on CRYPTO_LZ4HC 423d711a38SRui Salvaterra 433d711a38SRui Salvaterraconfig ZRAM_DEF_COMP_842 443d711a38SRui Salvaterra bool "842" 453d711a38SRui Salvaterra depends on CRYPTO_842 463d711a38SRui Salvaterra 473d711a38SRui Salvaterraendchoice 483d711a38SRui Salvaterra 493d711a38SRui Salvaterraconfig ZRAM_DEF_COMP 503d711a38SRui Salvaterra string 513d711a38SRui Salvaterra default "lzo-rle" if ZRAM_DEF_COMP_LZORLE 523d711a38SRui Salvaterra default "zstd" if ZRAM_DEF_COMP_ZSTD 533d711a38SRui Salvaterra default "lz4" if ZRAM_DEF_COMP_LZ4 543d711a38SRui Salvaterra default "lzo" if ZRAM_DEF_COMP_LZO 553d711a38SRui Salvaterra default "lz4hc" if ZRAM_DEF_COMP_LZ4HC 563d711a38SRui Salvaterra default "842" if ZRAM_DEF_COMP_842 573d711a38SRui Salvaterra 585a47074fSMinchan Kimconfig ZRAM_WRITEBACK 59a939888eSMinchan Kim bool "Write back incompressible or idle page to backing device" 605a47074fSMinchan Kim depends on ZRAM 615a47074fSMinchan Kim help 625a47074fSMinchan Kim With incompressible page, there is no memory saving to keep it 635a47074fSMinchan Kim in memory. Instead, write it out to backing device. 645a47074fSMinchan Kim For this feature, admin should set up backing device via 655a47074fSMinchan Kim /sys/block/zramX/backing_dev. 665a47074fSMinchan Kim 67a939888eSMinchan Kim With /sys/block/zramX/{idle,writeback}, application could ask 68a939888eSMinchan Kim idle page's writeback to the backing device to save in memory. 69a939888eSMinchan Kim 70e7751617SMauro Carvalho Chehab See Documentation/admin-guide/blockdev/zram.rst for more information. 71c0265342SMinchan Kim 72*b7c3fd65SSergey Senozhatskyconfig ZRAM_TRACK_ENTRY_ACTIME 73*b7c3fd65SSergey Senozhatsky bool "Track access time of zram entries" 74*b7c3fd65SSergey Senozhatsky depends on ZRAM 75*b7c3fd65SSergey Senozhatsky help 76*b7c3fd65SSergey Senozhatsky With this feature zram tracks access time of every stored 77*b7c3fd65SSergey Senozhatsky entry (page), which can be used for a more fine grained IDLE 78*b7c3fd65SSergey Senozhatsky pages writeback. 79*b7c3fd65SSergey Senozhatsky 80c0265342SMinchan Kimconfig ZRAM_MEMORY_TRACKING 81c0265342SMinchan Kim bool "Track zRam block status" 82c0265342SMinchan Kim depends on ZRAM && DEBUG_FS 83*b7c3fd65SSergey Senozhatsky select ZRAM_TRACK_ENTRY_ACTIME 84c0265342SMinchan Kim help 85c0265342SMinchan Kim With this feature, admin can track the state of allocated blocks 86c0265342SMinchan Kim of zRAM. Admin could see the information via 87c0265342SMinchan Kim /sys/kernel/debug/zram/zramX/block_state. 88c0265342SMinchan Kim 89e7751617SMauro Carvalho Chehab See Documentation/admin-guide/blockdev/zram.rst for more information. 9084b33bf7SSergey Senozhatsky 9184b33bf7SSergey Senozhatskyconfig ZRAM_MULTI_COMP 9284b33bf7SSergey Senozhatsky bool "Enable multiple compression streams" 9384b33bf7SSergey Senozhatsky depends on ZRAM 9484b33bf7SSergey Senozhatsky help 9584b33bf7SSergey Senozhatsky This will enable multi-compression streams, so that ZRAM can 9684b33bf7SSergey Senozhatsky re-compress pages using a potentially slower but more effective 9784b33bf7SSergey Senozhatsky compression algorithm. Note, that IDLE page recompression 98*b7c3fd65SSergey Senozhatsky requires ZRAM_TRACK_ENTRY_ACTIME. 99