From: Ze Zuo <zuoze1@huawei.com>
To: <minchan@kernel.org>, <senozhatsky@chromium.org>, <axboe@kernel.dk>
Cc: <akpm@linux-foundation.org>, <ying.huang@intel.com>,
<aneesh.kumar@linux.ibm.com>, <linux-mm@kvack.org>,
<linux-kernel@vger.kernel.org>, <linux-block@vger.kernel.org>,
<wangkefeng.wang@huawei.com>, <zuoze1@huawei.com>
Subject: [PATCH 1/2] zram: add a parameter "node_id" for zram
Date: Fri, 1 Sep 2023 15:19:41 +0800 [thread overview]
Message-ID: <20230901071942.207010-2-zuoze1@huawei.com> (raw)
In-Reply-To: <20230901071942.207010-1-zuoze1@huawei.com>
Add a parameter "node_id" to zram to support storing pages on specific
node_id node memory.
Now, zram memory allocation is random, however in some cases, specifying
specific nodes for memory allocation for zram may have good effects. In
addition, when memory tier is supported, demotion can be achieved not
only through page migration, it is also possible to apply for memory by
specifying zram on low-speed device nodes, such as CXL memory devices,
and compressing pages to these devices through memory reclamation to
achieve similar effects to migration.
Signed-off-by: Ze Zuo <zuoze1@huawei.com>
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
drivers/block/zram/zram_drv.c | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 06673c6ca255..692993e48e93 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -45,6 +45,8 @@ static const char *default_compressor = CONFIG_ZRAM_DEF_COMP;
/* Module params (documentation at end) */
static unsigned int num_devices = 1;
+
+static int node_id = NUMA_NO_NODE;
/*
* Pages that compress to sizes equals or greater than this are stored
* uncompressed in memory.
@@ -53,6 +55,28 @@ static size_t huge_class_size;
static const struct block_device_operations zram_devops;
+static int zram_node_id_store(const char *val,
+ const struct kernel_param *kp)
+{
+ int ret, nid;
+
+ ret = kstrtoint(val, 10, &nid);
+ if (ret)
+ return ret;
+ if (nid != NUMA_NO_NODE && !node_online(nid))
+ return -EINVAL;
+ node_id = nid;
+ return 0;
+}
+
+static const struct kernel_param_ops node_id_param_ops = {
+ .set = zram_node_id_store,
+ .get = param_get_int,
+};
+
+module_param_cb(node_id, &node_id_param_ops, &node_id, 0600);
+MODULE_PARM_DESC(node_id, "The node of pre-created zram devices memory alloc");
+
static void zram_free_page(struct zram *zram, size_t index);
static int zram_read_page(struct zram *zram, struct page *page, u32 index,
struct bio *parent);
@@ -1233,7 +1257,7 @@ static bool zram_meta_alloc(struct zram *zram, u64 disksize)
size_t num_pages;
num_pages = disksize >> PAGE_SHIFT;
- zram->table = vzalloc(array_size(num_pages, sizeof(*zram->table)));
+ zram->table = vzalloc_node(array_size(num_pages, sizeof(*zram->table)), node_id);
if (!zram->table)
return false;
--
2.25.1
next prev parent reply other threads:[~2023-09-01 7:20 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-01 7:19 [PATCH 0/2] zram: support for specific numa node " Ze Zuo
2023-09-01 7:19 ` Ze Zuo [this message]
2023-09-02 22:55 ` [PATCH 1/2] zram: add a parameter "node_id" " Andrew Morton
2023-09-05 5:01 ` Sergey Senozhatsky
2023-09-01 7:19 ` [PATCH 2/2] zram: take the benefit of kvzalloc_node Ze Zuo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230901071942.207010-2-zuoze1@huawei.com \
--to=zuoze1@huawei.com \
--cc=akpm@linux-foundation.org \
--cc=aneesh.kumar@linux.ibm.com \
--cc=axboe@kernel.dk \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=minchan@kernel.org \
--cc=senozhatsky@chromium.org \
--cc=wangkefeng.wang@huawei.com \
--cc=ying.huang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox