This patch introduces rework to zram stats. We have per-stat sysfs nodes, and it makes things a bit hard to use in user space: it doesn't give an immediate stats 'snapshot', it requires user space to use more syscalls - open, read, close for every stat file, with appropriate error checks on every step, etc. First, zram now accounts block layer statistics, available in /sys/block/zram<id>/stat and /proc/diskstats files. So some new stats are available (see Documentation/block/stat.txt), besides, zram's activities now can be monitored by sysstat's iostat or similar tools. Example: cat /sys/block/zram0/stat 248 0 1984 0 251029 0 2008232 5120 0 5116 5116 Second, group currently exported on per-stat basis nodes into two categories (files): -- zram<id>/io_stat accumulates device's IO stats, that are not accounted by block layer, and contains: failed_reads failed_writes invalid_io notify_free Example: cat /sys/block/zram0/io_stat 0 0 0 652572 -- zram<id>/mm_stat accumulates zram mm stats and contains: orig_data_size compr_data_size mem_used_total mem_limit mem_used_max zero_pages num_migrated Example: cat /sys/block/zram0/mm_stat 434634752 270288572 279158784 0 579895296 15060 0 per-stat sysfs nodes are now considered to be deprecated and we plan to remove them (and clean up some of the existing stat code) in two years (as of now, there is no warning printed to syslog about deprecated stats being used). User space is advised to use the above mentioned 3 files. This patch (of 7): Remove sysfs `num_migrated' attribute. We are moving away from per-stat device attrs towards 3 stat files that will accumulate io and mm stats in a format similar to block layer statistics in /sys/block/<dev>/stat. That will be easier to use in user space, and reduce the number of syscalls needed to read zram device statistics. `num_migrated' will return back in zram<id>/mm_stat file. Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Acked-by: Minchan Kim <minchan@kernel.org> Cc: Nitin Gupta <ngupta@vflare.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
151 lines
5.2 KiB
Text
151 lines
5.2 KiB
Text
What: /sys/block/zram<id>/disksize
|
|
Date: August 2010
|
|
Contact: Nitin Gupta <ngupta@vflare.org>
|
|
Description:
|
|
The disksize file is read-write and specifies the disk size
|
|
which represents the limit on the *uncompressed* worth of data
|
|
that can be stored in this disk.
|
|
Unit: bytes
|
|
|
|
What: /sys/block/zram<id>/initstate
|
|
Date: August 2010
|
|
Contact: Nitin Gupta <ngupta@vflare.org>
|
|
Description:
|
|
The initstate file is read-only and shows the initialization
|
|
state of the device.
|
|
|
|
What: /sys/block/zram<id>/reset
|
|
Date: August 2010
|
|
Contact: Nitin Gupta <ngupta@vflare.org>
|
|
Description:
|
|
The reset file is write-only and allows resetting the
|
|
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>
|
|
Description:
|
|
The max_comp_streams file is read-write and specifies the
|
|
number of backend's zcomp_strm compression streams (number of
|
|
concurrent compress operations).
|
|
|
|
What: /sys/block/zram<id>/comp_algorithm
|
|
Date: February 2014
|
|
Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
|
|
Description:
|
|
The comp_algorithm file is read-write and lets to show
|
|
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.
|
|
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
|
|
|
|
What: /sys/block/zram<id>/compact
|
|
Date: August 2015
|
|
Contact: Minchan Kim <minchan@kernel.org>
|
|
Description:
|
|
The compact file is write-only and trigger compaction for
|
|
allocator zrm uses. The allocator moves some objects so that
|
|
it could free fragment space.
|