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 8F119C47258 for ; Wed, 31 Jan 2024 16:24:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B45C76B008A; Wed, 31 Jan 2024 11:24:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AF58C6B008C; Wed, 31 Jan 2024 11:24:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9BCF26B0092; Wed, 31 Jan 2024 11:24:49 -0500 (EST) 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 8D32B6B008A for ; Wed, 31 Jan 2024 11:24:49 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 358DF1207F7 for ; Wed, 31 Jan 2024 16:24:49 +0000 (UTC) X-FDA: 81740129898.11.1E8A912 Received: from mail-pg1-f201.google.com (mail-pg1-f201.google.com [209.85.215.201]) by imf24.hostedemail.com (Postfix) with ESMTP id 7BCD518001B for ; Wed, 31 Jan 2024 16:24:47 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=IyRaYbsl; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf24.hostedemail.com: domain of 3TnS6ZQkKCFUG691Ez51E3BB381.zB985AHK-997Ixz7.BE3@flex--tjmercier.bounces.google.com designates 209.85.215.201 as permitted sender) smtp.mailfrom=3TnS6ZQkKCFUG691Ez51E3BB381.zB985AHK-997Ixz7.BE3@flex--tjmercier.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1706718287; 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=ZNYUkxA0xvwNNh2j9fPRfqO+hGg4aS2w3UwOndzd+pg=; b=2uKI/mw325vFMzsHs24kgf8ZioAXHyPya7Abdh5x5C9fKeSdCuk0Tc4Be7QEwBqAvMCSoL l7UmtQPoLNrXS3W9VwRdvqbimjwAkjAxDBFWHzvlEi7tQoBjJ38R4ptMOCjBiBtEOqRlQp uAP+Q9GcY9fGlSpdbyA7LxaPnim7pao= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=IyRaYbsl; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf24.hostedemail.com: domain of 3TnS6ZQkKCFUG691Ez51E3BB381.zB985AHK-997Ixz7.BE3@flex--tjmercier.bounces.google.com designates 209.85.215.201 as permitted sender) smtp.mailfrom=3TnS6ZQkKCFUG691Ez51E3BB381.zB985AHK-997Ixz7.BE3@flex--tjmercier.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706718287; a=rsa-sha256; cv=none; b=neQ1BmYYcN7U1eK75gTTCldFacPEQeBSU73jZy6PIJs0XEKQRrRKwT5tudhAAQD2hRI7nN 6lxjoKlzE67T+Z7JR+LNPvEFepdD60Vn0Qfvht0TURiVRdTEEHGanZi+gSh8pkd69RZQ7d xRsr6CzhzgifKynHr6IyRocatk2+bEA= Received: by mail-pg1-f201.google.com with SMTP id 41be03b00d2f7-5ce12b4c1c9so3330664a12.1 for ; Wed, 31 Jan 2024 08:24:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1706718286; x=1707323086; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=ZNYUkxA0xvwNNh2j9fPRfqO+hGg4aS2w3UwOndzd+pg=; b=IyRaYbslGmoOH2zKJ/KkvwjNEgNcBsRhvKRrQeSiU9T2ScV8brDrbphD/kJsx2V9oO 4ofoU7gQunSD4rMT/W9V26lhtWp5pMMywdkBsZoNumnLdq1uqABQpnZSwiaEA4Iu+EOy br8PUvyOp+5xdhTJEfLRiNXK3q0LOj9J2JFldeKt8YaPYFdFPgqNi4SlXmJ2z8+C4ZCm 5HvSr185OLocjeCNEIFDbNuBEEyImXDiW2p0pUTiSF9LxQW4by3Mzgr/SUp5O0YJj4me OUDzgS1U8QIfFql/Zo2KLJhZj1VE/6BqTLWA0i28vq8W91RHY1Q5XQ6flwlfhAs+fbwA /49g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706718286; x=1707323086; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ZNYUkxA0xvwNNh2j9fPRfqO+hGg4aS2w3UwOndzd+pg=; b=nO0GpYD6OVqYeHHJMgcux5gvNNIuwprfuk+J7XOCZmOrpTa2lyUiuswEIe6kx6eSbk pXWCsnt3hA3Wjw7dRSQv0ZnEdIDwbvBDOAVU8qfWpkgSFD2tu2kOlWJk5AwHNbpPW562 4YiTTeNfOnlMWqEqqhqF60ylKmoz9h1XymMqLX0l9bpP0IwQ3fd6v8eDjXMjXw3MIzD3 O7mE2ch4tSNraAIRdyfKt4u6lXCT+zlFbDbb1VyWYiBCbDNalN4YGvOAU17o2+b7zHWF EMSdeyOAS89uX3ErITkRKYmE0i0qlvkEAV8IkCTyfCEsOJCJxy3fRSFBn7KYmgG5duAf aE7A== X-Gm-Message-State: AOJu0YxinYDwiD/IKrTqodmm4b/27tXs4UZdguHccyeKdWzfkP+Rie/4 c2D66iXAbLzeN5ZrHyueSm9uuQgBNiIHdQ2gpG2vALHLoYuMjMFygoPonSNE4gSoHBbd07ShLvZ FH3B6lup1zXJGfw== X-Google-Smtp-Source: AGHT+IFAiE0hs4hBtbmrUFuOHHRtqtWeAwPHHaLD9alreUAspDLbfRsx7fyhMX1VookkwtSt38ubBnCQrBhBvBE= X-Received: from tj-virt.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5683]) (user=tjmercier job=sendgmr) by 2002:a65:614f:0:b0:5ca:459f:d4ba with SMTP id o15-20020a65614f000000b005ca459fd4bamr20923pgv.9.1706718286053; Wed, 31 Jan 2024 08:24:46 -0800 (PST) Date: Wed, 31 Jan 2024 16:24:41 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.43.0.594.gd9cf4e227d-goog Message-ID: <20240131162442.3487473-1-tjmercier@google.com> Subject: [PATCH] mm: memcg: Use larger chunks for proactive reclaim From: "T.J. Mercier" To: tjmercier@google.com, Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Andrew Morton , Efly Young Cc: android-mm@google.com, yuzhao@google.com, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Stat-Signature: 9ed9porr161cj79urpobrhi9gntyn9yh X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 7BCD518001B X-HE-Tag: 1706718287-159215 X-HE-Meta: U2FsdGVkX1+onruat5FVGfZpSM8SjwygeuN2YpkocUNh2nFZJIAbpO9Qep1D7KC/BsiRDVMlGFU8zsCUiUBn4uCLBl1H6HuTsFmjuyp3W8QBBJkpJriN6ymg3L/sgTbam7Wa2mLgp0LAQlB2MZWkIgI3RCPHxGWnEOyS450VsfMlNAfLZ68SipEXGh1WL7Q73m8UY054pFcsMe1GdG9KCTX2i/LP3Fy+wjB0RRpXKJeWXWVsxWYox1ovIzbJIpmnBNi0k85bgG7tNrmyzB5BnKy+0dFJ3Sx5ZqfY+CYB07/jADD6sk5os1/5aj8ee5HEdBszTscyCkfsaElNTzmb3OQRAeEoFgfl/esIDmHnE293uC4Mes8IePA6EmJbeoick70wBc8LoipRvsb6yko9EC5j0W0V6zIvY5NYUJy2fuWNDitT81re3+PAB5guwXFCKoFAvnmqmfEG4sdHqhh/aV1XfH1cxitZK3EI3OcCQWxE08T1rscRlrsA9lU8ZpPwyoVRv6XrOmpBjOaYgGl2JqFgHqyagp4TrZHgAtsCXo0CMxw3Ry6fmiJ6PCNVP9KIehVWfgUCEg+hcu/KEltmBAeNjA2zGqoRvKLnRoLFSQIXb2ckWzSd5MUsdy+AEr62DsoYXCP26qBe9T23cDz+3/+GpIcBorb5iyNW1IG8a0lYTGJ9swjloxZs0/4oKqosV7up+hb5PBYkaXgI9OoOjbvIzxQyfUNMejiWJmMQMDvMSGhUesM8ONY9sE90LG7VA1gcNLWqdFR1UIWXQzremX7SpiQdyhveKWm/MDOVBzFAw0Islu9FREnYQ4GQehahpIqwXbVu+i77DQKroBk0VQ3K090HaesOlnmkc2Hk4ZZDojOcHevvmvBKPzyOTLelQRZu7VZ/4ms7Sl1LQB2astGpnNYTCBLZmhcvtG85uTWmg8k02mT7XeX1GDtArO+ay3SONMQ0UCd64/LOFEv 40ImBfrM udzSkUfAniR+gUKYjd9yEyv258xiKSIQpqbEnOXuaMTdk2iwbamjlTtbmTpTMqQtLhU5dII/yw2x0ayuXF+QyPhlxFAVfGu9Q1As8B9vRWecj+r1k7HTmp8HEvh0GGK4b4va/qgCh3fGxNptMFkP3ubMf92xjBv6QzxRokSpe73VtVXcic10fkuc2++HKHT5peNKcITD7PmFqTCpBkmV20RVxQrR4hkyLJBgbiA9Hhq6sd6CbCgo5BZyBuCOcpA4nqAextpmiUOk3nPOA/czoEiKmVB2dmBqDZWZweF1i+1Um6m7nlkmYgSnI/fnJ8aqCrypzCFC9sEbXZR+4deBU9QHiPsubddDUb1yl8QoQxAaVW4yGzSQJ6MFhIM1wnJX4a/52hxKXezIXWqNBzxe0hhCQufyVVF6ma6P+s0E9fJTIuyjzFxa1UbfHcdQ+10/YYAw2dx0tbeAU3OUhd4jGEl4veyoRw6iObio05W/TxoUCqYxYT3ZUigEzVjh1XRBg6yGxS6JjKSgEHjkCNGkVv/fvvl0tz7sizt9ou0AytNxDVAURbBgsdmtq0+Jr7PkZ/akYu9vhQjdx5iGHXkyjFxizIApwfHtp5FoYLquWDM/+YZE7d1tXaC73O5rXqsxWa4LI X-Bogosity: Ham, tests=bogofilter, spamicity=0.000002, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Before 388536ac291 ("mm:vmscan: fix inaccurate reclaim during proactive reclaim") we passed the number of pages for the reclaim request directly to try_to_free_mem_cgroup_pages, which could lead to significant overreclaim in order to achieve fairness. After 0388536ac291 the number of pages was limited to a maxmimum of 32 (SWAP_CLUSTER_MAX) to reduce the amount of overreclaim. However such a small chunk size caused a regression in reclaim performance due to many more reclaim start/stop cycles inside memory_reclaim. Instead of limiting reclaim chunk size to the SWAP_CLUSTER_MAX constant, adjust the chunk size proportionally with number of pages left to reclaim. This allows for higher reclaim efficiency with large chunk sizes during the beginning of memory_reclaim, and reduces the amount of potential overreclaim by using small chunk sizes as the total reclaim amount is approached. Using 1/4 of the amount left to reclaim as the chunk size gives a good compromise between reclaim performance and overreclaim: root - full reclaim pages/sec time (sec) pre-0388536ac291 : 68047 10.46 post-0388536ac291 : 13742 inf (reclaim-reclaimed)/4 : 67352 10.51 /uid_0 - 1G reclaim pages/sec time (sec) overreclaim (MiB) pre-0388536ac291 : 258822 1.12 107.8 post-0388536ac291 : 105174 2.49 3.5 (reclaim-reclaimed)/4 : 233396 1.12 -7.4 /uid_0 - full reclaim pages/sec time (sec) pre-0388536ac291 : 72334 7.09 post-0388536ac291 : 38105 14.45 (reclaim-reclaimed)/4 : 72914 6.96 Fixes: 0388536ac291 ("mm:vmscan: fix inaccurate reclaim during proactive reclaim") Signed-off-by: T.J. Mercier --- mm/memcontrol.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 46d8d02114cf..d68fb89eadd2 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -6977,7 +6977,8 @@ static ssize_t memory_reclaim(struct kernfs_open_file *of, char *buf, lru_add_drain_all(); reclaimed = try_to_free_mem_cgroup_pages(memcg, - min(nr_to_reclaim - nr_reclaimed, SWAP_CLUSTER_MAX), + max((nr_to_reclaim - nr_reclaimed) / 4, + (nr_to_reclaim - nr_reclaimed) % 4), GFP_KERNEL, reclaim_options); if (!reclaimed && !nr_retries--) -- 2.43.0.594.gd9cf4e227d-goog