zram: add incompressible flag to read_block_state()
JIRA: https://issues.redhat.com/browse/RHEL-29262 commit 77db7bb56bd711586243924a5582727f7a93fb7f Author: Sergey Senozhatsky <senozhatsky@chromium.org> Date: Wed Nov 9 20:50:47 2022 +0900 zram: add incompressible flag to read_block_state() Add a new flag to zram block state that shows if the page is incompressible: that none of the algorithm (including secondary ones) could compress it. Link: https://lkml.kernel.org/r/20221109115047.2921851-14-senozhatsky@chromium.org Suggested-by: Minchan Kim <minchan@kernel.org> Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org> Acked-by: Minchan Kim <minchan@kernel.org> Cc: Alexey Romanov <avromanov@sberdevices.ru> Cc: Nhat Pham <nphamcs@gmail.com> Cc: Nitin Gupta <ngupta@vflare.org> Cc: Suleiman Souhlal <suleiman@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Ming Lei <ming.lei@redhat.com>
This commit is contained in:
parent
d053cbd4e5
commit
2b75c55c22
|
@ -489,10 +489,11 @@ pages of the process with*pagemap.
|
||||||
If you enable the feature, you could see block state via
|
If you enable the feature, you could see block state via
|
||||||
/sys/kernel/debug/zram/zram0/block_state". The output is as follows::
|
/sys/kernel/debug/zram/zram0/block_state". The output is as follows::
|
||||||
|
|
||||||
300 75.033841 .wh..
|
300 75.033841 .wh...
|
||||||
301 63.806904 s....
|
301 63.806904 s.....
|
||||||
302 63.806919 ..hi.
|
302 63.806919 ..hi..
|
||||||
303 62.801919 ....r
|
303 62.801919 ....r.
|
||||||
|
304 146.781902 ..hi.n
|
||||||
|
|
||||||
First column
|
First column
|
||||||
zram's block index.
|
zram's block index.
|
||||||
|
@ -511,6 +512,8 @@ Third column
|
||||||
idle page
|
idle page
|
||||||
r:
|
r:
|
||||||
recompressed page (secondary compression algorithm)
|
recompressed page (secondary compression algorithm)
|
||||||
|
n:
|
||||||
|
none (including secondary) of algorithms could compress it
|
||||||
|
|
||||||
First line of above example says 300th block is accessed at 75.033841sec
|
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
|
and the block's state is huge so it is written back to the backing
|
||||||
|
|
|
@ -951,14 +951,16 @@ static ssize_t read_block_state(struct file *file, char __user *buf,
|
||||||
|
|
||||||
ts = ktime_to_timespec64(zram->table[index].ac_time);
|
ts = ktime_to_timespec64(zram->table[index].ac_time);
|
||||||
copied = snprintf(kbuf + written, count,
|
copied = snprintf(kbuf + written, count,
|
||||||
"%12zd %12lld.%06lu %c%c%c%c%c\n",
|
"%12zd %12lld.%06lu %c%c%c%c%c%c\n",
|
||||||
index, (s64)ts.tv_sec,
|
index, (s64)ts.tv_sec,
|
||||||
ts.tv_nsec / NSEC_PER_USEC,
|
ts.tv_nsec / NSEC_PER_USEC,
|
||||||
zram_test_flag(zram, index, ZRAM_SAME) ? 's' : '.',
|
zram_test_flag(zram, index, ZRAM_SAME) ? 's' : '.',
|
||||||
zram_test_flag(zram, index, ZRAM_WB) ? 'w' : '.',
|
zram_test_flag(zram, index, ZRAM_WB) ? 'w' : '.',
|
||||||
zram_test_flag(zram, index, ZRAM_HUGE) ? 'h' : '.',
|
zram_test_flag(zram, index, ZRAM_HUGE) ? 'h' : '.',
|
||||||
zram_test_flag(zram, index, ZRAM_IDLE) ? 'i' : '.',
|
zram_test_flag(zram, index, ZRAM_IDLE) ? 'i' : '.',
|
||||||
zram_get_priority(zram, index) ? 'r' : '.');
|
zram_get_priority(zram, index) ? 'r' : '.',
|
||||||
|
zram_test_flag(zram, index,
|
||||||
|
ZRAM_INCOMPRESSIBLE) ? 'n' : '.');
|
||||||
|
|
||||||
if (count < copied) {
|
if (count < copied) {
|
||||||
zram_slot_unlock(zram, index);
|
zram_slot_unlock(zram, index);
|
||||||
|
|
Loading…
Reference in New Issue