Loading Documentation/ABI/obsolete/sysfs-block-zramdeleted 100644 → 0 +0 −119 Original line number Diff line number Diff line What: /sys/block/zram<id>/num_reads Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The num_reads file is read-only and specifies the number of reads (failed or successful) done on this device. Now accessible via zram<id>/stat node. What: /sys/block/zram<id>/num_writes Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The num_writes file is read-only and specifies the number of writes (failed or successful) done on this device. Now accessible via zram<id>/stat node. What: /sys/block/zram<id>/invalid_io Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The invalid_io file is read-only and specifies the number of non-page-size-aligned I/O requests issued to this device. Now accessible via zram<id>/io_stat node. What: /sys/block/zram<id>/failed_reads Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The failed_reads file is read-only and specifies the number of failed reads happened on this device. Now accessible via zram<id>/io_stat node. What: /sys/block/zram<id>/failed_writes Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The failed_writes file is read-only and specifies the number of failed writes happened on this device. Now accessible via zram<id>/io_stat node. What: /sys/block/zram<id>/notify_free Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The notify_free file is read-only. Depending on device usage scenario it may account a) the number of pages freed because of swap slot free notifications or b) the number of pages freed because of REQ_DISCARD requests sent by bio. The former ones are sent to a swap block device when a swap slot is freed, which implies that this disk is being used as a swap disk. The latter ones are sent by filesystem mounted with discard option, whenever some data blocks are getting discarded. Now accessible via zram<id>/io_stat node. What: /sys/block/zram<id>/zero_pages Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The zero_pages file is read-only and specifies number of zero filled pages written to this disk. No memory is allocated for such pages. Now accessible via zram<id>/mm_stat node. What: /sys/block/zram<id>/orig_data_size Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The orig_data_size file is read-only and specifies uncompressed size of data stored in this disk. This excludes zero-filled pages (zero_pages) since no memory is allocated for them. Unit: bytes Now accessible via zram<id>/mm_stat node. What: /sys/block/zram<id>/compr_data_size Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The compr_data_size file is read-only and specifies compressed size of data stored in this disk. So, compression ratio can be calculated using orig_data_size and this statistic. Unit: bytes Now accessible via zram<id>/mm_stat node. What: /sys/block/zram<id>/mem_used_total Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The mem_used_total file is read-only and specifies the amount of memory, including allocator fragmentation and metadata overhead, allocated for this disk. So, allocator space efficiency can be calculated using compr_data_size and this statistic. Unit: bytes Now accessible via zram<id>/mm_stat node. What: /sys/block/zram<id>/mem_used_max Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The mem_used_max file is read/write and specifies the amount of maximum memory zram have consumed to store compressed data. For resetting the value, you should write "0". Otherwise, you could see -EINVAL. Unit: bytes Downgraded to write-only node: so it's possible to set new value only; its current value is stored in zram<id>/mm_stat node. What: /sys/block/zram<id>/mem_limit Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The mem_limit file is read/write and specifies the maximum amount of memory ZRAM can use to store the compressed data. The limit could be changed in run time and "0" means disable the limit. No limit is the initial state. Unit: bytes Downgraded to write-only node: so it's possible to set new value only; its current value is stored in zram<id>/mm_stat node. Documentation/ABI/testing/sysfs-block-zram +25 −93 Original line number Diff line number Diff line Loading @@ -22,41 +22,6 @@ Description: device. The reset operation frees all the memory associated with this device. What: /sys/block/zram<id>/num_reads Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The num_reads file is read-only and specifies the number of reads (failed or successful) done on this device. What: /sys/block/zram<id>/num_writes Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The num_writes file is read-only and specifies the number of writes (failed or successful) done on this device. What: /sys/block/zram<id>/invalid_io Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The invalid_io file is read-only and specifies the number of non-page-size-aligned I/O requests issued to this device. What: /sys/block/zram<id>/failed_reads Date: February 2014 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The failed_reads file is read-only and specifies the number of failed reads happened on this device. What: /sys/block/zram<id>/failed_writes Date: February 2014 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The failed_writes file is read-only and specifies the number of failed writes happened on this device. What: /sys/block/zram<id>/max_comp_streams Date: February 2014 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Loading @@ -73,74 +38,24 @@ Description: available and selected compression algorithms, change compression algorithm selection. What: /sys/block/zram<id>/notify_free Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The notify_free file is read-only. Depending on device usage scenario it may account a) the number of pages freed because of swap slot free notifications or b) the number of pages freed because of REQ_DISCARD requests sent by bio. The former ones are sent to a swap block device when a swap slot is freed, which implies that this disk is being used as a swap disk. The latter ones are sent by filesystem mounted with discard option, whenever some data blocks are getting discarded. What: /sys/block/zram<id>/zero_pages Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The zero_pages file is read-only and specifies number of zero filled pages written to this disk. No memory is allocated for such pages. What: /sys/block/zram<id>/orig_data_size Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The orig_data_size file is read-only and specifies uncompressed size of data stored in this disk. This excludes zero-filled pages (zero_pages) since no memory is allocated for them. Unit: bytes What: /sys/block/zram<id>/compr_data_size Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The compr_data_size file is read-only and specifies compressed size of data stored in this disk. So, compression ratio can be calculated using orig_data_size and this statistic. Unit: bytes What: /sys/block/zram<id>/mem_used_total Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The mem_used_total file is read-only and specifies the amount of memory, including allocator fragmentation and metadata overhead, allocated for this disk. So, allocator space efficiency can be calculated using compr_data_size and this statistic. Unit: bytes What: /sys/block/zram<id>/mem_used_max Date: August 2014 Contact: Minchan Kim <minchan@kernel.org> Description: The mem_used_max file is read/write and specifies the amount of maximum memory zram have consumed to store compressed data. For resetting the value, you should write "0". Otherwise, you could see -EINVAL. The mem_used_max file is write-only and is used to reset the counter of maximum memory zram have consumed to store compressed data. For resetting the value, you should write "0". Otherwise, you could see -EINVAL. Unit: bytes What: /sys/block/zram<id>/mem_limit Date: August 2014 Contact: Minchan Kim <minchan@kernel.org> Description: The mem_limit file is read/write and specifies the maximum amount of memory ZRAM can use to store the compressed data. The limit could be changed in run time and "0" means disable the limit. No limit is the initial state. Unit: bytes The mem_limit file is write-only and specifies the maximum amount of memory ZRAM can use to store the compressed data. The limit could be changed in run time and "0" means disable the limit. No limit is the initial state. Unit: bytes What: /sys/block/zram<id>/compact Date: August 2015 Loading @@ -166,3 +81,20 @@ Description: The mm_stat file is read-only and represents device's mm statistics (orig_data_size, compr_data_size, etc.) in a format similar to block layer statistics file format. What: /sys/block/zram<id>/debug_stat Date: July 2016 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The debug_stat file is read-only and represents various device's debugging info useful for kernel developers. Its format is not documented intentionally and may change anytime without any notice. What: /sys/block/zram<id>/backing_dev Date: June 2017 Contact: Minchan Kim <minchan@kernel.org> Description: The backing_dev file is read-write and set up backing device for zram to write incompressible pages. For using, user should enable CONFIG_ZRAM_WRITEBACK. Documentation/blockdev/zram.txt +113 −87 Original line number Diff line number Diff line Loading @@ -59,27 +59,16 @@ num_devices parameter is optional and tells zram how many devices should be pre-created. Default: 1. 2) Set max number of compression streams Compression backend may use up to max_comp_streams compression streams, thus allowing up to max_comp_streams concurrent compression operations. By default, compression backend uses single compression stream. Examples: #show max compression streams number Regardless the value passed to this attribute, ZRAM will always allocate multiple compression streams - one per online CPUs - thus allowing several concurrent compression operations. The number of allocated compression streams goes down when some of the CPUs become offline. There is no single-compression-stream mode anymore, unless you are running a UP system or has only 1 CPU online. To find out how many streams are currently available: cat /sys/block/zram0/max_comp_streams #set max compression streams number to 3 echo 3 > /sys/block/zram0/max_comp_streams Note: In order to enable compression backend's multi stream support max_comp_streams must be initially set to desired concurrency level before ZRAM device initialisation. Once the device initialised as a single stream compression backend (max_comp_streams equals to 1), you will see error if you try to change the value of max_comp_streams because single stream compression backend implemented as a special case by lock overhead issue and does not support dynamic max_comp_streams. Only multi stream backend supports dynamic max_comp_streams adjustment. 3) Select compression algorithm Using comp_algorithm device attribute one can see available and currently selected (shown in square brackets) compression algorithms, Loading @@ -94,6 +83,16 @@ max_comp_streams adjustment. #select lzo compression algorithm echo lzo > /sys/block/zram0/comp_algorithm For the time being, the `comp_algorithm' content does not necessarily show every compression algorithm supported by the kernel. We keep this list primarily to simplify device configuration and one can configure a new device with a compression algorithm that is not listed in `comp_algorithm'. The thing is that, internally, ZRAM uses Crypto API and, if some of the algorithms were built as modules, it's impossible to list all of them using, for instance, /proc/crypto or any other method. This, however, has an advantage of permitting the usage of custom crypto compression modules (implementing S/W or H/W compression). 4) Set Disksize Set disk size by writing the value to sysfs node 'disksize'. The value can be either in bytes or you can use mem suffixes. Loading Loading @@ -162,41 +161,15 @@ Name access description disksize RW show and set the device's disk size initstate RO shows the initialization state of the device reset WO trigger device reset num_reads RO the number of reads failed_reads RO the number of failed reads num_write RO the number of writes failed_writes RO the number of failed writes invalid_io RO the number of non-page-size-aligned I/O requests mem_used_max WO reset the `mem_used_max' counter (see later) mem_limit WO specifies the maximum amount of memory ZRAM can use to store the compressed data max_comp_streams RW the number of possible concurrent compress operations comp_algorithm RW show and change the compression algorithm notify_free RO the number of notifications to free pages (either slot free notifications or REQ_DISCARD requests) zero_pages RO the number of zero filled pages written to this disk orig_data_size RO uncompressed size of data stored in this disk compr_data_size RO compressed size of data stored in this disk mem_used_total RO the amount of memory allocated for this disk mem_used_max RW the maximum amount of memory zram have consumed to store the data (to reset this counter to the actual current value, write 1 to this attribute) mem_limit RW the maximum amount of memory ZRAM can use to store the compressed data pages_compacted RO the number of pages freed during compaction (available only via zram<id>/mm_stat node) compact WO trigger memory compaction debug_stat RO this file is used for zram debugging purposes backing_dev RW set up backend storage for zram to write out WARNING ======= per-stat sysfs attributes are considered to be deprecated. The basic strategy is: -- the existing RW nodes will be downgraded to WO nodes (in linux 4.11) -- deprecated RO sysfs nodes will eventually be removed (in linux 4.11) The list of deprecated attributes can be found here: Documentation/ABI/obsolete/sysfs-block-zram Basically, every attribute that has its own read accessible sysfs node (e.g. num_reads) *AND* is accessible via one of the stat files (zram<id>/stat or zram<id>/io_stat or zram<id>/mm_stat) is considered to be deprecated. User space is advised to use the following files to read the device statistics. Loading @@ -211,22 +184,41 @@ The stat file represents device's I/O statistics not accounted by block layer and, thus, not available in zram<id>/stat file. It consists of a single line of text and contains the following stats separated by whitespace: failed_reads failed_writes invalid_io notify_free failed_reads the number of failed reads failed_writes the number of failed writes invalid_io the number of non-page-size-aligned I/O requests notify_free Depending on device usage scenario it may account a) the number of pages freed because of swap slot free notifications or b) the number of pages freed because of REQ_DISCARD requests sent by bio. The former ones are sent to a swap block device when a swap slot is freed, which implies that this disk is being used as a swap disk. The latter ones are sent by filesystem mounted with discard option, whenever some data blocks are getting discarded. File /sys/block/zram<id>/mm_stat The stat file represents device's mm statistics. It consists of a single line of text and contains the following stats separated by whitespace: orig_data_size compr_data_size mem_used_total mem_limit mem_used_max zero_pages num_migrated orig_data_size uncompressed size of data stored in this disk. This excludes same-element-filled pages (same_pages) since no memory is allocated for them. Unit: bytes compr_data_size compressed size of data stored in this disk mem_used_total the amount of memory allocated for this disk. This includes allocator fragmentation and metadata overhead, allocated for this disk. So, allocator space efficiency can be calculated using compr_data_size and this statistic. Unit: bytes mem_limit the maximum amount of memory ZRAM can use to store the compressed data mem_used_max the maximum amount of memory zram have consumed to store the data same_pages the number of same element filled pages written to this disk. No memory is allocated for such pages. pages_compacted the number of pages freed during compaction huge_pages the number of incompressible pages 9) Deactivate: swapoff /dev/zram0 Loading @@ -241,5 +233,39 @@ line of text and contains the following stats separated by whitespace: resets the disksize to zero. You must set the disksize again before reusing the device. * Optional Feature = writeback With incompressible pages, there is no memory saving with zram. Instead, with CONFIG_ZRAM_WRITEBACK, zram can write incompressible page to backing storage rather than keeping it in memory. User should set up backing device via /sys/block/zramX/backing_dev before disksize setting. = memory tracking With CONFIG_ZRAM_MEMORY_TRACKING, user can know information of the zram block. It could be useful to catch cold or incompressible pages of the process with*pagemap. If you enable the feature, you could see block state via /sys/kernel/debug/zram/zram0/block_state". The output is as follows, 300 75.033841 .wh 301 63.806904 s.. 302 63.806919 ..h First column is zram's block index. Second column is access time since the system was booted Third column is state of the block. (s: same page w: written page to backing store h: huge page) First line of above example says 300th block is accessed at 75.033841sec and the block's state is huge so it is written back to the backing storage. It's a debugging feature so anyone shouldn't rely on it to work properly. Nitin Gupta ngupta@vflare.org Makefile +1 −1 Original line number Diff line number Diff line VERSION = 4 PATCHLEVEL = 4 SUBLEVEL = 150 SUBLEVEL = 153 EXTRAVERSION = NAME = Blurry Fish Butt Loading arch/arc/Makefile +1 −14 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ endif KBUILD_DEFCONFIG := nsim_700_defconfig cflags-y += -fno-common -pipe -fno-builtin -D__linux__ cflags-y += -fno-common -pipe -fno-builtin -mmedium-calls -D__linux__ cflags-$(CONFIG_ISA_ARCOMPACT) += -mA7 cflags-$(CONFIG_ISA_ARCV2) += -mcpu=archs Loading Loading @@ -137,16 +137,3 @@ dtbs: scripts archclean: $(Q)$(MAKE) $(clean)=$(boot) # Hacks to enable final link due to absence of link-time branch relexation # and gcc choosing optimal(shorter) branches at -O3 # # vineetg Feb 2010: -mlong-calls switched off for overall kernel build # However lib/decompress_inflate.o (.init.text) calls # zlib_inflate_workspacesize (.text) causing relocation errors. # Thus forcing all exten calls in this file to be long calls export CFLAGS_decompress_inflate.o = -mmedium-calls export CFLAGS_initramfs.o = -mmedium-calls ifdef CONFIG_SMP export CFLAGS_core.o = -mmedium-calls endif Loading
Documentation/ABI/obsolete/sysfs-block-zramdeleted 100644 → 0 +0 −119 Original line number Diff line number Diff line What: /sys/block/zram<id>/num_reads Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The num_reads file is read-only and specifies the number of reads (failed or successful) done on this device. Now accessible via zram<id>/stat node. What: /sys/block/zram<id>/num_writes Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The num_writes file is read-only and specifies the number of writes (failed or successful) done on this device. Now accessible via zram<id>/stat node. What: /sys/block/zram<id>/invalid_io Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The invalid_io file is read-only and specifies the number of non-page-size-aligned I/O requests issued to this device. Now accessible via zram<id>/io_stat node. What: /sys/block/zram<id>/failed_reads Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The failed_reads file is read-only and specifies the number of failed reads happened on this device. Now accessible via zram<id>/io_stat node. What: /sys/block/zram<id>/failed_writes Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The failed_writes file is read-only and specifies the number of failed writes happened on this device. Now accessible via zram<id>/io_stat node. What: /sys/block/zram<id>/notify_free Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The notify_free file is read-only. Depending on device usage scenario it may account a) the number of pages freed because of swap slot free notifications or b) the number of pages freed because of REQ_DISCARD requests sent by bio. The former ones are sent to a swap block device when a swap slot is freed, which implies that this disk is being used as a swap disk. The latter ones are sent by filesystem mounted with discard option, whenever some data blocks are getting discarded. Now accessible via zram<id>/io_stat node. What: /sys/block/zram<id>/zero_pages Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The zero_pages file is read-only and specifies number of zero filled pages written to this disk. No memory is allocated for such pages. Now accessible via zram<id>/mm_stat node. What: /sys/block/zram<id>/orig_data_size Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The orig_data_size file is read-only and specifies uncompressed size of data stored in this disk. This excludes zero-filled pages (zero_pages) since no memory is allocated for them. Unit: bytes Now accessible via zram<id>/mm_stat node. What: /sys/block/zram<id>/compr_data_size Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The compr_data_size file is read-only and specifies compressed size of data stored in this disk. So, compression ratio can be calculated using orig_data_size and this statistic. Unit: bytes Now accessible via zram<id>/mm_stat node. What: /sys/block/zram<id>/mem_used_total Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The mem_used_total file is read-only and specifies the amount of memory, including allocator fragmentation and metadata overhead, allocated for this disk. So, allocator space efficiency can be calculated using compr_data_size and this statistic. Unit: bytes Now accessible via zram<id>/mm_stat node. What: /sys/block/zram<id>/mem_used_max Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The mem_used_max file is read/write and specifies the amount of maximum memory zram have consumed to store compressed data. For resetting the value, you should write "0". Otherwise, you could see -EINVAL. Unit: bytes Downgraded to write-only node: so it's possible to set new value only; its current value is stored in zram<id>/mm_stat node. What: /sys/block/zram<id>/mem_limit Date: August 2015 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The mem_limit file is read/write and specifies the maximum amount of memory ZRAM can use to store the compressed data. The limit could be changed in run time and "0" means disable the limit. No limit is the initial state. Unit: bytes Downgraded to write-only node: so it's possible to set new value only; its current value is stored in zram<id>/mm_stat node.
Documentation/ABI/testing/sysfs-block-zram +25 −93 Original line number Diff line number Diff line Loading @@ -22,41 +22,6 @@ Description: device. The reset operation frees all the memory associated with this device. What: /sys/block/zram<id>/num_reads Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The num_reads file is read-only and specifies the number of reads (failed or successful) done on this device. What: /sys/block/zram<id>/num_writes Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The num_writes file is read-only and specifies the number of writes (failed or successful) done on this device. What: /sys/block/zram<id>/invalid_io Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The invalid_io file is read-only and specifies the number of non-page-size-aligned I/O requests issued to this device. What: /sys/block/zram<id>/failed_reads Date: February 2014 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The failed_reads file is read-only and specifies the number of failed reads happened on this device. What: /sys/block/zram<id>/failed_writes Date: February 2014 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The failed_writes file is read-only and specifies the number of failed writes happened on this device. What: /sys/block/zram<id>/max_comp_streams Date: February 2014 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Loading @@ -73,74 +38,24 @@ Description: available and selected compression algorithms, change compression algorithm selection. What: /sys/block/zram<id>/notify_free Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The notify_free file is read-only. Depending on device usage scenario it may account a) the number of pages freed because of swap slot free notifications or b) the number of pages freed because of REQ_DISCARD requests sent by bio. The former ones are sent to a swap block device when a swap slot is freed, which implies that this disk is being used as a swap disk. The latter ones are sent by filesystem mounted with discard option, whenever some data blocks are getting discarded. What: /sys/block/zram<id>/zero_pages Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The zero_pages file is read-only and specifies number of zero filled pages written to this disk. No memory is allocated for such pages. What: /sys/block/zram<id>/orig_data_size Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The orig_data_size file is read-only and specifies uncompressed size of data stored in this disk. This excludes zero-filled pages (zero_pages) since no memory is allocated for them. Unit: bytes What: /sys/block/zram<id>/compr_data_size Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The compr_data_size file is read-only and specifies compressed size of data stored in this disk. So, compression ratio can be calculated using orig_data_size and this statistic. Unit: bytes What: /sys/block/zram<id>/mem_used_total Date: August 2010 Contact: Nitin Gupta <ngupta@vflare.org> Description: The mem_used_total file is read-only and specifies the amount of memory, including allocator fragmentation and metadata overhead, allocated for this disk. So, allocator space efficiency can be calculated using compr_data_size and this statistic. Unit: bytes What: /sys/block/zram<id>/mem_used_max Date: August 2014 Contact: Minchan Kim <minchan@kernel.org> Description: The mem_used_max file is read/write and specifies the amount of maximum memory zram have consumed to store compressed data. For resetting the value, you should write "0". Otherwise, you could see -EINVAL. The mem_used_max file is write-only and is used to reset the counter of maximum memory zram have consumed to store compressed data. For resetting the value, you should write "0". Otherwise, you could see -EINVAL. Unit: bytes What: /sys/block/zram<id>/mem_limit Date: August 2014 Contact: Minchan Kim <minchan@kernel.org> Description: The mem_limit file is read/write and specifies the maximum amount of memory ZRAM can use to store the compressed data. The limit could be changed in run time and "0" means disable the limit. No limit is the initial state. Unit: bytes The mem_limit file is write-only and specifies the maximum amount of memory ZRAM can use to store the compressed data. The limit could be changed in run time and "0" means disable the limit. No limit is the initial state. Unit: bytes What: /sys/block/zram<id>/compact Date: August 2015 Loading @@ -166,3 +81,20 @@ Description: The mm_stat file is read-only and represents device's mm statistics (orig_data_size, compr_data_size, etc.) in a format similar to block layer statistics file format. What: /sys/block/zram<id>/debug_stat Date: July 2016 Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Description: The debug_stat file is read-only and represents various device's debugging info useful for kernel developers. Its format is not documented intentionally and may change anytime without any notice. What: /sys/block/zram<id>/backing_dev Date: June 2017 Contact: Minchan Kim <minchan@kernel.org> Description: The backing_dev file is read-write and set up backing device for zram to write incompressible pages. For using, user should enable CONFIG_ZRAM_WRITEBACK.
Documentation/blockdev/zram.txt +113 −87 Original line number Diff line number Diff line Loading @@ -59,27 +59,16 @@ num_devices parameter is optional and tells zram how many devices should be pre-created. Default: 1. 2) Set max number of compression streams Compression backend may use up to max_comp_streams compression streams, thus allowing up to max_comp_streams concurrent compression operations. By default, compression backend uses single compression stream. Examples: #show max compression streams number Regardless the value passed to this attribute, ZRAM will always allocate multiple compression streams - one per online CPUs - thus allowing several concurrent compression operations. The number of allocated compression streams goes down when some of the CPUs become offline. There is no single-compression-stream mode anymore, unless you are running a UP system or has only 1 CPU online. To find out how many streams are currently available: cat /sys/block/zram0/max_comp_streams #set max compression streams number to 3 echo 3 > /sys/block/zram0/max_comp_streams Note: In order to enable compression backend's multi stream support max_comp_streams must be initially set to desired concurrency level before ZRAM device initialisation. Once the device initialised as a single stream compression backend (max_comp_streams equals to 1), you will see error if you try to change the value of max_comp_streams because single stream compression backend implemented as a special case by lock overhead issue and does not support dynamic max_comp_streams. Only multi stream backend supports dynamic max_comp_streams adjustment. 3) Select compression algorithm Using comp_algorithm device attribute one can see available and currently selected (shown in square brackets) compression algorithms, Loading @@ -94,6 +83,16 @@ max_comp_streams adjustment. #select lzo compression algorithm echo lzo > /sys/block/zram0/comp_algorithm For the time being, the `comp_algorithm' content does not necessarily show every compression algorithm supported by the kernel. We keep this list primarily to simplify device configuration and one can configure a new device with a compression algorithm that is not listed in `comp_algorithm'. The thing is that, internally, ZRAM uses Crypto API and, if some of the algorithms were built as modules, it's impossible to list all of them using, for instance, /proc/crypto or any other method. This, however, has an advantage of permitting the usage of custom crypto compression modules (implementing S/W or H/W compression). 4) Set Disksize Set disk size by writing the value to sysfs node 'disksize'. The value can be either in bytes or you can use mem suffixes. Loading Loading @@ -162,41 +161,15 @@ Name access description disksize RW show and set the device's disk size initstate RO shows the initialization state of the device reset WO trigger device reset num_reads RO the number of reads failed_reads RO the number of failed reads num_write RO the number of writes failed_writes RO the number of failed writes invalid_io RO the number of non-page-size-aligned I/O requests mem_used_max WO reset the `mem_used_max' counter (see later) mem_limit WO specifies the maximum amount of memory ZRAM can use to store the compressed data max_comp_streams RW the number of possible concurrent compress operations comp_algorithm RW show and change the compression algorithm notify_free RO the number of notifications to free pages (either slot free notifications or REQ_DISCARD requests) zero_pages RO the number of zero filled pages written to this disk orig_data_size RO uncompressed size of data stored in this disk compr_data_size RO compressed size of data stored in this disk mem_used_total RO the amount of memory allocated for this disk mem_used_max RW the maximum amount of memory zram have consumed to store the data (to reset this counter to the actual current value, write 1 to this attribute) mem_limit RW the maximum amount of memory ZRAM can use to store the compressed data pages_compacted RO the number of pages freed during compaction (available only via zram<id>/mm_stat node) compact WO trigger memory compaction debug_stat RO this file is used for zram debugging purposes backing_dev RW set up backend storage for zram to write out WARNING ======= per-stat sysfs attributes are considered to be deprecated. The basic strategy is: -- the existing RW nodes will be downgraded to WO nodes (in linux 4.11) -- deprecated RO sysfs nodes will eventually be removed (in linux 4.11) The list of deprecated attributes can be found here: Documentation/ABI/obsolete/sysfs-block-zram Basically, every attribute that has its own read accessible sysfs node (e.g. num_reads) *AND* is accessible via one of the stat files (zram<id>/stat or zram<id>/io_stat or zram<id>/mm_stat) is considered to be deprecated. User space is advised to use the following files to read the device statistics. Loading @@ -211,22 +184,41 @@ The stat file represents device's I/O statistics not accounted by block layer and, thus, not available in zram<id>/stat file. It consists of a single line of text and contains the following stats separated by whitespace: failed_reads failed_writes invalid_io notify_free failed_reads the number of failed reads failed_writes the number of failed writes invalid_io the number of non-page-size-aligned I/O requests notify_free Depending on device usage scenario it may account a) the number of pages freed because of swap slot free notifications or b) the number of pages freed because of REQ_DISCARD requests sent by bio. The former ones are sent to a swap block device when a swap slot is freed, which implies that this disk is being used as a swap disk. The latter ones are sent by filesystem mounted with discard option, whenever some data blocks are getting discarded. File /sys/block/zram<id>/mm_stat The stat file represents device's mm statistics. It consists of a single line of text and contains the following stats separated by whitespace: orig_data_size compr_data_size mem_used_total mem_limit mem_used_max zero_pages num_migrated orig_data_size uncompressed size of data stored in this disk. This excludes same-element-filled pages (same_pages) since no memory is allocated for them. Unit: bytes compr_data_size compressed size of data stored in this disk mem_used_total the amount of memory allocated for this disk. This includes allocator fragmentation and metadata overhead, allocated for this disk. So, allocator space efficiency can be calculated using compr_data_size and this statistic. Unit: bytes mem_limit the maximum amount of memory ZRAM can use to store the compressed data mem_used_max the maximum amount of memory zram have consumed to store the data same_pages the number of same element filled pages written to this disk. No memory is allocated for such pages. pages_compacted the number of pages freed during compaction huge_pages the number of incompressible pages 9) Deactivate: swapoff /dev/zram0 Loading @@ -241,5 +233,39 @@ line of text and contains the following stats separated by whitespace: resets the disksize to zero. You must set the disksize again before reusing the device. * Optional Feature = writeback With incompressible pages, there is no memory saving with zram. Instead, with CONFIG_ZRAM_WRITEBACK, zram can write incompressible page to backing storage rather than keeping it in memory. User should set up backing device via /sys/block/zramX/backing_dev before disksize setting. = memory tracking With CONFIG_ZRAM_MEMORY_TRACKING, user can know information of the zram block. It could be useful to catch cold or incompressible pages of the process with*pagemap. If you enable the feature, you could see block state via /sys/kernel/debug/zram/zram0/block_state". The output is as follows, 300 75.033841 .wh 301 63.806904 s.. 302 63.806919 ..h First column is zram's block index. Second column is access time since the system was booted Third column is state of the block. (s: same page w: written page to backing store h: huge page) First line of above example says 300th block is accessed at 75.033841sec and the block's state is huge so it is written back to the backing storage. It's a debugging feature so anyone shouldn't rely on it to work properly. Nitin Gupta ngupta@vflare.org
Makefile +1 −1 Original line number Diff line number Diff line VERSION = 4 PATCHLEVEL = 4 SUBLEVEL = 150 SUBLEVEL = 153 EXTRAVERSION = NAME = Blurry Fish Butt Loading
arch/arc/Makefile +1 −14 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ endif KBUILD_DEFCONFIG := nsim_700_defconfig cflags-y += -fno-common -pipe -fno-builtin -D__linux__ cflags-y += -fno-common -pipe -fno-builtin -mmedium-calls -D__linux__ cflags-$(CONFIG_ISA_ARCOMPACT) += -mA7 cflags-$(CONFIG_ISA_ARCV2) += -mcpu=archs Loading Loading @@ -137,16 +137,3 @@ dtbs: scripts archclean: $(Q)$(MAKE) $(clean)=$(boot) # Hacks to enable final link due to absence of link-time branch relexation # and gcc choosing optimal(shorter) branches at -O3 # # vineetg Feb 2010: -mlong-calls switched off for overall kernel build # However lib/decompress_inflate.o (.init.text) calls # zlib_inflate_workspacesize (.text) causing relocation errors. # Thus forcing all exten calls in this file to be long calls export CFLAGS_decompress_inflate.o = -mmedium-calls export CFLAGS_initramfs.o = -mmedium-calls ifdef CONFIG_SMP export CFLAGS_core.o = -mmedium-calls endif