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 15C79C77B78 for ; Fri, 21 Apr 2023 09:00:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8A83A6B0071; Fri, 21 Apr 2023 05:00:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 857EB6B0072; Fri, 21 Apr 2023 05:00:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 76DD56B0074; Fri, 21 Apr 2023 05:00:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 67F456B0071 for ; Fri, 21 Apr 2023 05:00:30 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 2B4171C6A91 for ; Fri, 21 Apr 2023 09:00:30 +0000 (UTC) X-FDA: 80704802220.20.1015939 Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com [209.85.208.175]) by imf18.hostedemail.com (Postfix) with ESMTP id 137861C0026 for ; Fri, 21 Apr 2023 09:00:27 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=eQBZDtzu; spf=pass (imf18.hostedemail.com: domain of huangzhaoyang@gmail.com designates 209.85.208.175 as permitted sender) smtp.mailfrom=huangzhaoyang@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=1682067628; 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=4QkvhdTYnDkr/y7u4Tqh+X12AIRQj3eziSNdnEwCKok=; b=cuwlADfHFZ8Ay6QbUmIFyFohnavwi+LpRo5vIQRtKM3ytfggwmj1M/5I99S5z0PkXvMk6r znl7TfsfSNh0rsmoaDZmBsMfs4NSrKFotjnEq7MkuBlZR+AYreCcVL5h7C6D/iarmWRM1r P2D4pM9JRElZkhwNQt2L8TO8kpz/kTU= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=eQBZDtzu; spf=pass (imf18.hostedemail.com: domain of huangzhaoyang@gmail.com designates 209.85.208.175 as permitted sender) smtp.mailfrom=huangzhaoyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1682067628; a=rsa-sha256; cv=none; b=Qab073rAGbLmcb1euhr0Lt1ZKBIXbn31CcDYC5stwgIXFGvG9CQxVqpNUutE1yQkuKc9k6 fhG/SI2JmQIjWbnvlzaUfNFKgeQ+hdxBiEESF9N4P/q6os7ocaBsYrA9O4nUCbpTKMfO5R UlTFOeGZdvNHiatb8ZlPuPzjz1zCV90= Received: by mail-lj1-f175.google.com with SMTP id 38308e7fff4ca-2a8b082d6feso13046051fa.2 for ; Fri, 21 Apr 2023 02:00:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682067626; x=1684659626; 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=4QkvhdTYnDkr/y7u4Tqh+X12AIRQj3eziSNdnEwCKok=; b=eQBZDtzuaDLN/OA/t4ek+7wPgfOcN8abW+MeC5aXDdTuL5gahGhH8Y5wG59GuDnNgI cpbo2VRYCwn1wqdifg0058q3wwSjogO+UudfmPGO6KZWUCgMamrkUFzuf6+0W1X/61tp dR6QRpap1GIlRAB/mGTXkps5DrEZbDeYxoYEFPp96Df8CnHlLWzhwAGvEgV0CANTnblf e8fGUh4YrM6RaGF2B+dDdV6Ja2nxmEsWtdmlMVPibbQViM01OJtFwb5bdNTyMOcoB8FN tB2Qc9ms+TjIh35QNze1N9jr7Aoe/kmWBCRwJi5V1UWqWxOhmARDbbHS06jyAmJ3QP1e YZog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682067626; x=1684659626; 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=4QkvhdTYnDkr/y7u4Tqh+X12AIRQj3eziSNdnEwCKok=; b=W55lZqXY6YkjvX5dhJihJbV4LC4QBFe7kZ6BOacVrIt82O6WJ4GOc7ROO7F7fvB6uY G4NwuLDZ0nMHa/Q5QhoU0vQDZwYvJwnb24V1WeiTTiAuUiWmUFtgC1pbjtwlt14BxeEp 7najHxW6CX8NcuZkBGA8a//RwCLPe3LmJJ7q00TqF8+7rU94Gyaa6sfAi2b21nZAPagS iu+3QiimLXSc5gLFrSetfSrL2d32xbaSh/YojTVSTWxm5D10T4XNjPQByc8YLiBaOOWl fGtnpbAOokkNSCvE+BwiwRrUgRw4oL64YDZNE/ocjIbEBVI/3JBZMMRmsESVzFWIfCzr rdrA== X-Gm-Message-State: AAQBX9dI4EGIMESNU3QI8N7kBClEUj+0rNdkV6cUOuMWnIFCW7dw21r8 B0Vd3YZD4OxMl3tXF6xKBpcqHpndx886QXdiNi4xMe7id1Y= X-Google-Smtp-Source: AKy350aq0fn25/npLop7sLmFVfMvWGQbZlqKXRn7b8pxRcAcj73FeZmbTwiyuZUs7/nMCVulR93/EPCanb6efbkz8cU= X-Received: by 2002:a2e:6806:0:b0:2a8:bc08:a9a3 with SMTP id c6-20020a2e6806000000b002a8bc08a9a3mr488323lja.28.1682067626234; Fri, 21 Apr 2023 02:00:26 -0700 (PDT) MIME-Version: 1.0 References: <1681979577-11360-1-git-send-email-zhaoyang.huang@unisoc.com> <87v8hpspge.fsf@yhuang6-desk2.ccr.corp.intel.com> In-Reply-To: <87v8hpspge.fsf@yhuang6-desk2.ccr.corp.intel.com> From: Zhaoyang Huang Date: Fri, 21 Apr 2023 17:00:04 +0800 Message-ID: Subject: Re: [PATCHv2] mm: skip CMA pages when they are not available To: "Huang, Ying" Cc: "zhaoyang.huang" , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, ke.wang@unisoc.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 137861C0026 X-Stat-Signature: 7wakwx654bwupxaa4nidqun3n7fdbu5x X-HE-Tag: 1682067627-456861 X-HE-Meta: U2FsdGVkX1/kF+BfOo7JF31iXbZQYil2k4sNZuu/jTwWRIBEZIIWhYa469NveVCvSfHJ9vdzHsNlD1z63ewDmrVG+ioB7T23I8Rx+xRIlp7lAue19lMlYrfGn1dS6fBaLHuLUdp5jUfEvftUVOGRlUMb5pgW0frFt0ItjaDVOLwrwLS/qZJbGJgyTWer8k5c1ovhbt+UECcgNKXa46kMo2AMvHO2Ect8ebUxiD65OoIl51YTITYducmUJ12GQk8V8Ou99zSmZ+F5OxybNEitTXHWYidYySdPZmQXrW/yuiBOzmK/nB7KC8cvTL69AJGfUIs8r1Empkl61fRwkozcagPjSEE0/B3bX10O4uySOAOgLkvmJSzn/qUVEz/AIQRpxwTwUBLMrFDHY9WVbGfDjyQ8ZyvdC+UjLAQKgnbMHTm8MdCdm9e4b45707nL9tIZ6YrKXDgl9vxt9kGGyg2SN14ZqFfPQ3RC24mCmK2x13NWhvlGVZTDbN/DgTxCbD4obSCs2LofCeg4FLAhrLnmZbqVlLImNGcbIS4FEirp85++bgJs9ajqrfVMW2gABsQJXRxloUHqaPD0rsQ/Ks3vLPHPGzKwzR3m/tAwiQKYyvC0DqMK3N7rNewEHk04XvygMTDYrp6625VJDLcxav4eIA0uk2LWOL9lXTMKNiLl/kmx4RqoHdnMbSBtAXWerekd+cgEMIhKwphG7G+h8W1A1ImaFAmenFxhQUkg5xBiiD1Q1uXP4To9T9DkDWaDSDfFtJkL4SiC7gLJRg5NlN2zACLF7osHZZovcqS+sqC9O+I5dmmpVpxQet6RUo//kRrqeg6SDua5HZTpmuQJd6eqCIZ/sjasujZQx5sUkWZjtHkyGODjWVAcVInMpOyhEONT2DUAYcs/q1t9brywTM9nItRk6KjufJKDlKFHbbEYX9pyxL5O4Jqi5WPREC679wsQeMMdgymXnf+O97BtJPu I2Y/LhDv uPMuJPMYTGo5gDRYgSvM93j4iywc9MNGrv8gTzoFjeadDuY9kVkyW5vqnPXtETyToQlxDI9+uFN0bGicG2+Cc2klcTeRZMCuSmlEDCjg1cGkkvoWV9RuzG/lR6aBCkJXMGd2W52vYe32iXsKX3VF2VNR5FxFDXHK1QKkFaak9bgI5nJ8ti0sfuP79VJes8WQR5zHS+R/IkiaH1JBwR7K2sGVeIDlebZ8WcUgKiEZR4Sd33V8R6XU75z56WwgYVjJj4/pP0bbRyxBtcP/WJyW9ZKujZVhjHWqiJgcUgEFzaXkgADj/5otMEsJ/fdgLE+aloiWCXoI2N0BVqaRzlX88/YhsOVQ/Zmn5AfFW/3yLYaZXVE4ccfxtGLULN+TVLvNfwFNwauth9gFZJawa8qXmx9QAjiMWezc7nw5vGAjzUlcKcYcVVnkmlv9b4NXsUmQe5cL+kwprkEKTEgk= 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: On Fri, Apr 21, 2023 at 2:47=E2=80=AFPM Huang, Ying = wrote: > > "zhaoyang.huang" writes: > > > From: Zhaoyang Huang > > > > This patch fixes unproductive reclaiming of CMA pages by skipping them = when they > > are not available for current context. It is arise from bellowing OOM i= ssue, which > > caused by large proportion of MIGRATE_CMA pages among free pages. There= has been > > commit(168676649) to fix it by trying CMA pages first instead of fallba= ck in > > rmqueue. I would like to propose another one from reclaiming perspectiv= e. > > > > 04166 < 4> [ 36.172486] [03-19 10:05:52.172] ActivityManager: page al= location failure: order:0, mode:0xc00(GFP_NOIO), nodemask=3D(null),cpuset= =3Dforeground,mems_allowed=3D0 > > 0419C < 4> [ 36.189447] [03-19 10:05:52.189] DMA32: 0*4kB 447*8kB (C)= 217*16kB (C) 124*32kB (C) 136*64kB (C) 70*128kB (C) 22*256kB (C) 3*512kB (= C) 0*1024kB 0*2048kB 0*4096kB =3D 35848kB > > 0419D < 4> [ 36.193125] [03-19 10:05:52.193] Normal: 231*4kB (UMEH) 4= 9*8kB (MEH) 14*16kB (H) 13*32kB (H) 8*64kB (H) 2*128kB (H) 0*256kB 1*512kB = (H) 0*1024kB 0*2048kB 0*4096kB =3D 3236kB > > ...... > > 041EA < 4> [ 36.234447] [03-19 10:05:52.234] SLUB: Unable to allocate= memory on node -1, gfp=3D0xa20(GFP_ATOMIC) > > 041EB < 4> [ 36.234455] [03-19 10:05:52.234] cache: ext4_io_end, obje= ct size: 64, buffer size: 64, default order: 0, min order: 0 > > 041EC < 4> [ 36.234459] [03-19 10:05:52.234] node 0: slabs: 53,objs: = 3392, free: 0 > > From the above description, you are trying to resolve an issue that has > been resolved already. If so, why do we need your patch? What is the > issue it try to resolve in current upstream kernel? Please consider this bellowing sequence as __perform_reclaim() return with reclaiming 32 CMA pages successfully and then lead to get_page_from_freelist failure if MIGRATE_CMA is NOT over 1/2 number of free pages which will then unreserve H pageblocks and drain percpu pageset. right? Furthermore, this could also introduce OOM as direct_reclaim is the final guard for alloc_pages. *did_some_progress =3D __perform_reclaim(gfp_mask, order, ac); retry: page =3D get_page_from_freelist(gfp_mask, order, alloc_flags, ac); if (!page && !drained) { unreserve_highatomic_pageblock(ac, false); drain_all_pages(NULL); drained =3D true; goto retry; } return page; > > At the first glance, I don't think your patch doesn't make sense. But > you really need to show the value of the patch. > > Best Regards, > Huang, Ying > > > Signed-off-by: Zhaoyang Huang > > --- > > v2: update commit message and fix build error when CONFIG_CMA is not se= t > > --- > > --- > > mm/vmscan.c | 15 +++++++++++++-- > > 1 file changed, 13 insertions(+), 2 deletions(-) > > > > diff --git a/mm/vmscan.c b/mm/vmscan.c > > index bd6637f..19fb445 100644 > > --- a/mm/vmscan.c > > +++ b/mm/vmscan.c > > @@ -2225,10 +2225,16 @@ static unsigned long isolate_lru_folios(unsigne= d long nr_to_scan, > > unsigned long nr_skipped[MAX_NR_ZONES] =3D { 0, }; > > unsigned long skipped =3D 0; > > unsigned long scan, total_scan, nr_pages; > > + bool cma_cap =3D true; > > + struct page *page; > > LIST_HEAD(folios_skipped); > > > > total_scan =3D 0; > > scan =3D 0; > > + if ((IS_ENABLED(CONFIG_CMA)) && !current_is_kswapd() > > + && (gfp_migratetype(sc->gfp_mask) !=3D MIGRATE_MOVABLE)) > > + cma_cap =3D false; > > + > > while (scan < nr_to_scan && !list_empty(src)) { > > struct list_head *move_to =3D src; > > struct folio *folio; > > @@ -2239,12 +2245,17 @@ static unsigned long isolate_lru_folios(unsigne= d long nr_to_scan, > > nr_pages =3D folio_nr_pages(folio); > > total_scan +=3D nr_pages; > > > > - if (folio_zonenum(folio) > sc->reclaim_idx) { > > + page =3D &folio->page; > > + > > + if ((folio_zonenum(folio) > sc->reclaim_idx) > > +#ifdef CONFIG_CMA > > + || (get_pageblock_migratetype(page) =3D=3D MIGRAT= E_CMA && !cma_cap) > > +#endif > > + ) { > > nr_skipped[folio_zonenum(folio)] +=3D nr_pages; > > move_to =3D &folios_skipped; > > goto move; > > } > > - > > /* > > * Do not count skipped folios because that makes the fun= ction > > * return with no isolated folios if the LRU mostly conta= ins