From mboxrd@z Thu Jan 1 00:00:00 1970 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 E27D4C7EE30 for ; Fri, 3 Mar 2023 00:44:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 330E16B0072; Thu, 2 Mar 2023 19:44:57 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 292526B0073; Thu, 2 Mar 2023 19:44:57 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 10C386B0074; Thu, 2 Mar 2023 19:44:57 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id EDE6B6B0072 for ; Thu, 2 Mar 2023 19:44:56 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id B46F21210E0 for ; Fri, 3 Mar 2023 00:44:56 +0000 (UTC) X-FDA: 80525742192.30.79C70C6 Received: from mxct.zte.com.cn (mxct.zte.com.cn [183.62.165.209]) by imf27.hostedemail.com (Postfix) with ESMTP id B045840004 for ; Fri, 3 Mar 2023 00:44:53 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=zte.com.cn; spf=pass (imf27.hostedemail.com: domain of ye.xingchen@zte.com.cn designates 183.62.165.209 as permitted sender) smtp.mailfrom=ye.xingchen@zte.com.cn ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1677804294; 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:in-reply-to: references; bh=0E+3iQ49GEAx6+Qe8km+3h1Ayjd7kGUKh1MeczpKJC8=; b=6voyTrnmGknWTw0jthbthn5yXTfRs9H+Jmf9be5dInF+38VUAYG1YAVEq0pupt/ADT+MJK uaQKWOsPLTkgXjq3+zu1GIpdcKn882OXt6lpKH38AXZS6jSpkwNNZF+cQOvgpK0fK4Q1Sc g9vMiM23VkgmK+YLKG6hT9DhMRWtECo= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=zte.com.cn; spf=pass (imf27.hostedemail.com: domain of ye.xingchen@zte.com.cn designates 183.62.165.209 as permitted sender) smtp.mailfrom=ye.xingchen@zte.com.cn ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1677804294; a=rsa-sha256; cv=none; b=qngAZVQzJEZfViPx3nsms2t1gvqNWhOyVRznMh94YEPnd975DLTFcmSj4n59yp9i1wqrdd wB2gdfx5H18f2nj7BbimgGT0UL1GTm7wRkUvCHsnnH3pzDL2zxwF8emKqgtO3QxbCXZOOo TCUblCI3Lm5tyuaK8MHNBiXB14X1e0I= Received: from mse-fl1.zte.com.cn (unknown [10.5.228.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mxct.zte.com.cn (FangMail) with ESMTPS id 4PSTl56ww5z501RW; Fri, 3 Mar 2023 08:44:49 +0800 (CST) Received: from xaxapp02.zte.com.cn ([10.88.97.241]) by mse-fl1.zte.com.cn with SMTP id 3230ieH1020865; Fri, 3 Mar 2023 08:44:40 +0800 (+08) (envelope-from ye.xingchen@zte.com.cn) Received: from mapi (xaxapp01[null]) by mapi (Zmail) with MAPI id mid31; Fri, 3 Mar 2023 08:44:41 +0800 (CST) Date: Fri, 3 Mar 2023 08:44:41 +0800 (CST) X-Zmail-TransId: 2af9640142f9ffffffffc6ce87c4 X-Mailer: Zmail v1.0 Message-ID: <202303030844412743985@zte.com.cn> Mime-Version: 1.0 From: To: Cc: , , , , , , , Subject: =?UTF-8?B?W1BBVENIXSBtbTogY29tcGFjdGlvbjogbGltaXQgaWxsZWdhbCBpbnB1dCBwYXJhbWV0ZXJzIG9mwqBjb21wYWN0X21lbW9yeSBpbnRlcmZhY2U=?= Content-Type: text/plain; charset="UTF-8" X-MAIL:mse-fl1.zte.com.cn 3230ieH1020865 X-Fangmail-Gw-Spam-Type: 0 X-Fangmail-Anti-Spam-Filtered: true X-Fangmail-MID-QID: 64014301.001/4PSTl56ww5z501RW X-Rspamd-Queue-Id: B045840004 X-Stat-Signature: cwtm5y1mhnbofr13fq796xeiwmr7eabd X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1677804293-40081 X-HE-Meta: U2FsdGVkX1+QJLATmCKvtK3JzRsEuJCSVniUxq1vpxyBdBtDRxLHwbQFn5cZ0KVNCRNS3OPZocf99vCz6J/77xTH6R/0PHE9MNIqO9mgA6qOQ/pTXdbhM+lJWBLcI6RyHPOczb+kTVNawp2twE9Cx6XX4H4jKVxGVix0mJvGSQipZb/ua/x+LvhGS1DCZmslAVzJxSm6BQS5Tx25VWYvdQuicKF86up20oSULyMfds1YkvgyEXUewjO4svQjrKMFGQ9evj5EYZKjFItEs3Duv4qRe5tWjUZ37yvrfeB57T+SXP9DfHmKy8hk+xm2MT4QbaoKGq2PCur5YI+mDK+kT4ssqpCGMdrQDpJbLYm+x5ondddZB8c8MPiD/SEihHmDsl94gVueaecLOL2wJ3x2w6aqLJASfw/41bxk1mlyPuVR//E85EbhxqfdCHAH3lF1kt92OVQ3vg73mfhZyNcN6YL2hFNkiNVMYUrBDts0sLoUnMjF1jjvR51lWP5rF+XctI3VHCiD4MVmBd6p1l5SR6MSTr/4Cb2B9swftF0ULj1sg4ij7vZmp+IQVgIYt9zJigUo+iZdYMPaM44hyZbnUm0G/KXomj6Hqzxh0s3eTCaoibPv+zwwsexiiCZ4NojLAdtm8a3mFcRGaFgdnBhBaW87kiuUl35cAAHxjbVyKDQmB3VJI5oLZg8bB9CB38721tPyDVlXpmejcf4zkZcpSMU4QXVGZ14P/UFQrZg/JhBlDn+HZiCYpIvJbsn5wtD0W0DwRaVpKbC/H4OzsntUrHuzzNZBlWaZJ/NLgzxrF0RBLB+q+2xMXCG9Qa4bSZE8aSlAkRYdXvsUNdyxrnjfq7r5tq3FkVUSR1kjazTwY3cWx3tntTUSqXSViu3s4b4RqwWav/Q3SQMevUf1YXE3KlG2+WcoTRo+eb1v7KR2Zr0OxuLRrkeYd3TKY5WBLLe557oX6iI3h4qGc0OZP+N tOI9rSbk Ednl1a3Q2N9aGj7VIkKWsUZNFUGGNjB2EZadMrbGmwG0hCLH/N2i2i4H5Uj14Es3IwPPvjIjUk7421Q/3V0vMa2gJwMNspBCTrK18Tx1nvTo2EaKC+HoKWWNufo9jTDQY4WIAFeZo/18xurBubGdRCM2V4jt+KBzRNUuXoxhV0dX90/haUdPmeJCzHo1qrTipMVLvHT0j+Qc/u6Y9OTxA3aQzxY/fRakn/f3SbcaxCxF6jLs= 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: From: Minghao Chi Available only when CONFIG_COMPACTION is set. When 1 is written to the file, all zones are compacted such that free memory is available in contiguous blocks where possible. But echo others-parameter > compact_memory, this function will be triggered by writing parameters to the interface. Applied this patch, sh/$ echo 1.1 > /proc/sys/vm/compact_memory sh/$ sh: write error: Invalid argument The start and end time of printing triggering compact_memory. Signed-off-by: Minghao Chi Signed-off-by: Ye Xingchen --- include/linux/compaction.h | 1 + kernel/sysctl.c | 4 +++- mm/compaction.c | 12 +++++++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/include/linux/compaction.h b/include/linux/compaction.h index 52a9ff65faee..caa24e33eeb1 100644 --- a/include/linux/compaction.h +++ b/include/linux/compaction.h @@ -81,6 +81,7 @@ static inline unsigned long compact_gap(unsigned int order) } #ifdef CONFIG_COMPACTION +extern int sysctl_compact_memory; extern unsigned int sysctl_compaction_proactiveness; extern int sysctl_compaction_handler(struct ctl_table *table, int write, void *buffer, size_t *length, loff_t *ppos); diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 1c240d2c99bc..39eff48ada08 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -2192,10 +2192,12 @@ static struct ctl_table vm_table[] = { #ifdef CONFIG_COMPACTION { .procname = "compact_memory", - .data = NULL, + .data = &sysctl_compact_memory, .maxlen = sizeof(int), .mode = 0200, .proc_handler = sysctl_compaction_handler, + .extra1 = SYSCTL_ONE, + .extra2 = SYSCTL_ONE, }, { .procname = "compaction_proactiveness", diff --git a/mm/compaction.c b/mm/compaction.c index 5a9501e0ae01..2c9ecc4b9d23 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -2763,6 +2763,8 @@ int compaction_proactiveness_sysctl_handler(struct ctl_table *table, int write, return 0; } +/* The written value is actually unused, all memory is compacted */ +int sysctl_compact_memory; /* * This is the entry point for compacting all nodes via * /proc/sys/vm/compact_memory @@ -2770,8 +2772,16 @@ int compaction_proactiveness_sysctl_handler(struct ctl_table *table, int write, int sysctl_compaction_handler(struct ctl_table *table, int write, void *buffer, size_t *length, loff_t *ppos) { - if (write) + int ret; + + ret = proc_dointvec_minmax(table, write, buffer, length, ppos); + if (ret) + return ret; + if (write) { + pr_info("compact_nodes start\n"); compact_nodes(); + pr_info("compact_nodes end\n"); + } return 0; } -- 2.25.1