From patchwork Fri Sep 1 07:19:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ze Zuo X-Patchwork-Id: 13372127 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id DC1A2CA0FE6 for ; Fri, 1 Sep 2023 07:20:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0C71A8D0021; Fri, 1 Sep 2023 03:20:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 04FE98D0002; Fri, 1 Sep 2023 03:20:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E59518D0021; Fri, 1 Sep 2023 03:20:05 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D2D528D0002 for ; Fri, 1 Sep 2023 03:20:05 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 9B5AD40175 for ; Fri, 1 Sep 2023 07:20:05 +0000 (UTC) X-FDA: 81187179570.11.2F93BC1 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by imf29.hostedemail.com (Postfix) with ESMTP id 9499E12001F for ; Fri, 1 Sep 2023 07:20:02 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf29.hostedemail.com: domain of zuoze1@huawei.com designates 45.249.212.188 as permitted sender) smtp.mailfrom=zuoze1@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1693552803; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CMlUY3/oje4BEaNBiMgZWMuCdr4KFDjvzGns/O9JbjY=; b=vqRNWQBoWkb/Zf8KTMjP3bTrG/lrlYEryUXkadpLStNS3nP0+DQpc2nVPuDlv73+v60+sf KMRl/yCl8jDOv2TOk13bqTWKviU3WzKmKMt++li3Q5+8say7+lk80UXhOCIGTlvQ0ipvOY Iem7TTb91Anq6wW4YrJpK0UC0rHNMX8= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf29.hostedemail.com: domain of zuoze1@huawei.com designates 45.249.212.188 as permitted sender) smtp.mailfrom=zuoze1@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1693552803; a=rsa-sha256; cv=none; b=u0rRZoFB5YABlZBLuZVggRznEvI1n1tRiUB2nXDhEgoG/rne0jY7G4VANbppl4nHuJ0myD hJj2C4lh8oMZznd2EYdfhvbXAJdAF4lnsgdQ99SfViHV6an1f0MI6Lc1W8OK1Y1Dwo3uNh f+RMRp6Z+vmeH7PNFDqf9shLF9hdTkI= Received: from kwepemi500002.china.huawei.com (unknown [172.30.72.57]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4RcTpq4lNJzNn2R; Fri, 1 Sep 2023 15:16:19 +0800 (CST) Received: from localhost.localdomain (10.175.112.125) by kwepemi500002.china.huawei.com (7.221.188.171) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.31; Fri, 1 Sep 2023 15:19:57 +0800 From: Ze Zuo To: , , CC: , , , , , , , Subject: [PATCH 1/2] zram: add a parameter "node_id" for zram Date: Fri, 1 Sep 2023 15:19:41 +0800 Message-ID: <20230901071942.207010-2-zuoze1@huawei.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230901071942.207010-1-zuoze1@huawei.com> References: <20230901071942.207010-1-zuoze1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.112.125] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To kwepemi500002.china.huawei.com (7.221.188.171) X-CFilter-Loop: Reflected X-Rspamd-Queue-Id: 9499E12001F X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: f5zzmhhexctbppnqxieuxwnh79uccjzq X-HE-Tag: 1693552802-569208 X-HE-Meta: U2FsdGVkX19n1DGYTlFc5BceYh6uWOZ1TpHgggh3Wv6QpfGHXUL52KIG9xhBc7Bvp/M9T5gvqmPiY/ikTl7hNlXL3vV8p/7iRl3ByzClAN0Z8O5h2VTjIiAT11vXcF8JJ6CX+PKphhrNsYqlpqvI8mCk6RqhwSabaFaLdKdVIIRK1p7I2NMxgtV1yzBdGZfwgaaOmAwbxWoTvel83K6TgIbpulvXF48cZX9/tpzisdC8DHfa6896Hlln4vdd71c0HH8csE2sFOsiZ5sNqsev0Mr4LNzyW5Spu9Dnl/Rn550y7z1tuJqqQkUQvbaG6xm9QJytom4a7YSrI/hgS4Q1Y6swv8GePg4ieK3CigYxAJqNPAErp9WIoN8R7NjuvbNjdEN8iXk7L1Np23wf1EI80oUE5rH8zvwqav0I95HKVTK9Dvo2SoNfy9AvNOTINPWmeXm/HIzRSg64LHSxQcKy8lIi6XT3Tyn58FqEqHU/CFy+ZooeRnCvrRfC3tr2RNg4jl92q3b60QjkQHbBrI2jTFtxZeHodOm6ptnmhz5cETIntqhMHIvd78P7Zud3NuLag5ORRtpHbktOpSmTMOj0yDHAlSOmYAS2GGRlK6UaWetpNObF9H9ygY/sub8h8X64/Cfl1CRYHW7huMWvTtntVTfgBUKQwVB3BFQSdkMG/iiaT5aGy2GnG/5JDAu8QiRqkASyAf7+3skL0ybzCUJBz9o/SR4kAgQ1XN4XvlU2pTEUcx3+lEcUerF47GMblUEoRKLeJcuydn0JdR/uqi8V8cZeiGJwOZhCyXXwxJYXMPcx1RVUEDnUznwjY3nTDo0bbhG8Ib7KVlbFjuqLjn5TWB5JvBwQxxHi3RPjOxdWArN/PqUwcKSH2NyDT94ZXE6ELd5hyd9ryKwC4rn11c1w/SUQI+pLj70ka2REYFHJRUqsUhZU6njr5/ktN/mNPUtv2I51N+545PRAQe5KfGt A+1gNa9z aM88uV17e9aBD1RyYd2XTJ6tRfA9LkmwfbLBkORv1dV0DNDCqfjeQF9pRJxmqg62L1sT7IqO9Lt614KgVSzU0e6Pb1HvpoCESHyMQ/XRn2TV2rv40N+Avx/4kF0tJf1XWg4gbce+NtG4uowXmzNYXNZHuwF2UGq7Sxh1XZq4s5emPWodGOQVX14KwrfGQRiLZ/wTO X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: 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 Signed-off-by: Kefeng Wang --- 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; From patchwork Fri Sep 1 07:19:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ze Zuo X-Patchwork-Id: 13372129 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6FA76CA0FE6 for ; Fri, 1 Sep 2023 07:20:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D99378D0023; Fri, 1 Sep 2023 03:20:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D20ED8D0022; Fri, 1 Sep 2023 03:20:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B75878D0023; Fri, 1 Sep 2023 03:20:09 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id A0A988D0022 for ; Fri, 1 Sep 2023 03:20:09 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 6913012015D for ; Fri, 1 Sep 2023 07:20:09 +0000 (UTC) X-FDA: 81187179738.10.F0FA268 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf16.hostedemail.com (Postfix) with ESMTP id 0FAAD180024 for ; Fri, 1 Sep 2023 07:20:06 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=none; spf=pass (imf16.hostedemail.com: domain of zuoze1@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=zuoze1@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1693552807; a=rsa-sha256; cv=none; b=Y55AEWkBa73EdAYrOw2U+aFXQvoFOHY298jZ3es6IvEf6bfNJmPI+vI1OlwH9Gub21nInf 9eV3H7uY5xKGO3E4VXfu6gN+hPrh4+6TmzJBeRF7fDHc6L8iAFsNqe1i4SsPOiPp13r+a4 18vzV/Q40ofVjLvixGw7FzUs0cG5EiM= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=none; spf=pass (imf16.hostedemail.com: domain of zuoze1@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=zuoze1@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1693552807; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HFJRC4la27KnwjPMFYKF6HEaLmgN63X/p33IyH6z9pI=; b=4nAzjqYfz//9UcG05jyuemvNR+hj0Zw0E26hpMQ+TrUD4ZDxKyIkSs35ZLVbHbGO3hkbz9 3X20AO0vBhOJA8uShvhX8y8eZG7F8ZnaPbzvpG7LJ65h5DK4Zd0zjn26MCXBclJrYrSnU6 FWOY5MZHAXm51To353OoqTT5ZxEPc7E= Received: from kwepemi500002.china.huawei.com (unknown [172.30.72.56]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4RcTpb6h5vzhZHN; Fri, 1 Sep 2023 15:16:07 +0800 (CST) Received: from localhost.localdomain (10.175.112.125) by kwepemi500002.china.huawei.com (7.221.188.171) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.31; Fri, 1 Sep 2023 15:20:00 +0800 From: Ze Zuo To: , , CC: , , , , , , , Subject: [PATCH 2/2] zram: take the benefit of kvzalloc_node Date: Fri, 1 Sep 2023 15:19:42 +0800 Message-ID: <20230901071942.207010-3-zuoze1@huawei.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230901071942.207010-1-zuoze1@huawei.com> References: <20230901071942.207010-1-zuoze1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.112.125] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To kwepemi500002.china.huawei.com (7.221.188.171) X-CFilter-Loop: Reflected X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 0FAAD180024 X-Stat-Signature: jr9wy1gin9mr8uo3x1hasepd3hqu1r13 X-HE-Tag: 1693552806-1051 X-HE-Meta: U2FsdGVkX1+pXG1nU3ND8C5PN4t6kRn2gH1vQk5a86VSm//nJATYJJN2XZn2PKKwnJvcGd8ZoVmdO+JfSuFid+Ak47sbFskV3Gew5HclHpTSHuJ6vMFdntifG/IKBffC6h0QVfJBFppLqKg4+ef3656tNKXPUEkE72uiJGi8vZbAD1Vmb8sTqGHiDcaGpfrPA9DArqX9aWXkewVgYztZvsy+BMcNKOrzadtReQqye8IVA5UJBIibnjex/iowtcIf4U+fkrSMLNyyYTP/Q/CeA7mdQUHZKiSGckrXgjvOTF8376J0eEJB7UzXbavZhXeVMsVS3IuWhF8/YmiZBWxrCkOnYIwzG7IHsyEyotOr8nIQKSOgqlSC94yVLOtwRPEgdTASNtoN9fuW4OvrqTUr+hiNzi5R0U5xGm+aM5EbC9B1+pkjE176iUM+NU3BXcqkd1GD/6Hw7CLIqZDkJCh8fTmVPklJ2dJP6TB384fHnVFoh4MDmBz1i90Vh+lLyW4M5iVyb6RaRUtxusU1jvPsXaBM24FI+V50gB9OMJQqqKS3JTOnyA8E++t94xEcVHauXBvYlYs9akYRkeS+zWV7oMBR6D6TUCxVBNay+QCuvEyMRl9Cydb9shHhcpgIq+LLfeYs9Z1+hw2rIQRT6BbDICrBq42mvyJUOGhxaGbAdaT8mqizHQAlPjneVZ0HeFv46agUNO/AHtCdxk1Cpa4+74Ak+3WkCU6BMj5rM2LiMPCETkupDMgunlM5EKScX2Sn2t3CN1MeG3bkGTrft7UbK8qMIiERzsq887PeNxsRRgWg1rGLM0lP1v7I/jLRQeIp79itFoT62bQY//xLUsHMjOHny5sV8fMBQ2JsUzc5kVtQkeNHdXpt4xGDtMDAzK3jES9d5uzmY075pzuRPl/7F7W+OE8CQiaIpllT5j1zNxMx464nNNUybiSSyz5eRIMHHxEy2ie6VugTQHLcd4J +lMLpqh3 MUi4mwwvowxKJh243Ukg8jRzEVidjLwLH/DWAPJO9CIFRkTO62WUrIRTkhzQtBu2p/c49rbzuulzwd/aZg4vF/4FNu5b9uD6hT0o4UjnEi9loEJvu77BqxTk6tiqH0Y3i+SM7381TzOpdwPNcZnNIEtKfLBd9HwWAbJYuYuXegSoJCo5hObHr6dkBFOuABTPF3CsF X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Using kvzalloc and zram can benefit from huge page table mapping, so lets use kvzalloc_node/kvfree instead of vzalloc_node/vfree. Signed-off-by: Ze Zuo Signed-off-by: Kefeng Wang --- drivers/block/zram/zram_drv.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index 692993e48e93..97241f166324 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -1249,7 +1249,7 @@ static void zram_meta_free(struct zram *zram, u64 disksize) zram_free_page(zram, index); zs_destroy_pool(zram->mem_pool); - vfree(zram->table); + kvfree(zram->table); } static bool zram_meta_alloc(struct zram *zram, u64 disksize) @@ -1257,13 +1257,14 @@ static bool zram_meta_alloc(struct zram *zram, u64 disksize) size_t num_pages; num_pages = disksize >> PAGE_SHIFT; - zram->table = vzalloc_node(array_size(num_pages, sizeof(*zram->table)), node_id); + zram->table = kvzalloc_node(array_size(num_pages, sizeof(*zram->table)), + GFP_KERNEL, node_id); if (!zram->table) return false; zram->mem_pool = zs_create_pool(zram->disk->disk_name); if (!zram->mem_pool) { - vfree(zram->table); + kvfree(zram->table); return false; }