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 X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 39179C3E8C5 for ; Sun, 29 Nov 2020 16:28:18 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 8F49520738 for ; Sun, 29 Nov 2020 16:28:17 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lm5N0Klx" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8F49520738 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 9B05B6B005C; Sun, 29 Nov 2020 11:28:16 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9603E6B005D; Sun, 29 Nov 2020 11:28:16 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 87A386B0068; Sun, 29 Nov 2020 11:28:16 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0165.hostedemail.com [216.40.44.165]) by kanga.kvack.org (Postfix) with ESMTP id 740FF6B005C for ; Sun, 29 Nov 2020 11:28:16 -0500 (EST) Received: from smtpin18.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 3C9238249980 for ; Sun, 29 Nov 2020 16:28:16 +0000 (UTC) X-FDA: 77537988192.18.grass44_2300e912739a Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin18.hostedemail.com (Postfix) with ESMTP id 13F9C100ED3C3 for ; Sun, 29 Nov 2020 16:28:16 +0000 (UTC) X-HE-Tag: grass44_2300e912739a X-Filterd-Recvd-Size: 5817 Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by imf10.hostedemail.com (Postfix) with ESMTP for ; Sun, 29 Nov 2020 16:28:15 +0000 (UTC) Received: by mail-wm1-f65.google.com with SMTP id c198so13305687wmd.0 for ; Sun, 29 Nov 2020 08:28:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=nVmMpj1hqEAblmsM0FlTKIQm84iwL+6VPpnSTrXXJRQ=; b=lm5N0KlxF1pfVVTpgnYXTlRL12WzH3txR+Yx0j9t68KIilNu0TVGrvro8yk7aEfD2W ozKBRkdGdojWyjPP1t4DNF0xdY/ZrZKHaOjYHIzXmknIwB8sl48HAY6VtiJHGf18cUBF X0PMZK86i5l6ETs43l+/del1DK2sHbyC+EJGyWuenlQ8JEjVlZY7BWcgf7dJpRCC4BNK LNRQk+OL7kSnXy+/MDe/lFSCaWMPuw8FSrlvJhFu/Jg0lHMsZYUNk4QAEvv+DDAyuPcg pZvgHq4bsd+9qf/5HVo3vXGihZSzPYh7Kz5ljoGqyKlbXuwk+L/b70JTLBmNNAzUz/CH spjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=nVmMpj1hqEAblmsM0FlTKIQm84iwL+6VPpnSTrXXJRQ=; b=CGMV9KDHW83J01ZGXvnBfeWqkze5poHkf2i+iqnQ2i6O45EdchWIUOk3MbOevlzq1T vWcwV7i8hmQbdjC4nG0gzGTjxOoNiwdQ0EvbFJbPpSVBNZhtn1/qjm/gbd+AcuuijBTK GspjkpYVtV36c+bboiCVlJRfybkuSNr8FmBTWGbbkiuGR+G/2jtMC61t8smQ/7AZi3ro lybdOar/bKCH6oHIu7f0jzdusYMTLPI4yo4Xlu1QgGbIvSoCc8LFeP89Ka/k0sNpmey2 hOz7T5RsQE0KPqHY4THA9fTIEyDbMetifs9NRSVl98mN7WTptVFoPA0fSPmMYKDvqixG Y/wg== X-Gm-Message-State: AOAM530mlriPTsSQl5GSJokSLfhXwCqkYnCPPdVh19A7KEFKbTZ0rDD/ 0U9jb63ZCZrvnXb416gyZYo= X-Google-Smtp-Source: ABdhPJwS1UVkn2ZZQVfJ2EDRGhDSVky5GtMZhkcNZ0AmP5ebcFPTwEDKOGjc9wva0RCVqkaxjiZ0BA== X-Received: by 2002:a1c:6008:: with SMTP id u8mr3272101wmb.173.1606667294500; Sun, 29 Nov 2020 08:28:14 -0800 (PST) Received: from unjustified.home ([2a00:23c5:31b:1:320d:9008:393b:5754]) by smtp.gmail.com with ESMTPSA id f16sm20475608wmh.7.2020.11.29.08.28.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 29 Nov 2020 08:28:13 -0800 (PST) From: Lorenzo Stoakes To: Andrew Morton , Baoquan He , Michal Hocko , Nicholas Piggin , Vlastimil Babka , Roman Gushchin Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Lorenzo Stoakes Subject: [PATCH] mm: page_alloc: refactor setup_per_zone_lowmem_reserve() Date: Sun, 29 Nov 2020 16:27:58 +0000 Message-Id: <20201129162758.115907-1-lstoakes@gmail.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: setup_per_zone_lowmem_reserve() iterates through each zone setting zone->lowmem_reserve[j] =3D 0 (where j is the zone's index) then iterates backwards through all proceeding zones, setting lower_zone->lowmem_reserve[j] =3D sum(managed pages of higher zones) / lowmem_reserve_ratio[idx] for each (where idx is the lower zone's index). If the lower zone has no managed pages or its ratio is 0 then all of its lowmem_reserve[] entries are effectively zeroed. As these arrays are only assigned here and all lowmem_reserve[] entries for index < this zone's index are implicitly assumed to be 0 (as these are specifically output in show_free_areas() and zoneinfo_show_print() for example) there is no need to additionally zero index =3D=3D this zone= 's index too. This patch avoids zeroing unnecessarily. Rather than iterating through zones and setting lowmem_reserve[j] for each lower zone this patch reverse the process and populates each zone's lowmem_reserve[] values in ascending order. This clarifies what is going on especially in the case of zero managed pages or ratio which is now explicitly shown to clear these values. Signed-off-by: Lorenzo Stoakes --- mm/page_alloc.c | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index f91df593bf71..39f92de1228f 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -7862,31 +7862,24 @@ static void calculate_totalreserve_pages(void) static void setup_per_zone_lowmem_reserve(void) { struct pglist_data *pgdat; - enum zone_type j, idx; + enum zone_type i, j; =20 for_each_online_pgdat(pgdat) { - for (j =3D 0; j < MAX_NR_ZONES; j++) { - struct zone *zone =3D pgdat->node_zones + j; - unsigned long managed_pages =3D zone_managed_pages(zone); - - zone->lowmem_reserve[j] =3D 0; - - idx =3D j; - while (idx) { - struct zone *lower_zone; - - idx--; - lower_zone =3D pgdat->node_zones + idx; - - if (!sysctl_lowmem_reserve_ratio[idx] || - !zone_managed_pages(lower_zone)) { - lower_zone->lowmem_reserve[j] =3D 0; - continue; + for (i =3D 0; i < MAX_NR_ZONES - 1; i++) { + struct zone *zone =3D &pgdat->node_zones[i]; + int ratio =3D sysctl_lowmem_reserve_ratio[i]; + bool clear =3D !ratio || !zone_managed_pages(zone); + unsigned long managed_pages =3D 0; + + for (j =3D i + 1; j < MAX_NR_ZONES; j++) { + if (clear) { + zone->lowmem_reserve[j] =3D 0; } else { - lower_zone->lowmem_reserve[j] =3D - managed_pages / sysctl_lowmem_reserve_ratio[idx]; + struct zone *upper_zone =3D &pgdat->node_zones[j]; + + managed_pages +=3D zone_managed_pages(upper_zone); + zone->lowmem_reserve[j] =3D managed_pages / ratio; } - managed_pages +=3D zone_managed_pages(lower_zone); } } } --=20 2.29.2