lkml.org 
[lkml]   [2015]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 6/6] zram: export new 'mm_stat' sysfs attrs
    Date
    Per-device `zram<id>/mm_stat' file provides accumulated mm 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):
    orig_data_size
    compr_data_size
    mem_used_total
    mem_limit
    mem_used_max
    zero_pages
    num_migrated

    Since now we have three stat files (block layer zram<id>/stat,
    zram<id>/io_stat and zram<id>/mm_stat) document WARNING about
    per-stat sysfs nodes being deprecated.

    Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    ---
    Documentation/ABI/testing/sysfs-block-zram | 8 ++++++++
    Documentation/blockdev/zram.txt | 18 +++++++++++++++++
    drivers/block/zram/zram_drv.c | 31 ++++++++++++++++++++++++++++++
    3 files changed, 57 insertions(+)

    diff --git a/Documentation/ABI/testing/sysfs-block-zram b/Documentation/ABI/testing/sysfs-block-zram
    index a7f622f..8114c81 100644
    --- a/Documentation/ABI/testing/sysfs-block-zram
    +++ b/Documentation/ABI/testing/sysfs-block-zram
    @@ -158,3 +158,11 @@ Description:
    statistics not accounted by block layer. For example,
    failed_reads, failed_writes, etc. File format is similar to
    block layer statistics file format.
    +
    +What: /sys/block/zram<id>/mm_stat
    +Date: August 2015
    +Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    +Description:
    + The mm_stat file is read-only and accumulates device's mm
    + statistics (orig_data_size, compr_data_size, etc.) in a format
    + similar to block layer statistics file format.
    diff --git a/Documentation/blockdev/zram.txt b/Documentation/blockdev/zram.txt
    index eb62792..faf6270 100644
    --- a/Documentation/blockdev/zram.txt
    +++ b/Documentation/blockdev/zram.txt
    @@ -148,6 +148,10 @@ num_migrated RO the number of objects migrated by compaction
    compact WO trigger memory compaction


    +WARNING, per-stat sysfs attributes are considered to be deprecated and will
    +eventually be removed. User space is advised to use the following files to
    +read the device statistics.
    +
    File /sys/block/zram<id>/stat

    Represents block layer statistics. Read Documentation/block/stat.txt for
    @@ -165,6 +169,20 @@ whitespace:
    invalid_io
    notify_free

    +
    +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
    +
    +
    9) Deactivate:
    swapoff /dev/zram0
    umount /dev/zram1
    diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
    index c02121f..7493096 100644
    --- a/drivers/block/zram/zram_drv.c
    +++ b/drivers/block/zram/zram_drv.c
    @@ -402,7 +402,37 @@ static ssize_t io_stat_show(struct device *dev,
    return ret;
    }

    +static ssize_t mm_stat_show(struct device *dev,
    + struct device_attribute *attr, char *buf)
    +{
    + struct zram *zram = dev_to_zram(dev);
    + u64 orig_size, mem_used = 0;
    + long max_used;
    + ssize_t ret;
    +
    + down_read(&zram->init_lock);
    + if (init_done(zram))
    + mem_used = zs_get_total_pages(zram->meta->mem_pool);
    +
    + orig_size = atomic64_read(&zram->stats.pages_stored);
    + max_used = atomic_long_read(&zram->stats.max_used_pages);
    +
    + ret = scnprintf(buf, PAGE_SIZE,
    + "%8llu %8llu %8llu %8lu %8ld %8llu %8llu\n",
    + orig_size << PAGE_SHIFT,
    + (u64)atomic64_read(&zram->stats.compr_data_size),
    + mem_used << PAGE_SHIFT,
    + zram->limit_pages << PAGE_SHIFT,
    + max_used << PAGE_SHIFT,
    + (u64)atomic64_read(&zram->stats.zero_pages),
    + (u64)atomic64_read(&zram->stats.num_migrated));
    + up_read(&zram->init_lock);
    +
    + return ret;
    +}
    +
    static DEVICE_ATTR_RO(io_stat);
    +static DEVICE_ATTR_RO(mm_stat);
    ZRAM_ATTR_RO(num_reads);
    ZRAM_ATTR_RO(num_writes);
    ZRAM_ATTR_RO(failed_reads);
    @@ -1105,6 +1135,7 @@ static struct attribute *zram_disk_attrs[] = {
    &dev_attr_max_comp_streams.attr,
    &dev_attr_comp_algorithm.attr,
    &dev_attr_io_stat.attr,
    + &dev_attr_mm_stat.attr,
    NULL,
    };

    --
    2.3.2.209.gd67f9d5


    \
     
     \ /
      Last update: 2015-03-10 16:41    [W:4.656 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site