xref: /openbmc/linux/drivers/block/zram/Kconfig (revision 278002edb19bce2c628fafb0af936e77000f3a5b)
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