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 E2786C4321E for ; Mon, 5 Dec 2022 11:50:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1FF908E0002; Mon, 5 Dec 2022 06:50:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1B05A8E0001; Mon, 5 Dec 2022 06:50:07 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0A0478E0002; Mon, 5 Dec 2022 06:50:07 -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 EC5C08E0001 for ; Mon, 5 Dec 2022 06:50:06 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id C91E9160B0D for ; Mon, 5 Dec 2022 11:50:06 +0000 (UTC) X-FDA: 80208084012.19.5D6D96E Received: from njjs-sys-mailin02.njjs.baidu.com (mx311.baidu.com [180.101.52.76]) by imf26.hostedemail.com (Postfix) with ESMTP id D5734140002 for ; Mon, 5 Dec 2022 11:50:03 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf26.hostedemail.com: domain of lirongqing@baidu.com designates 180.101.52.76 as permitted sender) smtp.mailfrom=lirongqing@baidu.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1670241006; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=LvSJ//AU6Id7u3FbDPf4TaZV2M6rR22sf5TCakQ96DE=; b=TwOy4CswiU2SMC10AiSoU1BBq9oaZeCCbjV9cu34I7lyrLe3+k4pe0BF2CnY5rnyzzjQrF XWazlMLu2kSnOI/TqUx5c0g9KUYiYxnFp/8Fr5UIXd0jeK1NYJT340rfc4/GnJReySAJQe P4vG5Byg14mYlhHEvH1my9A3yUWBkyo= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf26.hostedemail.com: domain of lirongqing@baidu.com designates 180.101.52.76 as permitted sender) smtp.mailfrom=lirongqing@baidu.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1670241006; a=rsa-sha256; cv=none; b=12mT72jdj8Er1Gg3aLocLTJfCPOpAlytmtei7SUwY0upE5mp1r0e5PaUO4nPB+2mcT9xL7 mrpgpzrSGwS8dlQ+IAuZ0G5yM2U6Hi0Dbm8gloclR4ImG51JNM7nwiMpvYCOs2YdOjtxmW VPVPk4qgXz/SlGoIsakrVNsA2/vag2g= Received: from bjhw-sys-rpm015653cc5.bjhw.baidu.com (bjhw-sys-rpm015653cc5.bjhw.baidu.com [10.227.53.39]) by njjs-sys-mailin02.njjs.baidu.com (Postfix) with ESMTP id 5A4211654004B; Mon, 5 Dec 2022 19:49:52 +0800 (CST) Received: from localhost (localhost [127.0.0.1]) by bjhw-sys-rpm015653cc5.bjhw.baidu.com (Postfix) with ESMTP id 4601AD9932; Mon, 5 Dec 2022 19:49:52 +0800 (CST) From: lirongqing@baidu.com To: linux-mm@kvack.org, cgroups@vger.kernel.org, hannes@cmpxchg.org, mhocko@kernel.org, roman.gushchin@linux.dev, shakeelb@google.com, songmuchun@bytedance.com, akpm@linux-foundation.org Subject: [PATCH] mm: memcontrol: speedup memory cgroup resize Date: Mon, 5 Dec 2022 19:49:52 +0800 Message-Id: <1670240992-28563-1-git-send-email-lirongqing@baidu.com> X-Mailer: git-send-email 1.7.1 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: D5734140002 X-Rspam-User: X-Stat-Signature: uot8zie59sy9iysepbra9chj8tpjr84y X-Spamd-Result: default: False [-2.87 / 9.00]; BAYES_HAM(-4.97)[97.68%]; MID_CONTAINS_FROM(1.00)[]; HFILTER_HELO_IP_A(1.00)[njjs-sys-mailin02.njjs.baidu.com]; HFILTER_HELO_NORES_A_OR_MX(0.30)[njjs-sys-mailin02.njjs.baidu.com]; R_SPF_ALLOW(-0.20)[+ip4:180.101.52.0/24]; RCVD_NO_TLS_LAST(0.10)[]; MIME_GOOD(-0.10)[text/plain]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; FROM_NO_DN(0.00)[]; ARC_SIGNED(0.00)[hostedemail.com:s=arc-20220608:i=1]; RCPT_COUNT_SEVEN(0.00)[8]; TO_DN_NONE(0.00)[]; RCVD_COUNT_THREE(0.00)[3]; DMARC_NA(0.00)[baidu.com] X-HE-Tag: 1670241003-215066 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: Li RongQing when resize memory cgroup, avoid to free memory cgroup page one by one, and try to free needed number pages once same to emtpy a memory cgroup memory Signed-off-by: Li RongQing --- mm/memcontrol.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 2d8549ae1b30..86993d055d86 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3464,6 +3464,7 @@ static int mem_cgroup_resize_max(struct mem_cgroup *memcg, bool drained = false; int ret; bool limits_invariant; + unsigned long nr_pages; struct page_counter *counter = memsw ? &memcg->memsw : &memcg->memory; do { @@ -3498,7 +3499,13 @@ static int mem_cgroup_resize_max(struct mem_cgroup *memcg, continue; } - if (!try_to_free_mem_cgroup_pages(memcg, 1, GFP_KERNEL, + nr_pages = page_counter_read(counter); + + if (nr_pages > max) + nr_pages = nr_pages - max; + else + nr_pages = 1; + if (!try_to_free_mem_cgroup_pages(memcg, nr_pages, GFP_KERNEL, memsw ? 0 : MEMCG_RECLAIM_MAY_SWAP)) { ret = -EBUSY; break; @@ -3598,6 +3605,7 @@ unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order, static int mem_cgroup_force_empty(struct mem_cgroup *memcg) { int nr_retries = MAX_RECLAIM_RETRIES; + unsigned long nr_pages; /* we call try-to-free pages for make this cgroup empty */ lru_add_drain_all(); @@ -3605,11 +3613,11 @@ static int mem_cgroup_force_empty(struct mem_cgroup *memcg) drain_all_stock(memcg); /* try to free all pages in this cgroup */ - while (nr_retries && page_counter_read(&memcg->memory)) { + while (nr_retries && (nr_pages = page_counter_read(&memcg->memory))) { if (signal_pending(current)) return -EINTR; - if (!try_to_free_mem_cgroup_pages(memcg, 1, GFP_KERNEL, + if (!try_to_free_mem_cgroup_pages(memcg, nr_pages, GFP_KERNEL, MEMCG_RECLAIM_MAY_SWAP)) nr_retries--; } -- 2.27.0