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 3CDBEC2BD09 for ; Wed, 10 Jul 2024 02:07:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AF99A6B00A0; Tue, 9 Jul 2024 22:07:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AAA436B00A2; Tue, 9 Jul 2024 22:07:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 970726B00A3; Tue, 9 Jul 2024 22:07:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 73D616B00A0 for ; Tue, 9 Jul 2024 22:07:49 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 0F508A52A7 for ; Wed, 10 Jul 2024 02:07:49 +0000 (UTC) X-FDA: 82322207058.05.1C65BC9 Received: from mail-vk1-f170.google.com (mail-vk1-f170.google.com [209.85.221.170]) by imf27.hostedemail.com (Postfix) with ESMTP id 345B640013 for ; Wed, 10 Jul 2024 02:07:47 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=MDl6J0in; spf=pass (imf27.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.221.170 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720577252; 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:dkim-signature; bh=XKkatZH+YwKQqe7w7XCPhhM00TXlxp0X7zaw3YlI5sM=; b=aQzxKr0U+kspRgZyvb5cBihV9gz5I/WYtIYFw+mQDYzl0li5h5zOsL9xrw5YMmMtYo4Gtw RQAAFY54c4QBGZvqO8j9vgYOuzNpsImygwHw3L/gH0ZMJegBwXoUvMhSiO9HZXzfZqwcMq TNQdV4wOQKqpiYd8rrs2k6gRdI1n1ow= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=MDl6J0in; spf=pass (imf27.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.221.170 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720577252; a=rsa-sha256; cv=none; b=BMbAJCVpDQCzuAJ2tXbpFoi14uMd2IyFlb9ES9/cBplvS3k52wT6Sw0mu3V7HuCqAPVoKN TplKwGa8SRNnzLZixK3KGqwAE2MHbOSOSyWvh7I8BIlIBhFKeQiR9dAN6MMRZpReX//J15 cEqEmLurmlwLGfFbBmdM5JFpM+fmobQ= Received: by mail-vk1-f170.google.com with SMTP id 71dfb90a1353d-4f2e13622e4so1838425e0c.3 for ; Tue, 09 Jul 2024 19:07:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720577266; x=1721182066; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=XKkatZH+YwKQqe7w7XCPhhM00TXlxp0X7zaw3YlI5sM=; b=MDl6J0inlHqve4nMpc4ObhT9ftg/ihiW0Ho6P2P0CbdmgrdIcwaiqJhW5c+rLpkrHX WGS0jXvLx6wNAb24W64lL/76hWczzxLbWzuXKu5ieIzkLamhuJ8wjJHuJ9WE7vNXzjfn gv26hTqujCT5GGv9wyLSJtX5dI69nlZAdQu6V7vIW1Pv9j9FmhIOtgTFd/u6oJ82FH8o yG4tR+PyFAR0DpKLmXUdUbvnWhsNXaiXe4FseLwneWKGCwYPKKaOUCZjlsfnw7ul4egM 4mq/XLkTIl3SyWqmDqvZypcTwSCFoP62IFajjqnIqoeFvZWBW5RjSK2ho/oOyTLUbz2H aJ6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720577266; x=1721182066; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XKkatZH+YwKQqe7w7XCPhhM00TXlxp0X7zaw3YlI5sM=; b=PxwFIVQccvW6zqbsZH7mhA00nFLrQos1QG33qaDNI4J4IRtxmu49EWUu/Ud1+f5nB+ 3bFIBYtD+M6mQFimq7V2g0p3RESjgoNhW8kBkZe0uYbGEbg1G0HBMlCcQ8i+G7CePR5u jciZ1mC3V810xxV+C6xg+YIs8dXCz7ob0nxGemh3aL7/3zF0fcToddvzTN/YhX3mQyNZ h4aj6c9k20Gt0hpweEITVd88yUCuKdfXoospEOgpHUxVx4cS9s+dpeVK9YYI6KePHf0F a3MNMPjxjFRo2tBesxLDVTnovPxsAaOb5Ctoh4MuNQj1GWnhE8QrObyIF4I8sR4IJBjx 4Njw== X-Forwarded-Encrypted: i=1; AJvYcCUce/kJuRgi3FSwDj3GVrBqrXtpJYRpHuTR9kllERczxj0WY1yGUkDKXHRltjfBEzFmjOqiFtWw12CR7al5SktDsQg= X-Gm-Message-State: AOJu0YxMF7RnWd//pGQOo0kKkaMC/mMOv4r6yAAXHQ/pwub6AHxUPDBq kPUwffi4Q2ZArbxD09JEHxbh+RsEitxENUdQXazzkQw/RuAWsi7aAZast6ubpVqxtPoaS4Nbvu1 b0GrHGA/+jkkbwG57zgjRnuEnFeg= X-Google-Smtp-Source: AGHT+IEgqJ+70OL33oFvt8mg6kpa9bQyBfNsqT1pdTlvIQzO3YSmVTZ4uD6V4lbC6wUz9UUTOL9KLSOCw4Oto1cXvEA= X-Received: by 2002:a05:6122:2015:b0:4f2:f1f1:a9f2 with SMTP id 71dfb90a1353d-4f33f1b7d80mr4864567e0c.4.1720577266174; Tue, 09 Jul 2024 19:07:46 -0700 (PDT) MIME-Version: 1.0 References: <20240707094956.94654-1-laoar.shao@gmail.com> <20240707094956.94654-3-laoar.shao@gmail.com> <87h6cyau9w.fsf@yhuang6-desk2.ccr.corp.intel.com> In-Reply-To: <87h6cyau9w.fsf@yhuang6-desk2.ccr.corp.intel.com> From: Yafang Shao Date: Wed, 10 Jul 2024 10:07:09 +0800 Message-ID: Subject: Re: [PATCH 2/3] mm/page_alloc: Avoid changing pcp->high decaying when adjusting CONFIG_PCP_BATCH_SCALE_MAX To: "Huang, Ying" Cc: akpm@linux-foundation.org, mgorman@techsingularity.net, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 345B640013 X-Stat-Signature: nm9c7fdwn6c3zz9hw4wffhn1gg7bq8if X-HE-Tag: 1720577267-411550 X-HE-Meta: U2FsdGVkX1+GJJSAu+lK0/dk37X3uZ7eUCvLlLmvkR9RTxIjCAJ/fvn/aIf3qcHtpzNbx5ZC/zUo7jRc5tqNM1zjVwbi9FXIZKOiJDa4zTBF9RJS43XMNgmLl4Dgxynx+0t7AVTwYFjVw70cEq7QkM0nVb0XVO1EccPZMehaVksiKEZPe8ztMlN/TZID4aaTFvRcl/nPgPmqSypzoNjigB+FjXiNtaLVReCSEsJ2q+H+eYxiaACtJ5GAFoUxxhvpwshNS5lCJ0PiBFEMMnH3DG81aKgDMvslujLnSqStyiQ0Lrq2moctjnZaezgRcfUzgpwRyp9YK8EzPqlxB/XFGS72WSp44hTPCeWIrjJQ70viDiA6z2Qzyzje9JgZCadW4JNCpbiUr8tp7VoSZqHCBspElnZH3tY7VOiBYdOAOxWG/K/Mr6D+N749tmDV5IVPwUj/2ruS/oaPl6Gj5D3e4kfVJ8PO1AGG4hSnZFgR4mSPTvScgToYV/i29/EISOQUjM9kqjPD+Hs/7SXsNtnqYd2xcVE8bwsO/m74sOiejfPVNKyGHd5x57wqGrBVqmEhKXM3RWC80l56HLJkWPKAr6jHcwrV2T534wVqaNyp4VJldL2IJ7Ht7NrwyNjBKkXkqXnVh+rdE/JPe+bU+NdGZuJmYETJItH1Md7ER9OiIUFWKAozFWBE/SWCdeEF7mkirG/sET77WXdPWqJNLax4lVB5j5gkFGtBy9jSDGDuW4yW0LIa3Wx30Sdv0hYIDdV4rZgG3ly6Fjfcda5DcyIFk8bzz49FVzpHv8q1NebKfbHKxemxaqF0AG8lgxg7hakVurhN1qvmCsRZmmh0Mywc6YlKiAhejbTl2dioTjJuj5LhYkD5Y+JvBwgUKN6+SkY5UKhpaBQaSA8nuo3QC6tsRWikS2FtMV/xpGSIVRyTSpjEstbB6qXYVgfZkhb5Wnlt7+VMp4cVd4TQF8/qQaB Vlp5u9v6 Qe78AWy2p/cEa/PZfB57kQ0NzDplzm3wo2UJ1EhQ1VFdkpqwYj7qlOkN+nTmscF+zyyQpcjVfk7xP6t8Ev1fRHPTiSM1B7aLP4RcARjG2L1Nu+1o3NXOalHcwxigNff6Fd2DWNtsg4YTbD0JcMkPVC0gkDVLjo2WJYHV3yGj/DeEl12IX6gsT5DeBrhvVeP9TE3Hykc5Qh435nuzKwJAf8/sFIB/3CwrElAiUv/AKw8uvc7v3ArxoS1f8GpsGmblfvrjJH5cqBC1TGEgwl3gLwIpYk1z8rETKcGIO92AduKgFVaQ1vPPSK0rvKn6qTmzriP3+x1D+MBveOPVspOvSF1rZxyIIVIhehevf6ZJRov/jSq/A7y3m1e9WksAnArfS6KOrnrqL0BpVuKaJhXsdlj8mO4Lzegy+Oalo X-Bogosity: Ham, tests=bogofilter, spamicity=0.021352, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Wed, Jul 10, 2024 at 9:53=E2=80=AFAM Huang, Ying = wrote: > > Yafang Shao writes: > > > When adjusting the CONFIG_PCP_BATCH_SCALE_MAX configuration from its > > default value of 5 to a lower value, such as 0, it's important to ensur= e > > that the pcp->high decaying is not inadvertently slowed down. Similarly= , > > when increasing CONFIG_PCP_BATCH_SCALE_MAX to a larger value, like 6, w= e > > must avoid inadvertently increasing the number of pages freed in > > free_pcppages_bulk() as a result of this change. > > > > So below improvements are made: > > - hardcode the default value of 5 to avoiding modifying the pcp->high > > - refactore free_pcppages_bulk() into multiple steps, with each step > > processing a fixed batch size of pages > > This is confusing. You don't change free_pcppages_bulk() itself. I > guess what you mean is "change free_pcppages_bulk() calling into > multiple steps". will change it. > > > > > Suggested-by: "Huang, Ying" > > Signed-off-by: Yafang Shao > > --- > > mm/page_alloc.c | 15 +++++++++++---- > > 1 file changed, 11 insertions(+), 4 deletions(-) > > > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > > index 8e2f4e1ab4f2..2b76754a48e0 100644 > > --- a/mm/page_alloc.c > > +++ b/mm/page_alloc.c > > @@ -2247,7 +2247,7 @@ static int rmqueue_bulk(struct zone *zone, unsign= ed int order, > > int decay_pcp_high(struct zone *zone, struct per_cpu_pages *pcp) > > { > > int high_min, to_drain, batch; > > - int todo =3D 0; > > + int todo =3D 0, count =3D 0; > > > > high_min =3D READ_ONCE(pcp->high_min); > > batch =3D READ_ONCE(pcp->batch); > > @@ -2257,18 +2257,25 @@ int decay_pcp_high(struct zone *zone, struct pe= r_cpu_pages *pcp) > > * control latency. This caps pcp->high decrement too. > > */ > > if (pcp->high > high_min) { > > - pcp->high =3D max3(pcp->count - (batch << CONFIG_PCP_BATC= H_SCALE_MAX), > > + /* When tuning the pcp batch scale value, we want to ensu= re that > > + * the pcp->high decay rate is not slowed down. Therefore= , we > > + * hard-code the historical default scale value of 5 here= to > > + * prevent any unintended effects. > > + */ > > This is good description for history. But, in the result code, it's > not easy for people to connect the code with pcp batch scale directly. > How about something as follows, > > We will decay 1/8 pcp->high each time in general, so that the idle PCP > pages can be returned to buddy system timely. To control the max > latency of decay, we also constrain the number pages freed each time. Thanks for your suggestion. will change it. > > > + pcp->high =3D max3(pcp->count - (batch << 5), > > pcp->high - (pcp->high >> 3), high_min); > > if (pcp->high > high_min) > > todo++; > > } > > > > to_drain =3D pcp->count - pcp->high; > > - if (to_drain > 0) { > > + while (count < to_drain) { > > spin_lock(&pcp->lock); > > - free_pcppages_bulk(zone, to_drain, pcp, 0); > > + free_pcppages_bulk(zone, batch, pcp, 0); > > "to_drain - count" may < batch. Nice catch. will fix it. > > > spin_unlock(&pcp->lock); > > + count +=3D batch; > > todo++; > > + cond_resched(); > > } > > > > return todo; > > -- > Best Regards, > Huang, Ying --=20 Regards Yafang