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 B765EC369AB for ; Sun, 13 Apr 2025 02:21:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B1F8468004F; Sat, 12 Apr 2025 22:21:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id ACDC9680041; Sat, 12 Apr 2025 22:21:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9962968004F; Sat, 12 Apr 2025 22:21:10 -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 7BD92680041 for ; Sat, 12 Apr 2025 22:21:10 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 64A4D141C6A for ; Sun, 13 Apr 2025 02:21:11 +0000 (UTC) X-FDA: 83327418342.21.A1FAF6C Received: from mail-qt1-f177.google.com (mail-qt1-f177.google.com [209.85.160.177]) by imf01.hostedemail.com (Postfix) with ESMTP id 5B9AD4000B for ; Sun, 13 Apr 2025 02:21:08 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=x72QZAwt; spf=pass (imf01.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.160.177 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (policy=none) header.from=cmpxchg.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744510869; 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=jWkA7vQ/c+0VRrZgTyEC981ztpPVEml2pn39wtS3+nA=; b=RK8eDY7j20HkibtRyQAZZhGqrCFOMPxjy6AJN9NGUG9QvWIX89B1HQLZyEzSMytEFF/ANP dF/3vzc7+7vIVxFmwg9s7HOnzUcedYOza7sqdCk4ZrzEhlRqSzleZ9/W0U46mNjAkOzxzE W4uBL0mkBtS7Gm/Bn6Ya1nKwPIoSVrM= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=x72QZAwt; spf=pass (imf01.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.160.177 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (policy=none) header.from=cmpxchg.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744510869; a=rsa-sha256; cv=none; b=BwGnjDQuzNwj7VXQYZQ+PjFt7QjZPnObDgN4LuVwmYI77r2xd8/WsE9qS41q/pbo0t2xfF 0jgSHnbV8/UfdBj1Z/Ox+2XikHDJjBJza8pccIMuEkMYt28I83bZCKQhlY4OAu++WOgJ80 XYSPl+huT4DW1O254hzmy2Yf4iN4YrY= Received: by mail-qt1-f177.google.com with SMTP id d75a77b69052e-47698757053so38088941cf.0 for ; Sat, 12 Apr 2025 19:21:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20230601.gappssmtp.com; s=20230601; t=1744510864; x=1745115664; 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=jWkA7vQ/c+0VRrZgTyEC981ztpPVEml2pn39wtS3+nA=; b=x72QZAwtBKPq72C/p+DoNT5qB86AdlIejmCjX6OSEqc9czGHCDlUswFNPQgBGnN5O+ xLjXehzchy6T4Qga5brHFoDkUcOcuNq3O39XDjwQ9ydmcRUOFXgwPeN6r6EefUCtk/7H fjYs5zkQKIdvjvjL5M6NJJfXLn8hAqHHZRx47lamDE4tqAlSGXNKHpSiw8nA5/w2NF6X JEM2vArJnFgiPJN4KHILsvp1+NxQJQecV4JSWSQ0K5eh1m8x5tsBQ4fxw2FhquMbQLB2 ToH5Ihm+Hvitq0sR06IT8Z/IuDqlS2evYWIH5tG1u8Szj88m+ybPnL2nz5RbOnxGcZWw P5Ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744510864; x=1745115664; 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=jWkA7vQ/c+0VRrZgTyEC981ztpPVEml2pn39wtS3+nA=; b=PuXZaEahVaZIgBST2lk9erRvoNKavJRMZi7XEgKv3NKgSoLBP5lRw9xsplb+ZH0ile fxZBziyvZWxgvz4cHLGSMiiRL7AmDSbKuivFi9HnG0b5U1CU6vubsQkMmOznPzneFOeR 5cNsp0CExx22h2zE8kog7/t25q/Ckk+jTMQM+Y6uUWYKBz1fsE9BHhN3+F8nn1Q/FzTs JjvWOU8X0cBsioXY4A2+3Nm/NFFrLEB3rmaTLQDcn7bvidCFjo4qLa5LIv9kpVH8D7Cq wwcbALpUq0aXzuYrr85jdN1NdHigybCiNWaKt647KvsJ/3v6ICpa9DDSOBjK6XQiGpCC 9NOw== X-Forwarded-Encrypted: i=1; AJvYcCXxhHYdb3aZNAGUHeceBEVliYX0NQB8bTKZ3gC7bLgoBYYoBTQZymm/r7ZOMCJgt3bULv2/7CVVvQ==@kvack.org X-Gm-Message-State: AOJu0YwGIoip/7AN12LnDzHk7SZr8e7vFV1Y/AEF18aKEJlFHuQj0QK0 ekGcDeeEAe2u9dIrvCA0GcmR/vBIqX6y6IXla6p4k+mnNnN7OcQS8laBluY6gB4= X-Gm-Gg: ASbGncv5vmvB6yLxQE1iPhOEp/Evk9RzWBZPVXAgQdFKPQpxQSNTJUOAmBT5OnEtB7m upL/6n1ERV41tokhLbsz/OmxqfMhCStXXlSvHoBiTWQpEv/YeIe1ZGMkvgbHOvXWXBliyF20HxQ Si/4ow8BqUQcA0hDsZOcOFnZg4HJWaf5M/j9RsFWawM9iyJU1LKDdUFmd11Vx5uSDw8z70v9JWu Vm/WpUwG/wWYsz0qx9xWlgHU77C8s37RmFct6T/fGHQdq7Dh7b9cp5y5fgR94fryEr3PGEcOcrZ y6iCpydLtHg2Y3H8F+3ONNSkYBRAMQgZqMszw03Dcq3+PIre6Q== X-Google-Smtp-Source: AGHT+IE4qpLB/60kyYML5kFw6me8KE+QS51k+9h7mGmPBWkU7zSVXEEo9OIhyQg2vUTPMcKfnaHZgw== X-Received: by 2002:ac8:7f8e:0:b0:476:6599:3e29 with SMTP id d75a77b69052e-479775e2b50mr127090041cf.43.1744510864123; Sat, 12 Apr 2025 19:21:04 -0700 (PDT) Received: from localhost ([2603:7000:c01:2716:365a:60ff:fe62:ff29]) by smtp.gmail.com with UTF8SMTPSA id d75a77b69052e-4796ed9bd5fsm48787051cf.52.2025.04.12.19.21.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Apr 2025 19:21:03 -0700 (PDT) Date: Sat, 12 Apr 2025 22:20:58 -0400 From: Johannes Weiner To: Vlastimil Babka Cc: Andrew Morton , Mel Gorman , Zi Yan , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 5/5] mm: page_alloc: defrag_mode kswapd/kcompactd watermarks Message-ID: <20250413022058.GF366747@cmpxchg.org> References: <20250313210647.1314586-1-hannes@cmpxchg.org> <20250313210647.1314586-6-hannes@cmpxchg.org> <46f1b2ab-2903-4cde-9e68-e334a0d0df22@suse.cz> <20250411153906.GC366747@cmpxchg.org> <20250411182156.GE366747@cmpxchg.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250411182156.GE366747@cmpxchg.org> X-Rspamd-Queue-Id: 5B9AD4000B X-Stat-Signature: g976fx4x6rpr9eojr5mkyiban3ascxyw X-Rspam-User: X-Rspamd-Server: rspam12 X-HE-Tag: 1744510868-877317 X-HE-Meta: U2FsdGVkX1+BMaH3qYQqO6bTpM1N1Pv3bEYQIEFkfyLcZEM81vyWxORdKDizkDQO0MrA1p4yPf+Ep7LKQXTvK+JwRXC6q0KQEEqQ7yfUiGrCAp421LfrDU6T7Lj77vCICvQR7gHo06TGzOtPiSFTedInanRUwwRWAgRAhE6VD75BEO+y3CYbkm7qCmzMY4Eny1ppCVr9C5xfLDZILrJTimbALQgicuHKVNvq6r4Q7R02fw3HsXN4KMpUBHrj2Qd1qfUTr7+fZYZCB/ltPEzkkF3Zzag8lljrh2K1BLUTXCJYizIAXo5DOK3WLB2rJpDsPoV5ta2eTMSrn6+M6KWTMDyGVSxHgq5zdJ3bwDySmvn2fvfGYtshdhxXEdNaExdIIDenZ+Y2O5Q10P5SEPxW9awgnE6Ac2U6KO4R/R3DpfJEwfUGrmfSWqIRSjnNs2y6bBhFxe4Er5UGxtWpLbkMMwyJcIHenbNb063gz87Me1Fvk2t5RQ2cKn7/qNuOeyPzW0d++Ee38rKnNvgjGxtZB1bO2jSM8opxniIbi/W/91uztjYDsPZ6a7XSkL8MKr6ETe8XLA8NE2hJ4+NfxwwRrTHVkXyjAkcQjzbqNpDjdx5jHrGe7JzTke+cNRzDmiXOIUcV1Tht9bpjmZeHiVSeqjPoRvAB6rbqTuzETEILUsCh6pY0kNNQyAzVbdDrgCDXx+6DB2kuFoS7YSoqLdHhUsJQHMiSNFXNfBDjbNF/h6otgleAXYHiAHSzvUQmGeNESfPh+HPYEkF2aBAeNF/1qK/5BFi3gKP8yfgcQev0iO2qo7DEjgFVh0zPnTcqjnmb8EBegIlpcQVxTPrW/4/S5GeWTR/kecsQez7Hj94GrXcp8txUyPTvCugQdGylqwQ6HUXPZgFxE2tpPfG5lpdwFokEsGNMssDcOaRMPrDSAxXDpnjMER4TFbgRVb/EPrEN7YK1K0gEG+u9AlBMAoG 85LvV8Ps YXx5LIKuKFhj7i+J3ECSRJMGDGCCQpAObEKL5J1Rs3e872CBeBuRocaTfIL11If1GvSX6vEmaQchcye4riDiy4H7Uyn+QUMCqm11knEvyby/iQ5V+FCQocapasUFcsNzJ58wlb9EB0oA7mN4+cgDSy8H4lNGNCvn16jpwMcuL2Q+lwIoISCUyujO69H6LrIY4Y7cdBrzqnpRrPQh3S9B2+aQl9skOgS6oBLeO7G7rVCZjgX26anfHNNbkaX1ZgRxj/6vUmPh+hM6EQTg3A82IGZpSNpX1KWQidKwAuW8/YIN3m2jiH01Z5fpU1gm7kx2c7h5k5HQkLjPIxQWNSOJRyi0GniP4aLrn3xgrFSPJbaMrxt8Chps0kurnj0voSIj2scAEU0UrHnAqr6FEgOHNnfcY6oJ2NPnNuHXdgA7tQvtuw3BbS5/I+3cerxpWIq2r/By2/OOmHioNYUPw3DXqBEEmETUEu6f/XXmcs2d5ihInbtImOFLs5tr/wrrMH7POHHE+tAgwmGgQvDjHkNNbV1XHRW/mF6s32AarpC8AR3N8SgY= 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, Apr 11, 2025 at 02:21:58PM -0400, Johannes Weiner wrote: > On Fri, Apr 11, 2025 at 06:51:51PM +0200, Vlastimil Babka wrote: > > [*] now when checking the code between kswapd and kcompactd handover, I > > think I found a another problem? > > > > we have: > > kswapd_try_to_sleep() > > prepare_kswapd_sleep() - needs to succeed for wakeup_kcompactd() > > pgdat_balanced() - needs to be true for prepare_kswapd_sleep() to be true > > - with defrag_mode we want high watermark of NR_FREE_PAGES_BLOCKS, but > > we were only reclaiming until now and didn't wake up kcompactd and > > this actually prevents the wake up? Coming back to this, there is indeed a defrag_mode issue. My apologies, I misunderstood what you were pointing at. Like I said, kswapd reverts to order-0 in some other place to go to sleep and trigger the handoff. At that point, defrag_mode also needs to revert to NR_FREE_PAGES. It's curious that this didn't stand out in testing. On the contrary, kcompactd was still doing the vast majority of the compaction work. It looks like kswapd and direct workers on their own manage to balance NR_FREE_PAGES_BLOCK every so often, and then kswapd hands off. Given the low number of kcompactd wakeups, the consumers keep it going. So testing with this: diff --git a/mm/vmscan.c b/mm/vmscan.c index cc422ad830d6..c2aa0a4b67de 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -6747,8 +6747,11 @@ static bool pgdat_balanced(pg_data_t *pgdat, int order, int highest_zoneidx) /* * In defrag_mode, watermarks must be met in whole * blocks to avoid polluting allocator fallbacks. + * + * When kswapd has compact gap, check regular + * NR_FREE_PAGES and hand over to kcompactd. */ - if (defrag_mode) + if (defrag_mode && order) item = NR_FREE_PAGES_BLOCKS; else item = NR_FREE_PAGES; I'm getting the following results: fallbackspeed/STUPID-DEFRAGMODE fallbackspeed/DEFRAGMODE Hugealloc Time mean 79381.34 ( +0.00%) 88126.12 ( +11.02%) Hugealloc Time stddev 85852.16 ( +0.00%) 135366.75 ( +57.67%) Kbuild Real time 249.35 ( +0.00%) 226.71 ( -9.04%) Kbuild User time 1249.16 ( +0.00%) 1249.37 ( +0.02%) Kbuild System time 171.76 ( +0.00%) 166.93 ( -2.79%) THP fault alloc 51666.87 ( +0.00%) 52685.60 ( +1.97%) THP fault fallback 16970.00 ( +0.00%) 15951.87 ( -6.00%) Direct compact fail 166.53 ( +0.00%) 178.93 ( +7.40%) Direct compact success 17.13 ( +0.00%) 4.13 ( -71.69%) Compact daemon scanned migrate 3095413.33 ( +0.00%) 9231239.53 ( +198.22%) Compact daemon scanned free 2155966.53 ( +0.00%) 7053692.87 ( +227.17%) Compact direct scanned migrate 265642.47 ( +0.00%) 68388.33 ( -74.26%) Compact direct scanned free 130252.60 ( +0.00%) 55634.87 ( -57.29%) Compact total migrate scanned 3361055.80 ( +0.00%) 9299627.87 ( +176.69%) Compact total free scanned 2286219.13 ( +0.00%) 7109327.73 ( +210.96%) Alloc stall 1890.80 ( +0.00%) 6297.60 ( +232.94%) Pages kswapd scanned 9043558.80 ( +0.00%) 5952576.73 ( -34.18%) Pages kswapd reclaimed 1891708.67 ( +0.00%) 1030645.00 ( -45.52%) Pages direct scanned 1017090.60 ( +0.00%) 2688047.60 ( +164.29%) Pages direct reclaimed 92682.60 ( +0.00%) 309770.53 ( +234.22%) Pages total scanned 10060649.40 ( +0.00%) 8640624.33 ( -14.11%) Pages total reclaimed 1984391.27 ( +0.00%) 1340415.53 ( -32.45%) Swap out 884585.73 ( +0.00%) 417781.93 ( -52.77%) Swap in 287106.27 ( +0.00%) 95589.73 ( -66.71%) File refaults 551697.60 ( +0.00%) 426474.80 ( -22.70%) Work has shifted from direct to kcompactd. In aggregate there is more compaction happening. Meanwhile aggregate reclaim and swapping drops quite substantially. %sys is down, so this is just more efficient. Reclaim and swapping are down substantially, which is great. But the reclaim work that remains has shifted somewhat to direct reclaim, which is unfortunate. THP delivery is also a tad worse, but still much better than !defrag_mode, so not too concerning. That part deserves a bit more thought. Overall, this looks good, though. I'll send a proper patch next week. Thanks for the review, Vlastimil.