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 D057DC61CE8 for ; Fri, 6 Jun 2025 11:20:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 375A06B007B; Fri, 6 Jun 2025 07:20:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 326876B0088; Fri, 6 Jun 2025 07:20:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 23D2D6B0089; Fri, 6 Jun 2025 07:20:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 0628A6B007B for ; Fri, 6 Jun 2025 07:20:03 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 7BD788146A for ; Fri, 6 Jun 2025 11:20:03 +0000 (UTC) X-FDA: 83524731486.28.831F143 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) by imf24.hostedemail.com (Postfix) with ESMTP id 4BF63180014 for ; Fri, 6 Jun 2025 11:20:01 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=uLrG6Jxz; dmarc=pass (policy=none) header.from=cmpxchg.org; spf=pass (imf24.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.128.48 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749208801; a=rsa-sha256; cv=none; b=BUZ/tD54G+HWrdzeJsy3569GokQ+CIqPh/AJKYTS74nrwFAnoVDx1E73Z49+YX+hXvDS5n /ebYTzvd3lsq0AINRcKRGo7c1Jcq4UtASbpALY0ZIwScpt4AjDms+o8JcjV+wj0rd4LDE4 gDGLj8PJeUIUBLdD/GJC/7A+cGRE2Lk= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=uLrG6Jxz; dmarc=pass (policy=none) header.from=cmpxchg.org; spf=pass (imf24.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.128.48 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749208801; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=MuQ7ElMFujECmYhgfOt92ztzf79cPNjqJC1YxZVfkjk=; b=wFV2NEiRfrlPVExCbPzEetdM7r9vP44lzn2sCCUyxRoZS1hgcblrjbjANiaxeXgRNunovi Jfz2hi81EVtqWWHvH45UVtpkpcXfFILNhBiUJXj114yqk65bqg0GO9FMFA6K6BIGIIqorb QGiaNYFfry1uykxgMvGeqLaZ+zPkCdw= Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-450ce671a08so12771425e9.3 for ; Fri, 06 Jun 2025 04:20:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20230601.gappssmtp.com; s=20230601; t=1749208799; x=1749813599; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=MuQ7ElMFujECmYhgfOt92ztzf79cPNjqJC1YxZVfkjk=; b=uLrG6JxzOE4UEh6whgReBBKg3k8RhbOxbyf9SEOw33uWw8EG44HwgMHIbBOAof790r OrG1kM94RvsAoZkSZjjmhfCScNxmeFMsEZkYSOmekGFCZggkqgtLzUWUDH+knQ/fLI3m 6W5spkvONCREorh0SOTcqv0FmdfiEIGZoCL7kH5M6j4w7fvTA/U8JTLnYINo5sFFX7ov K1o/8Bv9LjjJCxk/n3gehV4oWelUk1gv9hlWUURz7zog3LDYg6kxBRYZ6mDhm9GGLcsL fO4o1r9wHgFY2DF7n6i/lfT51ub7SC6EtisB0HE2QEBrWy2aUhiuzjutWxmVutdbM9UJ bScQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749208799; x=1749813599; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=MuQ7ElMFujECmYhgfOt92ztzf79cPNjqJC1YxZVfkjk=; b=AtDHWjMLY/Hd1wFE+7QF7xhkqgxcQmxoOjkuIiRT71ySP9F0n16VL29jrwtTDvBgOY QL/6uZlMlGjIKHd9ai2EFcKlx57HKoutfkCNvC1wVQHA380Urw00qx1BWsMrY5BKSLoy 8owfFhlj3yUm9Ai5YpQcg4M8/hQFClynyCEvT10kAGXbkofJhSVlQcpjrE97/QyHghCG PRPBKmah7ciYZxY7KQKczoRkF8LpRUnHoQC3WRlds+0xSMJAnuPeaAjIAlBvv9oTwKBL JOTiLd/xwKBOj00WW+fd9RaMnmxx+b32jaEcfA4ncnCdDNEtHjTuTu+TKf0CZBioDb0x 4MLg== X-Forwarded-Encrypted: i=1; AJvYcCW0jg7Pvmj/6PDividIYAI6p9p6GXD/7H9GK5+yqSI7qzXTSmqCzD26sBLoK8Vqi4/UquSdhwtFFw==@kvack.org X-Gm-Message-State: AOJu0Yz0VGz3prmgT9/Og0amzrWY1kKGMBXh7vErIUSLEJK1S6PWE0eD XqsUobe+kCrlsWGh3nLyik3yCMKaCFVSO3YbEMxPKuweVwtcZ0z26mqgqOBtLkVOaCw= X-Gm-Gg: ASbGnctQod0k1OsrSVQjxZ0/KSnWxCF/JXW97v0WrW179QQQ4O25OOC5++KZvxqIJXA braoTAIbD3fYwSlRKl88RhkIWaDB0cNShnnHiCFp8kfkvp2Lv0jtb8aTeq5GWA0Fb4yIma37wuC EbT6zDy53LplMY6kaBQN20MZaHmb+g0UnU1N+kcV9ton82xP0AkMXiUhuwZxjEFl+aB9qKYC4u/ GYH7b+P2IuvCxj8mewMaLNAL80zYPoHxiP/UcmwKDx6QDnKOVsNcZhwTdK0Qqq1YLbfWx5SUNno AxsNpl4CavMgYUlnbd5U82MaXwJEUa02kI+EGCBs+sBl6q3D/Vezd/qe77MpNK+L6RcZJw== X-Google-Smtp-Source: AGHT+IH2MrdFxFyb1RgZrJq3QgVItnUJDGd7Nbi2wT4HljZC4pDIqfq4GTUxdydboY7ZnYyQOl6GGg== X-Received: by 2002:a05:600c:3e10:b0:450:d204:34ca with SMTP id 5b1f17b1804b1-452013bb9a4mr33700405e9.18.1749208799424; Fri, 06 Jun 2025 04:19:59 -0700 (PDT) Received: from localhost ([2a02:8071:6401:180:da11:6260:39d6:12c]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-4526e056138sm18262385e9.5.2025.06.06.04.19.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Jun 2025 04:19:58 -0700 (PDT) Date: Fri, 6 Jun 2025 13:19:53 +0200 From: Johannes Weiner To: Wupeng Ma Cc: akpm@linux-foundation.org, vbabka@suse.cz, surenb@google.com, jackmanb@google.com, ziy@nvidia.com, wangkefeng.wang@huawei.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [RFC PATCH] mm: Drain PCP during direct reclaim Message-ID: <20250606111953.GB1118@cmpxchg.org> References: <20250606065930.3535912-1-mawupeng1@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250606065930.3535912-1-mawupeng1@huawei.com> X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 4BF63180014 X-Stat-Signature: ag1gsf5c1uporx4ptuad68ac43mgsg4k X-Rspam-User: X-HE-Tag: 1749208801-60847 X-HE-Meta: U2FsdGVkX18AlGHOz9rx7BMfzPEwROUU2lJaStT9JgrJOFowdU6NWfdfAmWntCty9XqvtTcBqaC5JeMukus09WFtO+rXAW0S2U0bLwQ27YzhxCVUJwXHPweMZEi5WRvZNSEwODIbjP5wse847670dddSpMmVCNXs0cX7PW0El7r1fEsmJbC2jkVvhlu62Gc1KhG+NoQY5gQ+C2suogzsjT4jIipd2eEhDgCWpM5Eb24OcOGNRnVTWCFYX8RgEy6GCMWf/9rH/mtXZ/Rd18IwqHttXrcNNw27kCcwCG1KaEUsN5MdsinFXYGmU8lSJh8LXRz1sqbId6QZKcssr41YucZeAuplf+XPiFQ1abkrwHyqJs8HT+8rrHm/Oun3Us2rmHHXHHXZIbb6Y+/folTmMbR00xilzipHSu/9VCFZ1EL27Y21txwT+qEUd9tsH5fjtAWzpbcKADCRORxoJZyXnIlq/lFHP9e7wrxz5VP8xNKf2ZayZvuUsPH+9vbyxRfQDCte5NMzY/RVu45pVJFAkqpMwYEn21/8z952AFEx4a5axepKe/SdoeBGgiCK9aKyKXIhKVMg2nSJiE/y/Mk3LHQm8W7gxftlo+w2gCqD9Qgsn4sZgJ/CnigRc6gR4QMIf7ylQD5zuAxK80YZjxUwBGw7RCHEEVOuu4mOfebxt987I01LjIst2q/CE0aI17HDzRiRPzA6mhnNYc13L2B5JtqXoR34umMTqNz2//GwFYRYiO0or2UFFdWgXB5A1CZrIBl7Bmch84XdWlzRgQXqywlLjdOJaz3KteDSbkSOaaqxBc0smQAa7MQL7f+ODgPFCfcHhpd8VBEmHf+61Tl5bEuccSE9mSf6RG/ArrE8Pc8K1kUmfRGBMKgKBqO9iyQvWE2wEknhrbJPMDixbS1hhE/BWHfsOK48/gzTK2399h9Y5OGkIsQt7WHhSkUGGuIIFTV+ApvobbGgvyxzwXM vVff4lJK yxPwzpg9zyiH1Lh22lj9lWkjXhOo0q3H1dCZhw83L33mZtDvbHi2ZOmOCIfW1U4COrjkbEEU3iNHDTUCdiIaA7zgS5JZcbEz2/cE2kWWz8x1YucsDf4wtV+EIzxaQvYVq8ohUs04qa5F2zW2j2WDzqqIJn9l/yvc2iaqWAD0f9jDRCG/RAImARvYS6YOunwUMlJ4ly95UuAm+F0oaSDcum0jEiqKzVu8jdpDkIoVWt2OjiuWxQeEXjhZCkaWmXj6KJbxNAoP1+1D+iLleNVgyor6ihOXxfChv1YIAsfw1pQothNmvdPZmNhfQXPy6w7YC4buxAqp0YLkzEcghHj3Oo3ldApU5nug8KYNZPp0xb3FpdGpwYXilrN/et3XNHrG4lkK32K2XzWBaomJuo9rttplqW9ng+Uu+kRlMGRhViSbo/qG7Vwunlw/VQ/1S8xrteN7YxBN2rrcbWdX8ZIflXpNl2w== 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, Jun 06, 2025 at 02:59:30PM +0800, Wupeng Ma wrote: > Memory retained in Per-CPU Pages (PCP) caches can prevent hugepage > allocations from succeeding despite sufficient free system memory. This > occurs because: > 1. Hugepage allocations don't actively trigger PCP draining > 2. Direct reclaim path fails to trigger drain_all_pages() when: > a) All zone pages are free/hugetlb (!did_some_progress) > b) Compaction skips due to costly order watermarks (COMPACT_SKIPPED) This doesn't sound quite right. Direct reclaim skips when compaction is suitable. Compaction says COMPACT_SKIPPED when it *isn't* suitable. So if direct reclaim didn't drain, presumably compaction ran but returned COMPLETE or PARTIAL_SKIPPED because the freelist checks in __compact_finished() never succeed due to the pcp? > @@ -4137,28 +4137,22 @@ __alloc_pages_direct_reclaim(gfp_t gfp_mask, unsigned int order, > { > struct page *page = NULL; > unsigned long pflags; > - bool drained = false; > > psi_memstall_enter(&pflags); > *did_some_progress = __perform_reclaim(gfp_mask, order, ac); > - if (unlikely(!(*did_some_progress))) > - goto out; > - > -retry: > - page = get_page_from_freelist(gfp_mask, order, alloc_flags, ac); > + if (likely(*did_some_progress)) > + page = get_page_from_freelist(gfp_mask, order, alloc_flags, ac); > > /* > * If an allocation failed after direct reclaim, it could be because > * pages are pinned on the per-cpu lists or in high alloc reserves. > * Shrink them and try again > */ > - if (!page && !drained) { > + if (!page) { > unreserve_highatomic_pageblock(ac, false); > drain_all_pages(NULL); > - drained = true; > - goto retry; > + page = get_page_from_freelist(gfp_mask, order, alloc_flags, ac); This seems like the wrong place to fix the issue. Kcompactd has a drain_all_pages() call. Move that to compact_zone(), so that it also applies to the try_to_compact_pages() path?