From patchwork Fri Apr 4 11:11:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Clapinski X-Patchwork-Id: 14038307 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 6018AC36010 for ; Fri, 4 Apr 2025 11:11:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3EF7E6B000E; Fri, 4 Apr 2025 07:11:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3759A6B0010; Fri, 4 Apr 2025 07:11:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2148F6B0011; Fri, 4 Apr 2025 07:11:25 -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 ED4F26B000E for ; Fri, 4 Apr 2025 07:11:24 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id C1ED058814 for ; Fri, 4 Apr 2025 11:11:25 +0000 (UTC) X-FDA: 83296095330.26.0430A1B Received: from mail-ej1-f73.google.com (mail-ej1-f73.google.com [209.85.218.73]) by imf29.hostedemail.com (Postfix) with ESMTP id 371DD120004 for ; Fri, 4 Apr 2025 11:11:23 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=h3q360yf; spf=pass (imf29.hostedemail.com: domain of 3Wr7vZwoKCNsJ9I7MFKPHFDLLDIB.9LJIFKRU-JJHS79H.LOD@flex--mclapinski.bounces.google.com designates 209.85.218.73 as permitted sender) smtp.mailfrom=3Wr7vZwoKCNsJ9I7MFKPHFDLLDIB.9LJIFKRU-JJHS79H.LOD@flex--mclapinski.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743765084; 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: references:dkim-signature; bh=Zymo7rZ7Uaxj5C85OkxMopyfJntujg//NlAcCsh1y3A=; b=UHLBasD3wIHXwwiprPhE9g+I9Y5PXWpoBtlGzdIUKGzVEjgoLozH5qCg7wh7m1rf596ROs tkQf669U40dSbVIddeWz2soX2ySgMbdkuSf6FNvEiI/fi2JbnmwAEhMKmBV+P3vuYg9vws jmN7hTu3ya1Adv353csjlwlUUm82RsU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743765084; a=rsa-sha256; cv=none; b=1b5KZiYh6YP9A9JzJB2RNo7OFBxm6rpBj2LQQ0gWZHHI+6V/dKlxzuhzjF2FRMcCw3JJiE wKebndSIo14q+mMBdrQY/1NuAVT5noMkLDlheRmMc7EkbcUuK+9UTZjxvLvsZQqVlhtpKb eJ1sA8hnWa244gWyTC3Q0sZDKn1mUlA= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=h3q360yf; spf=pass (imf29.hostedemail.com: domain of 3Wr7vZwoKCNsJ9I7MFKPHFDLLDIB.9LJIFKRU-JJHS79H.LOD@flex--mclapinski.bounces.google.com designates 209.85.218.73 as permitted sender) smtp.mailfrom=3Wr7vZwoKCNsJ9I7MFKPHFDLLDIB.9LJIFKRU-JJHS79H.LOD@flex--mclapinski.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-ej1-f73.google.com with SMTP id a640c23a62f3a-ac3d3cd9accso162486166b.3 for ; Fri, 04 Apr 2025 04:11:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1743765082; x=1744369882; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=Zymo7rZ7Uaxj5C85OkxMopyfJntujg//NlAcCsh1y3A=; b=h3q360yfqwpQ/kGshNvTi1sXJKD65wFGnTSCDYN8PgeMWNXDSjxiHmq+b47fT1Wybw xC1UDVwtJPfT7FlBxhSuiw+SXjZVkCPgqfhyvOdIWxEDOXFbYkxy9JqVlK5YOriYd9Dx ZyKtJf8EIycJHAqECJdA6aTRvioRklkljE3WNJtNIBAwuz09dyPLDTqAtO2GDB4DcIBU DCu61xJsNTrjTjol55iDreslO6FdKSyZa8G2+tK87OHIZeCQZZAkVBDn9DsXRTfiviqL FZPA+NeEJlQZxO99Nwd9ylQ7l1XfBAPvNfV4zi3MKwEABG6RJyyqo2P8qqm1zzdPd/Pw QeSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743765082; x=1744369882; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Zymo7rZ7Uaxj5C85OkxMopyfJntujg//NlAcCsh1y3A=; b=Rj+cMc8ZBPHOioNNhB5Pwy7R8HrdN/MZnEAioXyz1tfxxCHVBprFWrkevjJaeGZz3e 91ElwzE24ZAc1pL1l4QUX01UV0IuXQrflKbAhVxnvmsv4fYqp/3ISs9tbiP3cDwAojZR X7LbGi68yuova79ck+tuerjwkN27Ci6+4oApVkFo0Bywy6Cgid4zuF/DThg2OF2ef7WO 8ERBxbQ/EQb9dY2bNMPvu9XMzxXB2hX4jo3xqvWrKaQFP8Z8hNmfny4TtEMZS8uXfy20 6tfX2WCJE13KOeDI1tTTW51y1K2yBcr+rEnZZV8UnBDnJaDAqS1RX2iRWKIlMAhidbK3 TCMg== X-Gm-Message-State: AOJu0YxF7Kr0jiPgD4sW/T8N6SXkpGyUAKYgfAEqemPf4jQ4EplwF5Og XpWfjwXarByRJINnlxIn1kXgX34aBSoESkFdnu3m374GhWpRTX2iZClT8jg0R8MW8e9WFaQd18r z4XISjh8/Ar0tno6uKg== X-Google-Smtp-Source: AGHT+IG+ldNYNdV51lrNuZQ4fk+QDbNPHUWm7+QzGL/G1P+L2ir0BWlN5d364Rwi2NeBoKhLFwUsyQJuulyPuyfz X-Received: from ejcfz16.prod.google.com ([2002:a17:907:9590:b0:ac2:50cf:f244]) (user=mclapinski job=prod-delivery.src-stubby-dispatcher) by 2002:a17:907:6d04:b0:ac6:da00:83f4 with SMTP id a640c23a62f3a-ac7d1c69d88mr229541966b.53.1743765082733; Fri, 04 Apr 2025 04:11:22 -0700 (PDT) Date: Fri, 4 Apr 2025 13:11:01 +0200 Mime-Version: 1.0 X-Mailer: git-send-email 2.49.0.504.g3bcea36a83-goog Message-ID: <20250404111103.1994507-1-mclapinski@google.com> Subject: [PATCH v4 0/2] mm/compaction: allow more aggressive proactive compaction From: Michal Clapinski To: Andrew Morton , Vlastimil Babka , Pasha Tatashin Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Michal Clapinski X-Stat-Signature: wjpjuwmnmiyxi33sdbd8yhdak1tjgdx1 X-Rspam-User: X-Rspamd-Queue-Id: 371DD120004 X-Rspamd-Server: rspam08 X-HE-Tag: 1743765083-170584 X-HE-Meta: U2FsdGVkX194cH3bTipsSDZvq0U/KRMcH2BSHdUimCLX4y2NW/UwV1XnckZdYqGrUzAeI+obut5eL0RtCCcErQ1x1N91H1idiiZk8x3L4OJnk7wJZASGqlVQ5JJnueHsdfIP/2NITsFGbZqREBrQlOPGKi8okE2xDnJtmooq2h7NN12t5W6skFg0p+BKQqqx13Px2eEIvkGzSUBzn5ZwY+ThB2l2MNVfXDEYjVy5c1XA0BZmlpVq5VqQtgVRyTzZRJngtBOXjr1HZlx2vSbkw9Ij9N6s8rCO95NTY39wiVWd0lLMUkj7AMB4W9OfwV500crk9YPVkAfvzyR0TsTcmDH83z2EmUPhl77cS5A4CiOqvlMYtihPMjq2JeXN6cc3Qvy26EvQiasaaFgaXbjaP3qvU2pAPlRI+fwHVdbYjBiz+n3ZQB7HbStMuHmrnTy2YDZN2OV983mJ8gA7igI6ZBSGaBcevdBTZzOI0r+TtU9BUFp+yfEkAfM2j/GMPhTCYDhYmqgo6u7RUVYcL+Bi0t0fgvdgtocdkI50W8C/t0+y5GE7fuG3CjDZLyZ4Svy5wmBtrwFxqhdbXryaommfUF/U/swcLuwOrm65JAgnrxR5x/AwPMdCzobwxQb38zFxiMagKRdpNT2I6eo/7FF3ElYNNP2vlBKoiESqcbZOQf+rE1yjILiQ/8C83mkPdRedts4kMIKY4x5QM8WBIfS0wBWGWhC1raP+vxM8s3Z4OK5RqJ3dj5FLiNcKQV4UgMqb7AJiyxsJRAkGZzHTVnIlUPmyd4ugvW80UiTfIrsY6PRcsXYPxggDja0a1zHquHKe7tn4c7wwKtzwUYEUayC6bPFjov67fcHFXuO1f7fxEcKSq/Hx6cJkAcnusjIlaGEw02iQFqqfZWSjz2FS+hm2pOMel4RrIgBn/AjBj8hHVd3QInb+SPgbKbgkmdL/YkiOIgzG4yy2tBC1AlLzXkn IkxOZoz5 6zRs5cBB1L8DY2MjjDT8PKQVAf5CgA5Y4mGGTvswvT7AlmqwQoVEsp3BWZEN4w/PViQ0AyR4oPYw5+Ois3DPRoZz5rOOfRu6Sla/exdrXKh0YgaxrYEOx+ZrRNmosh6bBOqHUEHy08Zc/U70aKRBm9yV1afdzOhIKJUOePjpltf9wiczmmsRgIbw41ic3cwdnWGxRqSv2zXBQ5XNzULdnJJyCe8XSP9a59sMuwKEe8Q2gXS6DKgEgNuGPM1ZpD7gRZmkWSMvwV4fGvAeM4f4J0m5BPFBCS2lB89HW 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: Our goal is to keep memory usage of a VM low on the host. For that reason, we use free page reporting which by default reports free pages of order 9 and larger to the host to be freed. The feature works well only if the memory in the guest is not fragmented below pages of order 9. Proactive compaction can be reused to achieve defragmentation after some parameter tweaking. When the fragmentation score (lower is better) gets larger than the high watermark, proactive compaction kicks in. Compaction stops when the score goes below the low watermark (or no progress is made and backoff kicks in). Let's define the difference between high and low watermarks as leeway. Before these changes, the minimum possible value for low watermark was 5 and the leeway was hardcoded to 10 (so minimum possible value for high watermark was 15). To test this, I created a VM with 19GB of memory and free page reporting enabled. The VM was ~idle. I meassured the memory usage from inside the guest (/proc/meminfo) and from the host (provided by the hypervisor). Before: https://drive.google.com/file/d/1Xw23lRry_PgEH3f6QRnSGvoHh2u9UHyI/view?usp=sharing After: https://drive.google.com/file/d/1wMhpIzepx6t44F70yCPA50n1S5V2AT-a/view?usp=sharing v4: - Replace the leeway tunable with an equation based on proactiveness. - Add graphs to prove it works. v3: Remove gerrit ids from commit msgs. v2: Change commit msgs and document the new sysctl. Michal Clapinski (2): mm/compaction: remove low watermark cap for proactive compaction mm/compaction: reduce the difference between low and high watermarks Documentation/admin-guide/sysctl/vm.rst | 6 ++++++ mm/compaction.c | 12 ++++-------- 2 files changed, 10 insertions(+), 8 deletions(-)