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 813C1C4829A for ; Wed, 14 Feb 2024 06:06:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C7CC98D0017; Wed, 14 Feb 2024 01:06:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C05478D0001; Wed, 14 Feb 2024 01:06:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AA49E8D0017; Wed, 14 Feb 2024 01:06:09 -0500 (EST) 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 956D38D0001 for ; Wed, 14 Feb 2024 01:06:09 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 6FBCF120BFD for ; Wed, 14 Feb 2024 06:06:09 +0000 (UTC) X-FDA: 81789374058.14.048BAD0 Received: from mail-yb1-f202.google.com (mail-yb1-f202.google.com [209.85.219.202]) by imf02.hostedemail.com (Postfix) with ESMTP id A4B7380018 for ; Wed, 14 Feb 2024 06:06:07 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=hsWWrEYx; spf=pass (imf02.hostedemail.com: domain of 3TljMZQgKCGUNLQVHbKRJRRJOH.FRPOLQXa-PPNYDFN.RUJ@flex--kinseyho.bounces.google.com designates 209.85.219.202 as permitted sender) smtp.mailfrom=3TljMZQgKCGUNLQVHbKRJRRJOH.FRPOLQXa-PPNYDFN.RUJ@flex--kinseyho.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=1707890767; 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=g6dfBLL0uVL4kHNX/u5ol8tmo8iu96qepQdMS5ybNno=; b=wwV+s5EaDbKIwZwF7AoL9yq30Lt3/G3yKJ0KbDW0xjBT08mgwX0zbQpCaPgjl2li/vrWTf zjQavMGydJnHIO7P6InIKXn+i3l9+Q9vcuQsMkyCgHDXoAmBXBCHA0f3jEtDqDUR8N6WiC uAX1O8Ll3HcYtpLR+ZjvLfMpISOJn0k= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707890767; a=rsa-sha256; cv=none; b=i9qtZxeYo0tr7Cha9cll7MWWP9QBlkLI+0OHYJrT1ymx/1WI+s5/XwHlAmyS/j0i/HUfOk 1zDwAxii8SO5Ahf++5xmX2fR/vn1Ek3YdFqp6EGuTLGKXm7c6NxNv2FNSHcaD58MN79DUy iEs4Ux4kiEuDrrolZXp+6Js1v3BbKu4= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=hsWWrEYx; spf=pass (imf02.hostedemail.com: domain of 3TljMZQgKCGUNLQVHbKRJRRJOH.FRPOLQXa-PPNYDFN.RUJ@flex--kinseyho.bounces.google.com designates 209.85.219.202 as permitted sender) smtp.mailfrom=3TljMZQgKCGUNLQVHbKRJRRJOH.FRPOLQXa-PPNYDFN.RUJ@flex--kinseyho.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-dcd1779adbeso2214683276.3 for ; Tue, 13 Feb 2024 22:06:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1707890766; x=1708495566; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=g6dfBLL0uVL4kHNX/u5ol8tmo8iu96qepQdMS5ybNno=; b=hsWWrEYxCw/3ximB1yUDysUBfErniw8z6eNAy2KfM8mJ1kJgZYZcnOAK/JM+58QqUc 3UOahhH99kdASOF/TwixLU4pNYe0LdOgyCux/uq51Mcg1xNfFNFPB9Mr1Pfm1QEG4Lgz VBXpNiPo0+2pKTWK0znNCCauBJSBc97fB1KIj3XwUP2+SeOOwmtNYIsAbprPazmvMKJe MXsg/TrEzpP+DM8oPxs2PwYxPPDwscHk7pi2Cwa+21kJsHjV2EM9ujwqrlMLZHpRu87W wT9L9PZJU+tbGDDJkvhGEkQiLBV7yn87LNpAOCPu01xFxxAaU52clvZzI2hzRo+okAI0 YMIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707890766; x=1708495566; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=g6dfBLL0uVL4kHNX/u5ol8tmo8iu96qepQdMS5ybNno=; b=DO2lCYjlnSXKhpkru9HoHODYDZiJ7ehGDBlebx2QGH2PaJbl4mAKIjVYDniSX+iJ6e FbW9FOcGhOgY3RkmUkkmtSUBJctq+2XbsQwR3HdH+8xzYyoS+/BE0fhkyr2sKMiShs3S 8IB9JLfE1gEUmTVrfWzrZNy8Tq6EyK47veYlH4z7cNg3gUoQpOmgGAvsRQKEFS18iZ/k e9lJYepe0YwCXgDGeQZcj0OEBBlaHEvqjLUXl3nTetOd5e6Cv8I8QeG4RHQEDPZxqYXu EPgqGPTD6T54mA4/aNNDr75iOVII/+8IJ3sq38+IUSc8t+XPgY1vq+3pZGUvdZLSKCSw 7slQ== X-Gm-Message-State: AOJu0YzyBV8ePIHoDmfgiwlOeGiw/PMQGHzwb+lYDnhHySit6AaZ+7OZ 6zWvpf/Saxoe6r7VzHUiQLjiaBcP17p1ZA/YEQ/McUEshwMDMezhgNEDQo7j8nOPIy3iqpuwI7F Pl8EopLmDZA== X-Google-Smtp-Source: AGHT+IHOPse6hooZyvwZWR3IHI/yG7ozxgi8X654LcQX7pVVX8EA8QhnzcPnrBOOtpVKttd4Bb7zZdwtS85+rQ== X-Received: from kinseyct.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:46b]) (user=kinseyho job=sendgmr) by 2002:a05:6902:1505:b0:dc6:cd85:bcd7 with SMTP id q5-20020a056902150500b00dc6cd85bcd7mr322452ybu.3.1707890766683; Tue, 13 Feb 2024 22:06:06 -0800 (PST) Date: Wed, 14 Feb 2024 06:05:38 +0000 In-Reply-To: <20240214060538.3524462-1-kinseyho@google.com> Mime-Version: 1.0 References: <20240214060538.3524462-1-kinseyho@google.com> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog Message-ID: <20240214060538.3524462-6-kinseyho@google.com> Subject: [PATCH mm-unstable v1 5/5] mm/mglru: improve swappiness handling From: Kinsey Ho To: Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Yu Zhao , Donet Tom , "Aneesh Kumar K . V" , Kinsey Ho Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: A4B7380018 X-Rspam-User: X-Stat-Signature: 8rry7hcecftzsmop3baemfdpndwzs7eq X-Rspamd-Server: rspam03 X-HE-Tag: 1707890767-388734 X-HE-Meta: U2FsdGVkX1/G0JCpAGK0AwBeM0dhwPf1pM76AvKtQTJGuUqD1sE/qAJssHdmCLngzAA1TWJf51QICEsynQgJm/Zou90vMoHf0kEL7HQl6lAm1NtPNVJ3oYwXp7+eQm7ZTCcxeKDn92d5glTgio6+yD8Zsmvs7ka4LydGEay6CnYrOARFZtQjAXYWlsve6z/y9Jy0+GKlPwJDAjsykQ/w48pTqnExHLGys7i0m8Pc0IlJDkzgqgAM4pIPykCP/43BfHEi4d3o6EfP6ru+c8ts3g2OKftv/k/Uir3WDauOODOOeLFo4T94LWyL8fo3R8pZNoRFAf+Rv2BVSW6XqI8xummNxIoBt7yJutR6/Z74Iwv+Nmz+KarDcg7qteHQIxVhwsuEHMq2ERAJom8PSWDoMYjrSNjy9cwwD1RDNUiBusGKlRSHUIogIzyAmjz2jZSeHe7yslzwLqx4DhsDAeFtHCvoBQKqp+HHVSR1J7DnW+RPawurLmhY8Da2Q4OSxCpxszKrpxLKM3YOLU73zh3m9xAeU8FTN6hf8Fbp50cOrI1XVa5c/aa6QQaYr4AHNgsizZo7i+teKigHWEY+0y1ZzV0NP0rOXUJGP6mwwIJ4hEH+NGtTOgpgFDQYWDykgv67RJn6p+QUlQHP7zjreW3yF+pJdXEHppYE1Cg+FT7WVKMngQ+8yM6ylXZqkUFW+K/2gHqUTfjT7EpnbXdluxMg1t3sWCQDvSOrYrWmrCBMkB9vUkbAq8HD9gM6Lkzht8V50CJrSN8wv58L7415VE430whDNpJ5nvgwiV4JW6LpBLCia9S3AyTG+IS4sO+Cp/coPbR7vGvZl4xPGuCLUKlGIJb8RFgt82jYET1IdgFqKoWaadQqFXLY6SWNxXxLAdARxeViPTllRHjV4OyGisAVet3RTS5wMYm/3TKpskhqi6gsFkL3dE5+0fZeheIPOzQnbBsMx6Z38G1gpV9/MYT R5zhTYrC 9p7StWvd7cmuy4iHlz9icRP8bPRVDmtq/RXbQ3iGp2NRJxfISy1xduFYrHoepZo9JE5OP8QUOM+4pge0Udymxsni8sOFEfhW8uGblLZ5u6+jJVtMaY+1Zhc2SOCQeDmlYVZc03zjzX4VOb5DhPSs7DM2OCJB+QZ9mgJeYxGhqkz6pnks13pKW5GsNwadlBL2EEoZfGhvK8SnAjl4Hv6Tao+N1qWHYAekrdAylc6OxM72LObdz2W9JXuuFw2tC58VeepB+KB6b4f9tY8xkKVvBSIErqxRuTL4kfUhwX2adpUxva1FwRC8AF2bCzPY/XvUCaknULYW13GS2/3i5FsfUP/XWEO9y/+GEUjwtwdS3Q2qMKuoucWkPEy0M2oHH1tvRr1twHhdDr3V4rX9r5TLa8lnJyY2eJ0/pFdKbcn3m35rp+LDIVRANDNLKKWqHzh98b/+ihdfqW7Ydp3i7LPn1oHpqQkyTry9MmNJLYC0W5WHfLFYhzsE/VKM62z522FzE18wVKPRP8r9zKQRVhhMu6xCDjM89aeV+zg5NxcDMAJHtZJAIulEqUMWQfjgT+r6Kcbvbb7/EFbMAg4Z/feHlTI6/5nyjbS4vLBp7dVQ4lb3UMyi2aWHpRkNURg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000230, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: The reclaimable number of anon pages used to set initial reclaim priority is only based on get_swappiness(). Use can_reclaim_anon_pages() to include NUMA node demotion. Also move the swappiness handling of when !__GFP_IO in try_to_shrink_lruvec() into isolate_folios(). Signed-off-by: Kinsey Ho --- mm/vmscan.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index f1019afa7813..0daf932feb86 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4307,7 +4307,7 @@ static bool isolate_folio(struct lruvec *lruvec, struct folio *folio, struct sca { bool success; - /* swapping inhibited */ + /* swap constrained */ if (!(sc->gfp_mask & __GFP_IO) && (folio_test_dirty(folio) || (folio_test_anon(folio) && !folio_test_swapcache(folio)))) @@ -4476,9 +4476,11 @@ static int isolate_folios(struct lruvec *lruvec, struct scan_control *sc, int sw DEFINE_MIN_SEQ(lruvec); /* - * Try to make the obvious choice first. When anon and file are both - * available from the same generation, interpret swappiness 1 as file - * first and MAX_SWAPPINESS as anon first. + * Try to make the obvious choice first, and if anon and file are both + * available from the same generation, + * 1. Interpret swappiness 1 as file first and MAX_SWAPPINESS as anon first. + * 2. If !__GFP_IO, file first since clean pagecache is more likely to + * exist than clean swapcache. */ if (!swappiness) type = LRU_GEN_FILE; @@ -4488,6 +4490,8 @@ static int isolate_folios(struct lruvec *lruvec, struct scan_control *sc, int sw type = LRU_GEN_FILE; else if (swappiness == MAX_SWAPPINESS) type = LRU_GEN_ANON; + else if (!(sc->gfp_mask & __GFP_IO)) + type = LRU_GEN_FILE; else type = get_type_to_scan(lruvec, swappiness, &tier); @@ -4731,10 +4735,6 @@ static bool try_to_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc) unsigned long scanned = 0; int swappiness = get_swappiness(lruvec, sc); - /* clean file folios are more likely to exist */ - if (swappiness && !(sc->gfp_mask & __GFP_IO)) - swappiness = 1; - while (true) { int delta; @@ -4897,7 +4897,6 @@ static void set_initial_priority(struct pglist_data *pgdat, struct scan_control { int priority; unsigned long reclaimable; - struct lruvec *lruvec = mem_cgroup_lruvec(NULL, pgdat); if (sc->priority != DEF_PRIORITY || sc->nr_to_reclaim < MIN_LRU_BATCH) return; @@ -4907,7 +4906,7 @@ static void set_initial_priority(struct pglist_data *pgdat, struct scan_control * where reclaimed_to_scanned_ratio = inactive / total. */ reclaimable = node_page_state(pgdat, NR_INACTIVE_FILE); - if (get_swappiness(lruvec, sc)) + if (can_reclaim_anon_pages(NULL, pgdat->node_id, sc)) reclaimable += node_page_state(pgdat, NR_INACTIVE_ANON); /* round down reclaimable and round up sc->nr_to_reclaim */ -- 2.43.0.687.g38aa6559b0-goog