| # SPDX-License-Identifier: GPL-2.0 |
| config ZRAM |
| tristate "Compressed RAM block device support" |
| depends on BLOCK && SYSFS && MMU |
| depends on HAVE_ZSMALLOC |
| 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 |
| This lets zram entries (incompressible or idle pages) be written |
| back to a backing device, helping save memory. |
| 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_TRACK_ENTRY_ACTIME |
| bool "Track access time of zram entries" |
| depends on ZRAM |
| help |
| With this feature zram tracks access time of every stored |
| entry (page), which can be used for a more fine grained IDLE |
| pages writeback. |
| |
| config ZRAM_MEMORY_TRACKING |
| bool "Track zRam block status" |
| depends on ZRAM && DEBUG_FS |
| select ZRAM_TRACK_ENTRY_ACTIME |
| 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_TRACK_ENTRY_ACTIME. |