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 F276DCFC5E2 for ; Thu, 10 Oct 2024 16:37:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 55BC96B007B; Thu, 10 Oct 2024 12:37:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 50C316B0083; Thu, 10 Oct 2024 12:37:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3D3B96B0085; Thu, 10 Oct 2024 12:37:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 227036B007B for ; Thu, 10 Oct 2024 12:37:55 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 078171609AA for ; Thu, 10 Oct 2024 16:37:51 +0000 (UTC) X-FDA: 82658249268.20.04B4AA2 Received: from mail-oi1-f180.google.com (mail-oi1-f180.google.com [209.85.167.180]) by imf05.hostedemail.com (Postfix) with ESMTP id 5851F100005 for ; Thu, 10 Oct 2024 16:37:50 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=UvFfdFkM; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of yuzhao@google.com designates 209.85.167.180 as permitted sender) smtp.mailfrom=yuzhao@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728578161; a=rsa-sha256; cv=none; b=3+YBUnVpC8UoYOstiXoOp4DbzaI/XZ8VESDPd2VAIU4AagI7niSY0hZKO0odu2+MmFIPwv qEmlYZ3/rxz+rfkkQ8ZJgzxUOXn5xfeO/EzGZhnV0B3iLOg+NfvKJJ123G5mKE2xfs5Ssv sNQYkBA3a+ynC3y++ZIDa1jbYqCo/dk= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=UvFfdFkM; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of yuzhao@google.com designates 209.85.167.180 as permitted sender) smtp.mailfrom=yuzhao@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728578161; 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=AAHZtOInJ31IBMrbipYqgvXa3vV7cOSESzJ3bwwKz9M=; b=JxNFKbTveH8jp3PE23EjBWQB4QSpRstARecZ0iLaIANBfw6aIe9FohULRKobS6oRuKAtCU RbPKnf/xS1BBZv3P6hsZjhjXucq6DU74QToq7epR6eAO9Nl3ciL6HJglRQzkcxOjHt1Lf0 XFogCGkaLbPzwLAeL9uo2zFMMLhM8e0= Received: by mail-oi1-f180.google.com with SMTP id 5614622812f47-3e57872eb49so307805b6e.0 for ; Thu, 10 Oct 2024 09:37:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1728578272; x=1729183072; 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=AAHZtOInJ31IBMrbipYqgvXa3vV7cOSESzJ3bwwKz9M=; b=UvFfdFkMkNtLVkgPChqv81gTbh4a0LAh/sKazcnNfpfo5MvxbeTbXDWmx9TuMCLh+w pBLsQdGdMwfFs7DPVyKeUw0+k/BB3j2k8dHzPCNLyPA5KKDHdJ6c0RCvvQ+E4XWMozk9 qXYS3mBgsxGxy0Zpb1aTH5d56d7cEnW9uaU51WabjpcWHZ1CtKdzmYDS6qciarPOOlNi ffWrPxUbSk6ckeJEAmuMLbIH+0tP1YLRf9MT+vC6plwjZJu970AuEnOWYWgyc5VGxeQV 6JbHhzNJLeedl5vzGbhVJsC8jrf6XI3NzNZ2td+nkU/zCqxuJVWn2tqrEA8UqSyYTOEi UORA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728578272; x=1729183072; 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=AAHZtOInJ31IBMrbipYqgvXa3vV7cOSESzJ3bwwKz9M=; b=dmfHrFZVK38SRAWaDAf42ziBhiNy/dKMMTTFRW882hSvOM22klQtGlvo9IpRrOZFTd ho0e8HS2cskkiAYVk7SBnRujK2wComE2gryDEYycZ9gjqzH5/hnoi5zQkiYWJOUeb8CM IXl02BQbS/DZvM4y1bVKpjlKg+kspjwoLFzRuvXlxBppAUKXlr7yMNe2gVYD8i3LGD8/ NtjC1IUbb+s3xHJxNzos1J6pB6Ivwh2C0fvx75BTx6bKMV92L6zhbCovkxRP9JDvPIEw rpPpLOTWCn+Xsi6Mu8jNQDJ8gacl7HKHvaDUOlBXIwmXrVpI99+/a/ud9oy3HCmvB4Yc Q6Gg== X-Forwarded-Encrypted: i=1; AJvYcCUa08WZQ65a0RKicz7APrmEMVkvhp7tgW/JowJ6M6cnZ3dLGRYLR3617hJzLp05ve1gfIs4dMxEGQ==@kvack.org X-Gm-Message-State: AOJu0Yx+7P4RqH4gEDrBgXainUC7a3vroEJmFQW3mw5BnSPaCon1QsS0 2k5sBJIdBAloohj/tJftFdHqnEThL5k+51sPvJDkJC+dG2KXGZQTYqTbFtY6iHRw+1VeFn2En+z xyyeAxkmYEsCrJRbXlX4dH1jsDMLdVhSZbA31 X-Google-Smtp-Source: AGHT+IGuWVaO/Ggn3RMpBCD9/4w1bag/yt8XNl7DXYvoYchgTYMhOcIyJqqkYWHrjSte6NKjhNmiQubmeohX9QZRxhQ= X-Received: by 2002:a05:6808:1b25:b0:3e3:a1ae:6a1a with SMTP id 5614622812f47-3e4d7147fdfmr3998252b6e.4.1728578271639; Thu, 10 Oct 2024 09:37:51 -0700 (PDT) MIME-Version: 1.0 References: <20241009074953.608591-1-zhaoyang.huang@unisoc.com> In-Reply-To: <20241009074953.608591-1-zhaoyang.huang@unisoc.com> From: Yu Zhao Date: Thu, 10 Oct 2024 10:37:13 -0600 Message-ID: Subject: Re: [PATCH] mm: throttle and inc min_seq when both page types reach MIN_NR_GENS To: "zhaoyang.huang" Cc: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Zhaoyang Huang , steve.kang@unisoc.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 5851F100005 X-Stat-Signature: bpg55rn43wrip576cw541tfhonrmsts9 X-Rspam-User: X-HE-Tag: 1728578270-359913 X-HE-Meta: U2FsdGVkX1+URX0VapU9ifk8HuMyHTuhcK9kFmeVFyJW13hkJ3z7Xozo1109Faae+IRqam9NcLkNgQDe7UsK7QchrE044z1cs6MYU8kC3p3PAO++fD78Cwj2/EpQY+LieC90Z0syTsmX5Q2JCe/nMLkR7zGfKcaSB2t5q1YKX1xpWMekrigSYtJ4qsfpb0xXZSAOxHNu6xxV4YUGaVBu9rXxSAAeG/phLo5ZdYopUFfm+YeSJSf2vc+9V/I+K+f9kW6JmgsZGrza2FXr9S/pI52l7na4t/75Ob/TYX/1w1NFo0euEFnac7xtGRMhSTvcBlEXiaqNYDC+r1Trir6b58q8vU7/3tc+pDyXQNlZqMAS7CyC7z5lcBWSly7/fAnj9amD3w2XgW2UIrcX9rCjAJBmNs7tBOmsd5Evv+kPWWpfb25w1E1RrDYjhWquSiwkC/sCBX2Ii48pXLzwR0XLZJ2xR78O3a1iBHh2xtppkO/wskILRBim5SmA1SQ3QxtwLmNIaN3W9nkdUG0xEV7UmUthh9D7ssp1bvVGICr2tDBR73kHzgUjPizAL/GHFMQJkHxlpxnAw/F9jHMIt2BLIrCACwApV0Xv+n/9RvV6VTh5k9B0OdmDCyVhjrbMhcALufMUzrSBd1CKTlag6Jk4UQlef37L8A/D/nPAVTGaTbI/scf9ZhBC+dJPpZ3iFhJehs51rs4MXgRiD3sIfZKlyeCvVA7e9NIGa2zK5Hn1yd6lLj6TM63AmyWefloPgDdj1JAgtsLjnAXKxn5TtPquIyv9tM/X8X2LkG1doRH6sAC3eJB6LcXFx1L71YnjJfT0Bgk0WhEc0zp0JXFFOR4KKual2Imn3rFugjwg+GXL+xLJjY/a1CxKifs3B514sETv3N6MkHsgDJRzOSbgAIILnT5tfEwFyPtfz8DCVGxvEFeXfLaRNh6Yh0SaYD1BuZ9dtgAbcf9YF0neUZIsswp 8swVOPq/ g9Jp8DEhRUZclROQKclN+BgnB/xnZC6O1+uhgV+a2zxcZfofh1LMRqnyoVmgcpo5gsb0ZFJd62P3b7I9Kn3UfkIf80clbLbx8oI7HSF4m+wuskU667NCnogHg3wwuzgM5pJKT34n6ITA7sMFHMnesmXR3owY0iih7CXe0F/UvskF1po1Q1cigljDs2PKxk4jPsnaiaPZlidG04L5edKwtkNhFhYROayI5Of0xkxHdLCE/enPKZ/4J0oAswVAwNDKvw8fhxD57U3WS5XwhT8DlYvwqiu3EdsFcm3tQC8pT3ZpPD+i8ynRB2GyOWgeu8LyH6hMQe4MoZDBG/jE= X-Bogosity: Ham, tests=bogofilter, spamicity=0.012456, 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, Oct 9, 2024 at 1:50=E2=80=AFAM zhaoyang.huang wrote: > > From: Zhaoyang Huang > > The test case of [1] leads to system hang which caused by a local > watchdog thread starved over 20s on a 5.5GB RAM ANDROID15(v6.6) > system. This commit solve the issue by have the reclaimer be throttled > and increase min_seq if both page types reach MIN_NR_GENS, which may > introduce a livelock of switching type with holding lruvec->lru_lock. > > [1] > launch below script 8 times simutanously which allocates 1GB virtual > memory and access it from user space by each thread. > $ costmem -c1024000 -b12800 -o0 & > > Signed-off-by: Zhaoyang Huang > --- > mm/vmscan.c | 16 ++++++++++++++-- > 1 file changed, 14 insertions(+), 2 deletions(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index cfa839284b92..83e450d0ce3c 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -4384,11 +4384,23 @@ static int scan_folios(struct lruvec *lruvec, str= uct scan_control *sc, > int remaining =3D MAX_LRU_BATCH; > struct lru_gen_folio *lrugen =3D &lruvec->lrugen; > struct mem_cgroup *memcg =3D lruvec_memcg(lruvec); > + struct pglist_data *pgdat =3D lruvec_pgdat(lruvec); > > VM_WARN_ON_ONCE(!list_empty(list)); > > - if (get_nr_gens(lruvec, type) =3D=3D MIN_NR_GENS) > - return 0; > + if (get_nr_gens(lruvec, type) =3D=3D MIN_NR_GENS) { > + /* > + * throttle for a while and then increase the min_seq sin= ce > + * both page types reach the limit. > + */ Sorry but this isn't going to work because in try_to_inc_min_seq(), there i= s `while (min_seq[type] + MIN_NR_GENS <=3D lrugen->max_seq) {` to prevent reclaimers from evicting hot memory -- they need to do aging fir= st. > > + if (get_nr_gens(lruvec, !type) =3D=3D MIN_NR_GENS) { > + spin_unlock_irq(&lruvec->lru_lock); > + reclaim_throttle(pgdat, VMSCAN_THROTTLE_ISOLATED)= ; > + spin_lock_irq(&lruvec->lru_lock); > + try_to_inc_min_seq(lruvec, get_swappiness(lruvec,= sc)); > + } else > + return 0; > + } > > gen =3D lru_gen_from_seq(lrugen->min_seq[type]); > > -- > 2.25.1 >