提交 2f6a3bed 编写于 作者: S Sergey Senozhatsky 提交者: Linus Torvalds

zram: export new 'io_stat' sysfs attrs

Per-device `zram<id>/io_stat' file provides accumulated I/O statistics of
particular zram device in a format similar to block layer statistics.  The
file consists of a single line and represents the following stats
(separated by whitespace):

        failed_reads
        failed_writes
        invalid_io
        notify_free
Signed-off-by: NSergey Senozhatsky <sergey.senozhatsky@gmail.com>
Acked-by: NMinchan Kim <minchan@kernel.org>
Cc: Nitin Gupta <ngupta@vflare.org>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 77ba015f
...@@ -149,3 +149,12 @@ Description: ...@@ -149,3 +149,12 @@ Description:
The compact file is write-only and trigger compaction for The compact file is write-only and trigger compaction for
allocator zrm uses. The allocator moves some objects so that allocator zrm uses. The allocator moves some objects so that
it could free fragment space. it could free fragment space.
What: /sys/block/zram<id>/io_stat
Date: August 2015
Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Description:
The io_stat file is read-only and accumulates device's I/O
statistics not accounted by block layer. For example,
failed_reads, failed_writes, etc. File format is similar to
block layer statistics file format.
...@@ -133,6 +133,17 @@ File /sys/block/zram<id>/stat ...@@ -133,6 +133,17 @@ File /sys/block/zram<id>/stat
Represents block layer statistics. Read Documentation/block/stat.txt for Represents block layer statistics. Read Documentation/block/stat.txt for
details. details.
File /sys/block/zram<id>/io_stat
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
8) Deactivate: 8) Deactivate:
swapoff /dev/zram0 swapoff /dev/zram0
umount /dev/zram1 umount /dev/zram1
......
...@@ -1033,6 +1033,25 @@ static DEVICE_ATTR_RW(mem_used_max); ...@@ -1033,6 +1033,25 @@ static DEVICE_ATTR_RW(mem_used_max);
static DEVICE_ATTR_RW(max_comp_streams); static DEVICE_ATTR_RW(max_comp_streams);
static DEVICE_ATTR_RW(comp_algorithm); static DEVICE_ATTR_RW(comp_algorithm);
static ssize_t io_stat_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct zram *zram = dev_to_zram(dev);
ssize_t ret;
down_read(&zram->init_lock);
ret = scnprintf(buf, PAGE_SIZE,
"%8llu %8llu %8llu %8llu\n",
(u64)atomic64_read(&zram->stats.failed_reads),
(u64)atomic64_read(&zram->stats.failed_writes),
(u64)atomic64_read(&zram->stats.invalid_io),
(u64)atomic64_read(&zram->stats.notify_free));
up_read(&zram->init_lock);
return ret;
}
static DEVICE_ATTR_RO(io_stat);
ZRAM_ATTR_RO(num_reads); ZRAM_ATTR_RO(num_reads);
ZRAM_ATTR_RO(num_writes); ZRAM_ATTR_RO(num_writes);
ZRAM_ATTR_RO(failed_reads); ZRAM_ATTR_RO(failed_reads);
...@@ -1060,6 +1079,7 @@ static struct attribute *zram_disk_attrs[] = { ...@@ -1060,6 +1079,7 @@ static struct attribute *zram_disk_attrs[] = {
&dev_attr_mem_used_max.attr, &dev_attr_mem_used_max.attr,
&dev_attr_max_comp_streams.attr, &dev_attr_max_comp_streams.attr,
&dev_attr_comp_algorithm.attr, &dev_attr_comp_algorithm.attr,
&dev_attr_io_stat.attr,
NULL, NULL,
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册