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 DD87BC54E58 for ; Fri, 15 Mar 2024 08:46:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5451B80109; Fri, 15 Mar 2024 04:46:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4F467800B4; Fri, 15 Mar 2024 04:46:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3BBE880109; Fri, 15 Mar 2024 04:46:36 -0400 (EDT) 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 2CE5A800B4 for ; Fri, 15 Mar 2024 04:46:36 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id CFD2DA0D3E for ; Fri, 15 Mar 2024 08:46:35 +0000 (UTC) X-FDA: 81898642350.01.8B176FF Received: from mail-ua1-f53.google.com (mail-ua1-f53.google.com [209.85.222.53]) by imf25.hostedemail.com (Postfix) with ESMTP id 227DEA000D for ; Fri, 15 Mar 2024 08:46:32 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=TYI95Otd; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf25.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.53 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710492393; 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=yns1vOt24BA/xyIkQadDD594v6dr/yXOSU3+VyMFSoo=; b=c0Duj7necJy18zN97LvJWZzLGjrv3EZ5F/1oJ9v3jBhiSOlprmuz8FF2vCN8e9c2iOlJ59 ahx9Oy+2Rd2fTnnL4dSJ0WNPcu+lALS6xzq/+3mmYnTHb/Dd2hsgzHfOY8r34mnaq+PayW gn+//aYw2Q3y/tLlp1ug30EkBJfk9bA= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=TYI95Otd; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf25.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.53 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710492393; a=rsa-sha256; cv=none; b=5VWNjupYS36WCDM0OcFA/NgBR7shCY0HJD5GPTYFCWlRRKNKxGmSG0tMjneTm4j35bKvL8 3nFqOj8OsGbdL7EdTiAWkMczeO0JosWFoNA6/KP/BppzufPUIrgage15tGuofRoT+TOrGC FagqYwkn6v6acGsk64iqslrqym39dUw= Received: by mail-ua1-f53.google.com with SMTP id a1e0cc1a2514c-7de12bcec8bso856261241.1 for ; Fri, 15 Mar 2024 01:46:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710492392; x=1711097192; 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=yns1vOt24BA/xyIkQadDD594v6dr/yXOSU3+VyMFSoo=; b=TYI95OtdMPh4EDloDHNTVHw5SsAGbxVgi6X03pmkYG15QieyOx2mSW4PSR2tK1t6N+ VEJZA1jRNn6N87q4cLTgXvKBmp+8zS+V5c4pXRsBZZ+JYlILWjITEJr517ULqYVjUdOu FfjzO8LkEN9+/5K0S5of4fLj6Z6tV4317RVJN8oUEhEvOGubnsB8HEtdjET8xdPoM70F r4++nfTyMiAcuCM5TaBYgtbQxk1thGv0w8RaCjdbrDCRPFV+5qpMTNwP1go4Gv+XI+/+ eo8OxPU3i8c8Zy2ISY1hRPKi/rQy6+2aRhN/sjCulA/8H+sBMOovo6G3DTmQY1l6FRBS ftkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710492392; x=1711097192; 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=yns1vOt24BA/xyIkQadDD594v6dr/yXOSU3+VyMFSoo=; b=AWmwRDuk8gzVdQpxsnY0uVKDOFtN5lunQiqqkPhPkvpBBfWAb9JFpSM9YoGc3DXTi7 n6gsBgaD2lNkbEwqurfb56vf/yc0EYg7LcacV2fprSUiT8uy/MM834OanmU8q0HOZdGW a0MWWnsLSYRIcKQ0MVPtiQaL7i9OI/50Vd6PulIsZ9To3WAG+lNiOEAFb4IfwW0H5AJS vWq0ujwUkQD29AOG8G0rDD/pB4rCrrMD3XuQS3MjGnVR/mGsOWxzgLO7dzF4/xc72DtB qbNN2grl9AgZeAeLrvag0nrjWJDcC8f9UyZ5KOd4Cr4cMYsiQ0W1FVnpl9yk+SLVjdbB +JHQ== X-Forwarded-Encrypted: i=1; AJvYcCW0ohM+090CMN2sx4MpDKwQZDWJ1m3dbQyrl6yGM1dIZlFq4R6fzn6CPa4HYbjZcLJ5l04NqNzq5t61ZlqzEDF9vP0= X-Gm-Message-State: AOJu0YwE98KtlY4ngBS2/lWtv3jdHVv+BfL8ePf/TwJU/7OILc6xfypN +01in+LlP3X1D/8Zi+b1CNqSoh5PjdBrSWC/y/7tR4M4xQINwP53jzqxe1Bm+Jaq3lEXKk6faAm iqkWFG+ZFh5D/YhLBxCVxscwP8bk= X-Google-Smtp-Source: AGHT+IGchSgz0yaVThLdBrhKFjUeUGbp4jB/K86ZCto5s63G5RGWY7hEUwnlgS6GpWmAXrH0GLqbu3WKiuwbiz6D7u0= X-Received: by 2002:a05:6102:1349:b0:475:48c9:c4ed with SMTP id j9-20020a056102134900b0047548c9c4edmr4533644vsl.29.1710492392070; Fri, 15 Mar 2024 01:46:32 -0700 (PDT) MIME-Version: 1.0 References: <20240314141516.31747-1-liuhailong@oppo.com> <20240315081803.2223-1-liuhailong@oppo.com> In-Reply-To: <20240315081803.2223-1-liuhailong@oppo.com> From: Barry Song <21cnbao@gmail.com> Date: Fri, 15 Mar 2024 21:46:20 +1300 Message-ID: Subject: Re: [PATCH v2] Revert "mm: skip CMA pages when they are not available" To: liuhailong@oppo.com Cc: akpm@linux-foundation.org, nathan@kernel.org, ndesaulniers@google.com, trix@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, surenb@google.com, zhaoyang.huang@unisoc.com, quic_charante@quicinc.com, yuzhao@google.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 227DEA000D X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: r68hwbgmzrnsw9d463c6bbjn5utdefkz X-HE-Tag: 1710492392-860709 X-HE-Meta: U2FsdGVkX1/6N897Qv+cTvCln5LTxmmUnGj5eLSo66XPBQcdBsh38rFVlHIGwyGt8wlbHhLK21sSZsfc+pjFYBqyfQqirI0+wBVdWawRfsJq1TRwmckcAONgMHtLswAtRFKJSdf6t5jI+mfDy+RZParbGZJ4Z1Vp/UyK5M1jcIyK6ojc85LTQ1nCrMcz2iaKUMO1DHM1zvbHldbzPbUNV/yu3D72XXiDcLQueYHAb8tSsxEqQfgIVvd0hthpqyhQChX9j2jK9pxLb1AOwfAQ6FrBU45rNGseuV5FPC+5OHZptVpq/r0uq2+6YRca97aZRWbaeOVYQn5H5vWSViXgKUy9ShEk01kcfrtN95ZMytW61359y4eB8bPICBj634wTWF+AXIZH1K9wcuXO/SCYXty7LMsym3dhKjlYQwEOW70FlGuCzdnOU9adOGTRY+eutT1yK38fbub+9ElXEyYvpXUShjkEq+Lq8/rkF6c3g7Idtu2bkJbDCpL3JO3JPZp/H3UQvL1BJbUE5M1rX5OB93kOxlV3+2wy3oRSsC9kxpOq45hejPLNb5UfoLNQ/rC6VSK9TESfFlW0Rssc2lKVDvypej+fzpeM+Nf3n/UpuQ1uwZL/IXttW8iQt6euHnyNj8VDhkNP3HY+BkrAgpBAVrJt0YCfNQgCcgnKN6U5Fe5/Xcb/GUgDV3PLe62pcvz3cOzHLeRIO++ZnUhFh4S9LWly3BmBnIsTv/pK532QsxDM5wn7nUxiRI3dBPI6UUA7rZ7DH3Vp+id6OLRKABWNbpumdQWiZSlsOOMDE4FAsIG8eTbZP0rZ6Wlfs5nO+hZoh/SLxaMvsWukUgMLJ8epuTAZ970EquHLDKSHN+ytY7mDOo4yv9b3wi5VwGDJy8Hu48rtddYjC1UI76bCzM7hzH1PTGCb7VGjSsdfxnVqe9brwqXqL05L9LA1FFOm9FM2uOWUHoTY9hfj1+bqidn o1X0hYik KuLLNPArsuivTMGlXBa0iEoIInnse/WViyzbO 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: List-Subscribe: List-Unsubscribe: On Fri, Mar 15, 2024 at 9:18=E2=80=AFPM wrote: > > From: "Hailong.Liu" > > This reverts > commit b7108d66318a ("Multi-gen LRU: skip CMA pages when they are not eli= gible") > commit 5da226dbfce3 ("mm: skip CMA pages when they are not available") Reverting these changes seems inappropriate since the original patches did improve most cases. While doing direct reclamation without MOVABLE flags, scanning cma folio doesn't help at all. > > skip_cma may cause system not responding. if cma pages is large in lru_li= st > and system is in lowmemory, many tasks would direct reclaim and waste > cpu time to isolate_lru_pages and return. > > Test this patch on android-5.15 8G device > reproducer: > - cma_declare_contiguous 3G pages > - set /proc/sys/vm/swappiness 0 to enable direct_reclaim reclaim file > only. > - run a memleak process in userspace I assume that scanning cma folio provides additional opportunities to recla= im anonymous memory, even though it is ineffective for allocating NON-MOVABLE folios. Consequently, we alleviate pressure for future allocations of anony= mous folios. Moreover, setting swappiness=3D0 is a rare scenario. Instead of ent= irely removing the mechanism, could we detect such corner cases and handle them differently. Otherwise, I don't see any chance of this being acknowledged. > > trace the trace_mm_vmscan_lru_isolate which get > [ 1178.059160] 2825 3405 I UsbFfs-worker : isolate_lru_pages:1895 tota= l_scan: 24385 skipped: 24382 > [ 1178.059699] 2825 3405 I UsbFfs-worker : isolate_lru_pages:1895 tota= l_scan: 24412 skipped: 24401 > [ 1178.061747] 2825 3405 I UsbFfs-worker : isolate_lru_pages:1895 tota= l_scan: 24412 skipped: 24401 > From the log, tasks is waste time to scan lru list and call stack as belo= w. > > Task name: UsbFfs-worker [affinity: 0xff] pid: 3374 cpu: 7 prio: 120 star= t: ffffff8897a35c80 > state: 0x0[R] exit_state: 0x0 stack base: 0xffffffc01eaa0000 > Last_enqueued_ts: 0.000000000 Last_sleep_ts: 0.000000000 > Stack: > [] __switch_to+0x180 > [] __schedule+0x4dc > [] preempt_schedule+0x5c > [] _raw_spin_unlock_irq+0x54 > [] shrink_inactive_list+0x1d0 > [] shrink_lruvec+0x1bc > [] shrink_node_memcgs+0x184 > [] shrink_node+0x2d0 > [] shrink_zones+0x14c > [] do_try_to_free_pages+0xe8 > [] try_to_free_pages+0x2e0 > [] __alloc_pages_direct_reclaim+0x84 > [] __alloc_pages_slowpath+0x4d0 > [] __alloc_pages_nodemask[jt]+0x124 > [] __vmalloc_area_node+0x188 > [] __vmalloc_node+0x148 > [] vmalloc+0x4c > [] ffs_epfile_io+0x258 > [] kretprobe_trampoline[jt]+0x0 > [] kretprobe_trampoline[jt]+0x0 > [] __io_submit_one+0x1c0 > [] io_submit_one+0x88 > [] __do_sys_io_submit+0x178 > [] __arm64_sys_io_submit+0x20 > [] el0_svc_common.llvm.9961749221945255377+0xd0 > [] do_el0_svc+0x28 > [] el0_svc+0x14 > [] el0_sync_handler+0x88 > [] el0_sync+0x1b8 > > Task name: kthreadd [affinity: 0xff] pid: 2 cpu: 7 prio: 120 start: fffff= f87808c0000 > state: 0x0[R] exit_state: 0x0 stack base: 0xffffffc008078000 > Last_enqueued_ts: 0.000000000 Last_sleep_ts: 0.000000000 > Stack: > [] __switch_to+0x180 > [] __schedule+0x4dc > [] preempt_schedule+0x5c > [] _raw_spin_unlock_irq+0x54 > [] shrink_inactive_list+0x2cc > [] shrink_lruvec+0x1bc > [] shrink_node_memcgs+0x184 > [] shrink_node+0x2d0 > [] shrink_zones+0x14c > [] do_try_to_free_pages+0xe8 > [] try_to_free_pages+0x2e0 > [] __alloc_pages_direct_reclaim+0x84 > [] __alloc_pages_slowpath+0x4d0 > [] __alloc_pages_nodemask[jt]+0x124 > [] __vmalloc_area_node+0x188 > [] __vmalloc_node_range+0x88 > [] scs_alloc+0x1b8 > [] scs_prepare+0x20 > [] dup_task_struct+0xd4 > [] copy_process+0x144 > [] kernel_clone+0xb4 > [] kernel_thread+0x5c > [] kthreadd+0x184 > > Signed-off-by: Hailong.Liu > --- > mm/vmscan.c | 24 ++---------------------- > 1 file changed, 2 insertions(+), 22 deletions(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index 6f13394b112e..29306c29309f 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -2261,25 +2261,6 @@ static __always_inline void update_lru_sizes(struc= t lruvec *lruvec, > > } > > -#ifdef CONFIG_CMA > -/* > - * It is waste of effort to scan and reclaim CMA pages if it is not avai= lable > - * for current allocation context. Kswapd can not be enrolled as it can = not > - * distinguish this scenario by using sc->gfp_mask =3D GFP_KERNEL > - */ > -static bool skip_cma(struct folio *folio, struct scan_control *sc) > -{ > - return !current_is_kswapd() && > - gfp_migratetype(sc->gfp_mask) !=3D MIGRATE_MOVABL= E && > - get_pageblock_migratetype(&folio->page) =3D=3D MI= GRATE_CMA; > -} > -#else > -static bool skip_cma(struct folio *folio, struct scan_control *sc) > -{ > - return false; > -} > -#endif > - > /* > * Isolating page from the lruvec to fill in @dst list by nr_to_scan tim= es. > * > @@ -2326,8 +2307,7 @@ static unsigned long isolate_lru_folios(unsigned lo= ng nr_to_scan, > nr_pages =3D folio_nr_pages(folio); > total_scan +=3D nr_pages; > > - if (folio_zonenum(folio) > sc->reclaim_idx || > - skip_cma(folio, sc)) { > + if (folio_zonenum(folio) > sc->reclaim_idx) { > nr_skipped[folio_zonenum(folio)] +=3D nr_pages; > move_to =3D &folios_skipped; > goto move; > @@ -4945,7 +4925,7 @@ static bool sort_folio(struct lruvec *lruvec, struc= t folio *folio, struct scan_c > } > > /* ineligible */ > - if (zone > sc->reclaim_idx || skip_cma(folio, sc)) { > + if (zone > sc->reclaim_idx) { > gen =3D folio_inc_gen(lruvec, folio, false); > list_move_tail(&folio->lru, &lrugen->folios[gen][type][zo= ne]); > return true; > -- > Changes in v2: > - add reproducer > - fix build error on v6.6-rc7 > > Thanks Barry