From patchwork Fri Jun 18 15:18:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Charan Teja Kalla X-Patchwork-Id: 12331647 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D36D3C49EA2 for ; Fri, 18 Jun 2021 15:20:27 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 7F8CC61419 for ; Fri, 18 Jun 2021 15:20:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7F8CC61419 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 2062F6B0085; Fri, 18 Jun 2021 11:20:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1B67B6B0087; Fri, 18 Jun 2021 11:20:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0A4CC6B0088; Fri, 18 Jun 2021 11:20:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0124.hostedemail.com [216.40.44.124]) by kanga.kvack.org (Postfix) with ESMTP id CF2456B0085 for ; Fri, 18 Jun 2021 11:20:26 -0400 (EDT) Received: from smtpin25.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 6DB418249980 for ; Fri, 18 Jun 2021 15:20:26 +0000 (UTC) X-FDA: 78267206052.25.254CE6E Received: from so254-9.mailgun.net (so254-9.mailgun.net [198.61.254.9]) by imf08.hostedemail.com (Postfix) with ESMTP id 6CDD980192FE for ; Fri, 18 Jun 2021 15:20:19 +0000 (UTC) DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1624029626; h=References: In-Reply-To: References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=GbdhK0pYr+SV7ujRBPEtOv5KYsxMwa7KTk/9Vpru6QA=; b=cbHgoMpu25gShElCUmm4+WnCRq3LhJbBiDqLdYUDb9L1nzOJCanU4KCj7DPV+6j/jr97du9U YI8LGbti6MbUrSbc+NhRLHN68Qbmh4vWKnAbEizzOcuCQZLB8Su+KUXq2De421s8rblfCHnA pSyNqpGuT+yIQM/8vmVfE6Y3Wwk= X-Mailgun-Sending-Ip: 198.61.254.9 X-Mailgun-Sid: WyIwY2Q3OCIsICJsaW51eC1tbUBrdmFjay5vcmciLCAiYmU5ZTRhIl0= Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n02.prod.us-west-2.postgun.com with SMTP id 60ccb9932eaeb98b5e44b756 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Fri, 18 Jun 2021 15:19:47 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id AE60EC433D3; Fri, 18 Jun 2021 15:19:46 +0000 (UTC) Received: from hu-charante-hyd.qualcomm.com (unknown [202.46.22.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: charante) by smtp.codeaurora.org (Postfix) with ESMTPSA id 838EFC43144; Fri, 18 Jun 2021 15:19:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 838EFC43144 From: Charan Teja Reddy To: akpm@linux-foundation.org, vbabka@suse.cz, corbet@lwn.net, mcgrof@kernel.org, keescook@chromium.org, yzaikin@google.com, osalvador@suse.de, rientjes@google.com, mchehab+huawei@kernel.org, lokeshgidra@google.com, andrew.a.klychkov@gmail.com, xi.fengfei@h3c.com, nigupta@nvidia.com, dave.hansen@linux.intel.com, famzheng@amazon.com, mateusznosek0@gmail.com, oleksandr@redhat.com, sh_def@163.com Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, Charan Teja Reddy Subject: [PATCH V4 1/3] mm: compaction: optimize proactive compaction deferrals Date: Fri, 18 Jun 2021 20:48:53 +0530 Message-Id: X-Mailer: git-send-email 2.7.4 In-Reply-To: References: In-Reply-To: References: Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=mg.codeaurora.org header.s=smtp header.b=cbHgoMpu; spf=pass (imf08.hostedemail.com: domain of bounce@mg.codeaurora.org designates 198.61.254.9 as permitted sender) smtp.mailfrom=bounce@mg.codeaurora.org; dmarc=none X-Stat-Signature: d1wmq8mc4yttyand7zq9kq9btwy5f4jf X-Rspamd-Queue-Id: 6CDD980192FE X-Rspamd-Server: rspam06 X-HE-Tag: 1624029619-182496 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: When fragmentation score didn't go down across the proactive compaction i.e. when no progress is made, next wake up for proactive compaction is deferred for 1 << COMPACT_MAX_DEFER_SHIFT(=6) times, with each wakeup interval of HPAGE_FRAG_CHECK_INTERVAL_MSEC(=500). In each of this wakeup, it just decrement 'proactive_defer' counter and goes sleep i.e. it is getting woken to just decrement a counter. The same deferral time can also achieved by simply doing the HPAGE_FRAG_CHECK_INTERVAL_MSEC << COMPACT_MAX_DEFER_SHIFT thus unnecessary wakeup of kcompact thread is avoided thus also removes the need of 'proactive_defer' thread counter. Suggested-by: Vlastimil Babka Signed-off-by: Charan Teja Reddy --- Changes in V4: -- Removed the 'proactive_defer' thread counter by optimizing proactive compaction deferrals. -- Changes from V1 through V3 doesn't exist. mm/compaction.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/mm/compaction.c b/mm/compaction.c index 84fde27..bfbcb97 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -2887,7 +2887,8 @@ static int kcompactd(void *p) { pg_data_t *pgdat = (pg_data_t *)p; struct task_struct *tsk = current; - unsigned int proactive_defer = 0; + long default_timeout = msecs_to_jiffies(HPAGE_FRAG_CHECK_INTERVAL_MSEC); + long timeout = default_timeout; const struct cpumask *cpumask = cpumask_of_node(pgdat->node_id); @@ -2904,23 +2905,30 @@ static int kcompactd(void *p) trace_mm_compaction_kcompactd_sleep(pgdat->node_id); if (wait_event_freezable_timeout(pgdat->kcompactd_wait, - kcompactd_work_requested(pgdat), - msecs_to_jiffies(HPAGE_FRAG_CHECK_INTERVAL_MSEC))) { + kcompactd_work_requested(pgdat), timeout)) { psi_memstall_enter(&pflags); kcompactd_do_work(pgdat); psi_memstall_leave(&pflags); + /* + * Reset the timeout value. The defer timeout by + * proactive compaction can effectively lost + * here but that is fine as the condition of the + * zone changed substantionally and carrying on + * with the previous defer is not useful. + */ + timeout = default_timeout; continue; } - /* kcompactd wait timeout */ + /* + * Start the proactive work with default timeout. Based + * on the fragmentation score, this timeout is updated. + */ + timeout = default_timeout; if (should_proactive_compact_node(pgdat)) { unsigned int prev_score, score; - if (proactive_defer) { - proactive_defer--; - continue; - } prev_score = fragmentation_score_node(pgdat); proactive_compact_node(pgdat); score = fragmentation_score_node(pgdat); @@ -2928,8 +2936,9 @@ static int kcompactd(void *p) * Defer proactive compaction if the fragmentation * score did not go down i.e. no progress made. */ - proactive_defer = score < prev_score ? - 0 : 1 << COMPACT_MAX_DEFER_SHIFT; + if (unlikely(score >= prev_score)) + timeout = + default_timeout << COMPACT_MAX_DEFER_SHIFT; } } From patchwork Fri Jun 18 15:18:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Charan Teja Kalla X-Patchwork-Id: 12331643 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-21.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2EADFC48BDF for ; Fri, 18 Jun 2021 15:19:52 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id AE512613E9 for ; Fri, 18 Jun 2021 15:19:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AE512613E9 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 53B566B007D; Fri, 18 Jun 2021 11:19:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 511116B007E; Fri, 18 Jun 2021 11:19:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 400B06B0080; Fri, 18 Jun 2021 11:19:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0198.hostedemail.com [216.40.44.198]) by kanga.kvack.org (Postfix) with ESMTP id 0DD1A6B007D for ; Fri, 18 Jun 2021 11:19:51 -0400 (EDT) Received: from smtpin15.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id A4720824999B for ; Fri, 18 Jun 2021 15:19:50 +0000 (UTC) X-FDA: 78267204540.15.E5EEAA6 Received: from m43-7.mailgun.net (m43-7.mailgun.net [69.72.43.7]) by imf10.hostedemail.com (Postfix) with ESMTP id 9CC9C4202A3C for ; Fri, 18 Jun 2021 15:19:48 +0000 (UTC) DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1624029590; h=References: In-Reply-To: References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=N8wgFa33745Covxxr7BCaZw8EVHqxftnjArcIHaJM4Y=; b=QYO5rSMFF0J1tSS2mnyo/5Kk364U0XqCC5dYEOzDiKZIguIPnKj2EJgw921lsnW29GGJwZZ0 5j9082Gj/yP9ytqp9IEC92garPxIsG3GLf7PkmEw4vz4kNIFy7lI9gotqVuBm7tYfkAAESnN OH2GwGTB5HnGrN9zVHn6rIPrM6s= X-Mailgun-Sending-Ip: 69.72.43.7 X-Mailgun-Sid: WyIwY2Q3OCIsICJsaW51eC1tbUBrdmFjay5vcmciLCAiYmU5ZTRhIl0= Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n06.prod.us-west-2.postgun.com with SMTP id 60ccb991ed59bf69cca31683 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Fri, 18 Jun 2021 15:19:45 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id EE353C4338A; Fri, 18 Jun 2021 15:19:44 +0000 (UTC) Received: from hu-charante-hyd.qualcomm.com (unknown [202.46.22.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: charante) by smtp.codeaurora.org (Postfix) with ESMTPSA id 0834AC43217; Fri, 18 Jun 2021 15:19:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 0834AC43217 From: Charan Teja Reddy To: akpm@linux-foundation.org, vbabka@suse.cz, corbet@lwn.net, mcgrof@kernel.org, keescook@chromium.org, yzaikin@google.com, osalvador@suse.de, rientjes@google.com, mchehab+huawei@kernel.org, lokeshgidra@google.com, andrew.a.klychkov@gmail.com, xi.fengfei@h3c.com, nigupta@nvidia.com, dave.hansen@linux.intel.com, famzheng@amazon.com, mateusznosek0@gmail.com, oleksandr@redhat.com, sh_def@163.com Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, Charan Teja Reddy Subject: [PATCH V4 2/3] mm: compaction: support triggering of proactive compaction by user Date: Fri, 18 Jun 2021 20:48:54 +0530 Message-Id: <1647ec8c1a08c47c33e6fcbd0e91a9f57e0428a4.1624028025.git.charante@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: In-Reply-To: References: Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=mg.codeaurora.org header.s=smtp header.b=QYO5rSMF; spf=pass (imf10.hostedemail.com: domain of bounce@mg.codeaurora.org designates 69.72.43.7 as permitted sender) smtp.mailfrom=bounce@mg.codeaurora.org; dmarc=none X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 9CC9C4202A3C X-Stat-Signature: zg1huwbhixiyji69kqpaqa1z6c6p58y8 X-HE-Tag: 1624029588-652030 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: The proactive compaction[1] gets triggered for every 500msec and run compaction on the node for COMPACTION_HPAGE_ORDER (usually order-9) pages based on the value set to sysctl.compaction_proactiveness. Triggering the compaction for every 500msec in search of COMPACTION_HPAGE_ORDER pages is not needed for all applications, especially on the embedded system usecases which may have few MB's of RAM. Enabling the proactive compaction in its state will endup in running almost always on such systems. Other side, proactive compaction can still be very much useful for getting a set of higher order pages in some controllable manner(controlled by using the sysctl.compaction_proactiveness). Thus on systems where enabling the proactive compaction always may proove not required, can trigger the same from user space on write to its sysctl interface. As an example, say app launcher decide to launch the memory heavy application which can be launched fast if it gets more higher order pages thus launcher can prepare the system in advance by triggering the proactive compaction from userspace. This triggering of proactive compaction is done on a write to sysctl.compaction_proactiveness by user. [1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=facdaa917c4d5a376d09d25865f5a863f906234a Signed-off-by: Charan Teja Reddy --- Changes in V4: -- Changed the code as the 'proactive_defer' counter is removed. -- No changes in the logic of triggering the proactive compaction. Changes in V3: -- Fixed review comments from Valstimil and others. -- https://lore.kernel.org/patchwork/patch/1438211/ Changes in V2: -- remove /proc/../proactive_compact_memory interface trigger for proactive compaction -- Intention is same that add a way to trigger proactive compaction by user. -- https://lore.kernel.org/patchwork/patch/1431283/ changes in V1: -- Created the new /proc/sys/vm/proactive_compact_memory in interface to trigger proactive compaction from user -- https://lore.kernel.org/lkml/1619098678-8501-1-git-send-email-charante@codeaurora.org/ Documentation/admin-guide/sysctl/vm.rst | 3 ++- include/linux/compaction.h | 2 ++ include/linux/mmzone.h | 1 + kernel/sysctl.c | 2 +- mm/compaction.c | 32 ++++++++++++++++++++++++++++++-- 5 files changed, 36 insertions(+), 4 deletions(-) diff --git a/Documentation/admin-guide/sysctl/vm.rst b/Documentation/admin-guide/sysctl/vm.rst index 586cd4b..5e8097d 100644 --- a/Documentation/admin-guide/sysctl/vm.rst +++ b/Documentation/admin-guide/sysctl/vm.rst @@ -126,7 +126,8 @@ compaction_proactiveness This tunable takes a value in the range [0, 100] with a default value of 20. This tunable determines how aggressively compaction is done in the -background. Setting it to 0 disables proactive compaction. +background. On write of non zero value to this tunable will immediately +trigger the proactive compaction. Setting it to 0 disables proactive compaction. Note that compaction has a non-trivial system-wide impact as pages belonging to different processes are moved around, which could also lead diff --git a/include/linux/compaction.h b/include/linux/compaction.h index 4221888..04d5d9f 100644 --- a/include/linux/compaction.h +++ b/include/linux/compaction.h @@ -84,6 +84,8 @@ static inline unsigned long compact_gap(unsigned int order) 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); +extern int compaction_proactiveness_sysctl_handler(struct ctl_table *table, + int write, void *buffer, size_t *length, loff_t *ppos); extern int sysctl_extfrag_threshold; extern int sysctl_compact_unevictable_allowed; diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 0d53eba..9455809 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -815,6 +815,7 @@ typedef struct pglist_data { enum zone_type kcompactd_highest_zoneidx; wait_queue_head_t kcompactd_wait; struct task_struct *kcompactd; + bool proactive_compact_trigger; #endif /* * This is a per-node reserve of pages that are not available diff --git a/kernel/sysctl.c b/kernel/sysctl.c index d4a78e0..85b473e 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -2859,7 +2859,7 @@ static struct ctl_table vm_table[] = { .data = &sysctl_compaction_proactiveness, .maxlen = sizeof(sysctl_compaction_proactiveness), .mode = 0644, - .proc_handler = proc_dointvec_minmax, + .proc_handler = compaction_proactiveness_sysctl_handler, .extra1 = SYSCTL_ZERO, .extra2 = &one_hundred, }, diff --git a/mm/compaction.c b/mm/compaction.c index bfbcb97..7672be3 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -2708,6 +2708,30 @@ static void compact_nodes(void) */ unsigned int __read_mostly sysctl_compaction_proactiveness = 20; +int compaction_proactiveness_sysctl_handler(struct ctl_table *table, int write, + void *buffer, size_t *length, loff_t *ppos) +{ + int rc, nid; + + rc = proc_dointvec_minmax(table, write, buffer, length, ppos); + if (rc) + return rc; + + if (write && sysctl_compaction_proactiveness) { + for_each_online_node(nid) { + pg_data_t *pgdat = NODE_DATA(nid); + + if (pgdat->proactive_compact_trigger) + continue; + + pgdat->proactive_compact_trigger = true; + wake_up_interruptible(&pgdat->kcompactd_wait); + } + } + + return 0; +} + /* * This is the entry point for compacting all nodes via * /proc/sys/vm/compact_memory @@ -2752,7 +2776,8 @@ void compaction_unregister_node(struct node *node) static inline bool kcompactd_work_requested(pg_data_t *pgdat) { - return pgdat->kcompactd_max_order > 0 || kthread_should_stop(); + return pgdat->kcompactd_max_order > 0 || kthread_should_stop() || + pgdat->proactive_compact_trigger; } static bool kcompactd_node_suitable(pg_data_t *pgdat) @@ -2905,7 +2930,8 @@ static int kcompactd(void *p) trace_mm_compaction_kcompactd_sleep(pgdat->node_id); if (wait_event_freezable_timeout(pgdat->kcompactd_wait, - kcompactd_work_requested(pgdat), timeout)) { + kcompactd_work_requested(pgdat), timeout) && + !pgdat->proactive_compact_trigger) { psi_memstall_enter(&pflags); kcompactd_do_work(pgdat); @@ -2940,6 +2966,8 @@ static int kcompactd(void *p) timeout = default_timeout << COMPACT_MAX_DEFER_SHIFT; } + if (unlikely(pgdat->proactive_compact_trigger)) + pgdat->proactive_compact_trigger = false; } return 0; From patchwork Fri Jun 18 15:18:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Charan Teja Kalla X-Patchwork-Id: 12331645 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 07794C48BE8 for ; Fri, 18 Jun 2021 15:19:58 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id A0601613EC for ; Fri, 18 Jun 2021 15:19:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A0601613EC Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 44FD56B0080; Fri, 18 Jun 2021 11:19:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 400B56B0081; Fri, 18 Jun 2021 11:19:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2A1256B0082; Fri, 18 Jun 2021 11:19:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0103.hostedemail.com [216.40.44.103]) by kanga.kvack.org (Postfix) with ESMTP id EC4776B0080 for ; Fri, 18 Jun 2021 11:19:56 -0400 (EDT) Received: from smtpin15.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 97C04EFCF for ; Fri, 18 Jun 2021 15:19:56 +0000 (UTC) X-FDA: 78267204792.15.5DDC53D Received: from m43-7.mailgun.net (m43-7.mailgun.net [69.72.43.7]) by imf10.hostedemail.com (Postfix) with ESMTP id 693BC4211084 for ; Fri, 18 Jun 2021 15:19:55 +0000 (UTC) DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1624029596; h=References: In-Reply-To: References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=ND/72u+nNISmAsgxRuyz5vLjkrP/NEQ6vHD7wkgEiKc=; b=BfGAL1xtfdO9TDWCsnHk1dNI4G0HKkRWd59LXsd66eX4PGm4nN77QAIF8Z6mml/jRAXSEt+B hElhW2CNQpXPODXPvPyo/EPnoYS0vFhh85gLWU8IG5QjngGA5CefRN2nyFjFhVdU23uijTqG d7cylrywDm5Q3s53z5NeTnJUgPQ= X-Mailgun-Sending-Ip: 69.72.43.7 X-Mailgun-Sid: WyIwY2Q3OCIsICJsaW51eC1tbUBrdmFjay5vcmciLCAiYmU5ZTRhIl0= Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n03.prod.us-west-2.postgun.com with SMTP id 60ccb99aed59bf69cca34a57 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Fri, 18 Jun 2021 15:19:54 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 1685CC43146; Fri, 18 Jun 2021 15:19:53 +0000 (UTC) Received: from hu-charante-hyd.qualcomm.com (unknown [202.46.22.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: charante) by smtp.codeaurora.org (Postfix) with ESMTPSA id 39F64C43460; Fri, 18 Jun 2021 15:19:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 39F64C43460 From: Charan Teja Reddy To: akpm@linux-foundation.org, vbabka@suse.cz, corbet@lwn.net, mcgrof@kernel.org, keescook@chromium.org, yzaikin@google.com, osalvador@suse.de, rientjes@google.com, mchehab+huawei@kernel.org, lokeshgidra@google.com, andrew.a.klychkov@gmail.com, xi.fengfei@h3c.com, nigupta@nvidia.com, dave.hansen@linux.intel.com, famzheng@amazon.com, mateusznosek0@gmail.com, oleksandr@redhat.com, sh_def@163.com Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, Charan Teja Reddy Subject: [PATCH V4 3/3] mm: compaction: fix wakeup logic of proactive compaction Date: Fri, 18 Jun 2021 20:48:55 +0530 Message-Id: <89e90b9c13566e7c28d70e5d6aa048ee3ec41757.1624028025.git.charante@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: In-Reply-To: References: Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=mg.codeaurora.org header.s=smtp header.b=BfGAL1xt; spf=pass (imf10.hostedemail.com: domain of bounce@mg.codeaurora.org designates 69.72.43.7 as permitted sender) smtp.mailfrom=bounce@mg.codeaurora.org; dmarc=none X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 693BC4211084 X-Stat-Signature: 6tf4nmdciy8qyzpfsxjygomjayihw9yq X-HE-Tag: 1624029595-717037 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: Currently, proactive compaction tries to get triggered for every HPAGE_FRAG_CHECK_INTERVAL_MSEC(=500msec) even when proactive compaction is disabled with sysctl.compaction_proactiveness = 0. This results in kcompactd thread wakes up and goes to sleep for every 500msec with out the need of doing proactive compaction. Though this doesn't have any overhead, few cpu cycles can be saved by avoid of waking up kcompactd thread for proactive compaction when it is disabled. Signed-off-by: Charan Teja Reddy --- -- Changes in V4: o No functional changes from V3. -- Changes in V3: o Fix wake up logic in proactive compaction. -- Changes in V2 through V2 doesn't exist. mm/compaction.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/compaction.c b/mm/compaction.c index 7672be3..44a232a 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -2928,6 +2928,8 @@ static int kcompactd(void *p) while (!kthread_should_stop()) { unsigned long pflags; + if (!sysctl_compaction_proactiveness) + timeout = MAX_SCHEDULE_TIMEOUT; trace_mm_compaction_kcompactd_sleep(pgdat->node_id); if (wait_event_freezable_timeout(pgdat->kcompactd_wait, kcompactd_work_requested(pgdat), timeout) &&