[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1638356341-17014-1-git-send-email-huangzhaoyang@gmail.com>
Date: Wed, 1 Dec 2021 18:59:01 +0800
From: Huangzhaoyang <huangzhaoyang@...il.com>
To: Nitin Gupta <ngupta@...are.org>,
Sergey Senozhatsky <senozhatsky@...omium.org>,
Jens Axboe <axboe@...nel.dk>,
Johannes Weiner <hannes@...xchg.org>,
Minchan Kim <minchan@...nel.org>,
Zhaoyang Huang <zhaoyang.huang@...soc.com>, linux-mm@...ck.org,
linux-kernel@...r.kernel.org
Subject: [RFC PATCH] mm: count zram read/write into PSI_IO_WAIT
From: Zhaoyang Huang <zhaoyang.huang@...soc.com>
Have zram reading/writing be counted in PSI_IO_WAIT.
Signed-off-by: Zhaoyang Huang <zhaoyang.huang@...soc.com>
---
drivers/block/zram/zram_drv.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index fcaf275..b0e4766 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -34,6 +34,7 @@
#include <linux/debugfs.h>
#include <linux/cpuhotplug.h>
#include <linux/part_stat.h>
+#include <linux/psi.h>
#include "zram_drv.h"
@@ -1246,7 +1247,9 @@ static int __zram_bvec_read(struct zram *zram, struct page *page, u32 index,
zram_get_element(zram, index),
bio, partial_io);
}
-
+#ifdef CONFIG_PSI
+ psi_task_change(current, 0, TSK_IOWAIT);
+#endif
handle = zram_get_handle(zram, index);
if (!handle || zram_test_flag(zram, index, ZRAM_SAME)) {
unsigned long value;
@@ -1257,6 +1260,9 @@ static int __zram_bvec_read(struct zram *zram, struct page *page, u32 index,
zram_fill_page(mem, PAGE_SIZE, value);
kunmap_atomic(mem);
zram_slot_unlock(zram, index);
+#ifdef CONFIG_PSI
+ psi_task_change(current, TSK_IOWAIT, 0);
+#endif
return 0;
}
@@ -1284,6 +1290,9 @@ static int __zram_bvec_read(struct zram *zram, struct page *page, u32 index,
if (WARN_ON(ret))
pr_err("Decompression failed! err=%d, page=%u\n", ret, index);
+#ifdef CONFIG_PSI
+ psi_task_change(current, TSK_IOWAIT, 0);
+#endif
return ret;
}
@@ -1471,7 +1480,13 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec,
vec.bv_offset = 0;
}
+#ifdef CONFIG_PSI
+ psi_task_change(current, 0, TSK_IOWAIT);
+#endif
ret = __zram_bvec_write(zram, &vec, index, bio);
+#ifdef CONFIG_PSI
+ psi_task_change(current, TSK_IOWAIT, 0);
+#endif
out:
if (is_partial_io(bvec))
__free_page(page);
@@ -1607,7 +1622,6 @@ static blk_qc_t zram_submit_bio(struct bio *bio)
atomic64_inc(&zram->stats.invalid_io);
goto error;
}
-
__zram_make_request(zram, bio);
return BLK_QC_T_NONE;
--
1.9.1
Powered by blists - more mailing lists