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 4F860C36005 for ; Sun, 23 Mar 2025 00:58:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DDF45280002; Sat, 22 Mar 2025 20:58:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D8EE6280001; Sat, 22 Mar 2025 20:58:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C300D280002; Sat, 22 Mar 2025 20:58:31 -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 A1F27280001 for ; Sat, 22 Mar 2025 20:58:31 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 0FBE4C1C26 for ; Sun, 23 Mar 2025 00:58:31 +0000 (UTC) X-FDA: 83251005222.03.CEF9827 Received: from mail-qv1-f43.google.com (mail-qv1-f43.google.com [209.85.219.43]) by imf18.hostedemail.com (Postfix) with ESMTP id DCB9F1C0006 for ; Sun, 23 Mar 2025 00:58:28 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=UWrsLkC5; dmarc=pass (policy=none) header.from=cmpxchg.org; spf=pass (imf18.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.219.43 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=1742691509; 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=aeEPSpi+LouXy84gWofWuqLxs44DebxEJYRwtj0CHQ0=; b=1/wgvTzNh4f9eww38/0PcLdpwC8Vn+A+hNx4PjlglgDvci6MpA8pYP5bBDlyX2PqU+VnLT KbYpUD768VzfaMm8xkvt7uGODuxQjltalz9U0iiZLlzGKWCFV5lZL3X4r1kA9Ec7urMeN1 nBokraUqvl6DVzGvw/NIQkuFHGgU6s0= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=UWrsLkC5; dmarc=pass (policy=none) header.from=cmpxchg.org; spf=pass (imf18.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.219.43 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742691509; a=rsa-sha256; cv=none; b=U++uhHkwsCYi3ldUtXE6N7EsYI1UB3u1FwUSFWBnu0KOkT5+TWNiV6xdlOjNVM8TGjgTom uBP4VcqWfKc+oQTWoixGtDpgGmDvMqrXQpmUw/KZqAaAzkPQpxabRUl/bLXlyIHx/wRpuh Bmi9caC3ryeULLJ+l+ZZ1qJ3iaap31w= Received: by mail-qv1-f43.google.com with SMTP id 6a1803df08f44-6e8ec399427so25829346d6.2 for ; Sat, 22 Mar 2025 17:58:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20230601.gappssmtp.com; s=20230601; t=1742691508; x=1743296308; 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=aeEPSpi+LouXy84gWofWuqLxs44DebxEJYRwtj0CHQ0=; b=UWrsLkC5FUUEUNlf4CAB+OcVCEMFW4bGadWkoI6/hbKFiZe+0HTnPUDzaUBsJRM8Kh lKKRfComLxb55/udrnPWAD4QHfqJfiRGzMSB10DfL/wGQ3U+qoTzSCvL/eQ8yJWNL1Pm xHSGPubnYmZbTLqmPvHtrpxpTv0lW+f0CdpCLiuMTci1UThyafPIZ4EhhscBwrbxXSsq 8V/6El0WSZN2uzWN0eMNPUSskTjT/C3XAJj/XSwX5SzIA2LQtr4qcJJNHtHRImHhhQNc u2xDCSMspsXy3bdhQB0xSdMD610LhLZKsaNYDxNIZ3Y3b0AUiLdsPFbi+pFfkTViX9cZ kd6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742691508; x=1743296308; 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=aeEPSpi+LouXy84gWofWuqLxs44DebxEJYRwtj0CHQ0=; b=Y1JavXcxh+YALT6m1PaXJ7SHUglfjYbXyhhoN+P/qadGk6d4nNhyZK7bWtmPK+ADLk mOKCLiMaGIoXz0Mf2W1hraM2TlGgyxhqQcWve5ztWhI4me30dKHdlZpo0hZhQ2WFap5D t5vd3vC++w4ELOMKZktmsQcJAGm0Vg8BtKkmqgPyyUQV7QPBHD0VHj130uOeDSqOn8bO mdfDHNlq8TvJOATO3y9G/q6yeWVPEzznW/oayoyQ14f/bNg+cEwmHA0eL4W+xi+Ec6gV PgTK7NfYp18kFqOphld/GnJ3uZf5LO/AzL4tG9VpuSVWXd5I0adJASXwGfujpdQtwA4I Y3Dw== X-Forwarded-Encrypted: i=1; AJvYcCWtTTzxMONmYgShKQeYKifJP80xu3Yw4YuImlI2D0cWtKLB+/NAc9sAlIvurGVyFg+ZkVccxGlMeA==@kvack.org X-Gm-Message-State: AOJu0YzHPa+ahFEO26ftaAn8vi7Dgcr80rNW4zK/eGWgMF0M3dsI1BWG 5qnX2fyVtRUB5VUXsFgrjq6PSMzmwLj5wxn8F6rtsNVlzd2E8GBthXxeQf/VJ+8= X-Gm-Gg: ASbGncvr7szDuZ40YmWHdDRQc/WWXE52uqegmYqLWT/yXX1/k8M6FOxd9HL+RTwqcNs uppbr9xtb7F82Dcx7v44T+volW4/hzXBw3zXbbWaMKT1rqSaINS9hl0knucVZEFTta1fJTOjFVm QvOsdFMooh/I2bCbP+OTtSheXPF4rqM3iJbEMFudADzWucmtnt18P71+uUmz8eFK5kceZCwSrwb 2cDVfh6unVamHtIqC5MuJo0EOe9A+hziTC+kBbDUE5nv/4QGNTZyRltkNu3CqF5DcC3A4ulk5W9 ZZv+JJmmlZ4CMgycya4l6U5JQp7YXXKSnSmxwvC0V2c= X-Google-Smtp-Source: AGHT+IEEHlubSb2PqXumVDJJbARdcGgmHLjdwg+WVivkPmYNYOKDMb0d62YkgtAOTCepL4GbgJ3inA== X-Received: by 2002:a05:6214:1d24:b0:6e6:61f1:458a with SMTP id 6a1803df08f44-6eb3f2c8664mr116957126d6.14.1742691507736; Sat, 22 Mar 2025 17:58:27 -0700 (PDT) Received: from localhost ([2603:7000:c01:2716:da5e:d3ff:fee7:26e7]) by smtp.gmail.com with UTF8SMTPSA id 6a1803df08f44-6eb3ef1f5d8sm26728796d6.45.2025.03.22.17.58.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 22 Mar 2025 17:58:27 -0700 (PDT) Date: Sat, 22 Mar 2025 20:58:23 -0400 From: Johannes Weiner To: Brendan Jackman Cc: Andrew Morton , Vlastimil Babka , Mel Gorman , Zi Yan , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/5] mm: page_alloc: defrag_mode Message-ID: <20250323005823.GB1894930@cmpxchg.org> References: <20250313210647.1314586-1-hannes@cmpxchg.org> <20250313210647.1314586-4-hannes@cmpxchg.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam01 X-Stat-Signature: ia53zt4n37gufrtkiwrxwwk46iyztmz7 X-Rspam-User: X-Rspamd-Queue-Id: DCB9F1C0006 X-HE-Tag: 1742691508-62395 X-HE-Meta: U2FsdGVkX1/L8BBRRx5aZsWsdEc7/73Pzy/XRfd1FrZ8Ibd/eASbYloNrCFceu2BtieVCeJq+T2C6xVivHtS7m40UaOi7+zrktyaVrGJ1jag+QWPL2ROO1dDaxXMIpvWc9hldOSuc1M7BzOYopCYAbpfSDhW3zKO+HCg1WvYLhw5leKjUqRJK7H+yuVm8D1r0pyo3pDJ+TauAL+l7XUferjmw2m9s27+oiU7tMQukltZar0dB9qrSZOaZhkQYhhyocxHj7u+9QwPUyKzAlCXDOhmq0Txh27hAlioTTcl3qZ8Nxa1X6UIWfwfH5Jz0rWtr+YOIoTgXDNOKb/UJZDY9fP4Y2PZv6X+CI0fl7T57wHXC4hxe0B//+Ij8ZV5nljH3Izux6inTif+cBqGxG7CctQKYFuyRY2GWRuVYpOvCgynC2c1Jkpxzb22ZZTAD5ZWEBIEZ56g9Dh7ojlsVgtn4P+Sm478zKQ5qNDK2AGpaQLuyh9jXC95XWYP89Rs6+2dJvb8twvzUeBZ7J7u9TCjrfhSOEZYdR2UMIpZ2xqb6YxvuLzzUAgvL0eGCv+2HcXD73poCv9sKPB3lpcYOKZBKc/uMxYOzw5eNE3revfpPZ7c43ST9Txk0HFFtiBdEShFNHmuDFArwbFHEka/sd+WxyBzFtTk8I5oog+zOeSPeNvN6WzFmxfrvQ0+3bVKxsqbfeHBmthKtOGT824FQqWGKrca85Vlktp13qfwTLdAd7CTLBO/pB/R/2LH06pVW8z2iiSVGQ15Ii97IFvL46cHP6XHdsOCohYt/LaP8lr9HMnFRtrANA29jQhcvQ9IEhlZX3d8rhusIYsBLF7e0zBUCcTqs7auKM99H1DYg2Q4UxNAOjsTFBGgXb3YeS4fFzEzJMJz2T4FTJrJk4eTMDhRVtV8aBYoyxA1TWp35mu2HobXJ2morPI1Wfo2jOnlwuT6kS9slympQ3REm5cvfP0 K2CdG1O4 S52fVVHtoh2aXmqCLvCz3uJePFMpDJMHfbEPY5VXA2lmSHolB+vV4Vw0z14Z28DBQF7sd99DVOkDKF6JZNMTogSiPxgqb2g0gnhrzOqfF4sJ2MwBb3WJy8Mqet70nKR28tAI1V1bJ1H3irdTQjN29jdoVs1dB0LsPT3fowAgkvbQqNdNOvWxWGIWt/DQ8FrVYxnxZzt9r+HrOXIplyclwvEdKDicqJfP+IXXY42qLrgVNNovBiTnIHlT7xu0MaJjNZiRset9ceU/OaKDhXoa5OdeF8KVl0BbnGRHlJOhb4U5WFgq0qbRTUZ/NiKd+dfbjbwOAbYoCjLj9LRdfNTcEjNnEDQEXkwAHcnmNKNK/3gGnRXfbrSnjD2QhclrnLs5kXDTJwt4rA0zHob7m/X7KhR/S1ZLYF6cv1k2rY6CrPIRMNF/OpYzHm3MfhHEoX9LK/rqjhkCG3tz6BQGDEfshKpOjl6aN+6XObJV+wMm420kmcxZ1E3S+4dMrLDiIuGV+3bpPuoyOlYR/nVEoMyxeTKrAeaarYX8FN/eROm1TVZXiS+PY4NPljaKQ0w== 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 Sat, Mar 22, 2025 at 04:05:52PM +0100, Brendan Jackman wrote: > On Thu Mar 13, 2025 at 10:05 PM CET, Johannes Weiner wrote: > > + /* Reclaim/compaction failed to prevent the fallback */ > > + if (defrag_mode) { > > + alloc_flags &= ALLOC_NOFRAGMENT; > > + goto retry; > > + } > > I can't see where ALLOC_NOFRAGMENT gets cleared, is it supposed to be > here (i.e. should this be ~ALLOC_NOFRAGMENT)? Yes, it should be. Thanks for catching that. Note that this happens right before OOM, and __alloc_pages_may_oom() does another allocation attempt without the flag set. In fact, I was briefly debating whether I need the explicit retry here at all, but then decided it's clearer and more future proof than quietly relying on that OOM attempt, which is really only there to check for racing frees. But this is most likely what hid this during testing. What might be more of an issue is retrying without ALLOC_CPUSET and then potentially violating cgroup placement rules too readily - e.g. OOM only does that for __GFP_NOFAIL. --- >From e81c2086ee8e4b9f2750b821e104d3b5174b81f2 Mon Sep 17 00:00:00 2001 From: Johannes Weiner Date: Sat, 22 Mar 2025 19:21:45 -0400 Subject: [PATCH] mm: page_alloc: fix defrag_mode's last allocation before OOM Brendan points out that defrag_mode doesn't properly clear ALLOC_NOFRAGMENT on its last-ditch attempt to allocate. This is not necessarily a practical issue because it's followed by __alloc_pages_may_oom(), which does its own attempt at the freelist without ALLOC_NOFRAGMENT set. However, this is restricted to the high watermark instead of the usual min mark (since it's merely to check for racing frees). While this usually works - we just ran a full set of reclaim/compaction, after all, and likely failed due to a lack of pageblocks rather than watermarks - it's not as reliable as intended. A more practical implication is retrying with the other flags cleared, which means ALLOC_CPUSET is cleared, which can violate placement rules defined by cgroup policy - OOM usually only does this for GFP_NOFAIL. Reported-by: Brendan Jackman Signed-off-by: Johannes Weiner --- mm/page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 0c01998cb3a0..b9ee0c00eea5 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -4544,7 +4544,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, /* Reclaim/compaction failed to prevent the fallback */ if (defrag_mode) { - alloc_flags &= ALLOC_NOFRAGMENT; + alloc_flags &= ~ALLOC_NOFRAGMENT; goto retry; } -- 2.49.0