From patchwork Thu Feb 8 02:25:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kefeng Wang X-Patchwork-Id: 13549221 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 B0944C4828D for ; Thu, 8 Feb 2024 02:25:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 495496B007D; Wed, 7 Feb 2024 21:25:28 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 445756B007E; Wed, 7 Feb 2024 21:25:28 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 335316B0080; Wed, 7 Feb 2024 21:25:28 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 244526B007D for ; Wed, 7 Feb 2024 21:25:28 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id C5057140AF3 for ; Thu, 8 Feb 2024 02:25:27 +0000 (UTC) X-FDA: 81767045094.20.CF8F984 Received: from szxga06-in.huawei.com (szxga06-in.huawei.com [45.249.212.32]) by imf21.hostedemail.com (Postfix) with ESMTP id CA5791C000F for ; Thu, 8 Feb 2024 02:25:24 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=none; spf=pass (imf21.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.32 as permitted sender) smtp.mailfrom=wangkefeng.wang@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=1707359126; 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=pKtieT9Xfh+dNAigZyIY/2W1v9gSnKJgWp/eI8Aki4g=; b=FrkUcg9DhSUewdw/v8WYYrCoAQ+7M8JQwxVXq4UWvUkatP62D/TQ0TfIgx5Ia//xth3s0v ydnmKcvlqqquv6h+iYXU3KxJZEVtNInpQlqfoIL7hvuEQPcqghUiDFuaqeL3rTD+6ISz8u qroJZTGdGuwOz738jQGauOoV+z7FiuQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707359126; a=rsa-sha256; cv=none; b=jxp/cuQwvLk9RNPlXYI+MZpNCTuGA//KUCEfH0uVdFHyDmY+giak9boYEgLRmOzKC2bBzK m/R6Lu1DK/NJ9groFiGI5f5mFR7AKdhToHUPScT+ZQA2YUqV22vyDuc7ukFkAthNpoEqrF A0r4DmNESeeh0fxFCQ059VZdWETAlkM= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=none; spf=pass (imf21.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.32 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com Received: from mail.maildlp.com (unknown [172.19.88.214]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4TVgmh01vhz1vtQm; Thu, 8 Feb 2024 10:24:52 +0800 (CST) Received: from dggpemm100001.china.huawei.com (unknown [7.185.36.93]) by mail.maildlp.com (Postfix) with ESMTPS id 69CE41A016B; Thu, 8 Feb 2024 10:25:20 +0800 (CST) Received: from localhost.localdomain (10.175.112.125) by dggpemm100001.china.huawei.com (7.185.36.93) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 8 Feb 2024 10:25:20 +0800 From: Kefeng Wang To: Andrew Morton , CC: Kefeng Wang Subject: [PATCH] mm: compaction: early termination in compact_nodes() Date: Thu, 8 Feb 2024 10:25:08 +0800 Message-ID: <20240208022508.1771534-1-wangkefeng.wang@huawei.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20240207095841.1648144-1-wangkefeng.wang@huawei.com> References: <20240207095841.1648144-1-wangkefeng.wang@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 dggpemm100001.china.huawei.com (7.185.36.93) X-Rspamd-Queue-Id: CA5791C000F X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: zr6y15w68skk4xkxz5w69rhr9hm4tpg5 X-HE-Tag: 1707359124-550294 X-HE-Meta: U2FsdGVkX18ZyxVFUsuiSK0WEQAuPox64NfBCDRSYHFZUCfxqiQVz/F0NRTJYondbia53gdztlCecYYOhlSSC/YGb8mulNyB74devTqUbbGGE0+PU9MQ2g+XoE6vPunyMdJTEBLTP6I3EBg1m5w5LNW4xiqbJqRTu2mfE1/IFdCNQAQrI7WM7n0/uJPtc4axjfpNoXXtf/+fNBMRPFgdss5Qc9HkFDxDIbnvayk+HUbuBD1Z2jJSTwPyXh7w3B5XY/QhemsFyQqo9IJ7mMY4ERGTRJbzQchtBBRw2FO81AlNF+jHvZpyEqHDrVAJ+0/5uh/qnbmskeSTrcwuLNlLxIFp4ALqjwa1u/ApftsmByIUT/AgkDJJH/nPUdI5RDDjlHSyYdG2rjfKjSETFOQiQGemUMnbxqLHjOIDAvjaEBufj1IyDgrsMerMeGxo/InBzWJr/PftsZR69NTQ1wPExrn5fUsFgo+1dY1cCq86S42+Pwc6jdK8ezo13yb/pS9jXudlFZKSW4S8lxuJHJyCh/RXia9NGBsOXOYLlCjIiTeZeLJLKVc7FalRxEdVaC7OtC7QY8TFebCJai3DUZQImpcBJjQY77e6Xo97+9BneuPeuQpguPHg1pnZUnmikIPmgKLsyc+w+/YZ+uJIoPSoJ0s1G7fss2+XFh1Xa8mlpzWv8ptxTwWqQqGpC23ENu7dDBy1UFkoXYeW+u/1Z2tOjGWz4xpQZj79d6XDM1lsyxZ70d/QUb7VuUTjjZC9B1TO1Hmajqkqto+RHUYogfilMISgam/BhSx2E2wm0YveRRwER5coZs6Ok+5zjqrhGOv1h2ROOs1c/R5D+1/zfw7dy3xGxnrs4nAx+0oWd63jxDFFnQtAjL4ZMadnjhJwQmgULoREolZOpos= 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: List-Subscribe: List-Unsubscribe: No need to continue try compact memory if pending fatal signal, allow loop termination earlier in compact_nodes(). Signed-off-by: Kefeng Wang --- mm/compaction.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/mm/compaction.c b/mm/compaction.c index de882ecb61c5..52e75f8ac7e7 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -2895,7 +2895,7 @@ enum compact_result try_to_compact_pages(gfp_t gfp_mask, unsigned int order, * reaching score targets due to various back-off conditions, such as, * contention on per-node or per-zone locks. */ -static void compact_node(pg_data_t *pgdat, bool proactive) +static int compact_node(pg_data_t *pgdat, bool proactive) { int zoneid; struct zone *zone; @@ -2913,6 +2913,9 @@ static void compact_node(pg_data_t *pgdat, bool proactive) if (!populated_zone(zone)) continue; + if (fatal_signal_pending(current)) + return -EINTR; + cc.zone = zone; compact_zone(&cc, NULL); @@ -2924,18 +2927,25 @@ static void compact_node(pg_data_t *pgdat, bool proactive) cc.total_free_scanned); } } + + return 0; } /* Compact all zones of all nodes in the system */ -static void compact_nodes(void) +static int compact_nodes(void) { - int nid; + int ret, nid; /* Flush pending updates to the LRU lists */ lru_add_drain_all(); - for_each_online_node(nid) - compact_node(NODE_DATA(nid), false); + for_each_online_node(nid) { + ret = compact_node(NODE_DATA(nid), false); + if (ret) + return ret; + } + + return 0; } static int compaction_proactiveness_sysctl_handler(struct ctl_table *table, int write, @@ -2981,9 +2991,9 @@ static int sysctl_compaction_handler(struct ctl_table *table, int write, return -EINVAL; if (write) - compact_nodes(); + ret = compact_nodes(); - return 0; + return ret; } #if defined(CONFIG_SYSFS) && defined(CONFIG_NUMA)