From patchwork Wed Jun 22 06:47:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CGEL X-Patchwork-Id: 12890249 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 E4A0DC43334 for ; Wed, 22 Jun 2022 06:47:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 51B0A8E0084; Wed, 22 Jun 2022 02:47:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4CB058E0083; Wed, 22 Jun 2022 02:47:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3919B8E0084; Wed, 22 Jun 2022 02:47:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 26DC18E0083 for ; Wed, 22 Jun 2022 02:47:48 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id E8B0C12E0 for ; Wed, 22 Jun 2022 06:47:47 +0000 (UTC) X-FDA: 79604941374.29.83F1ED7 Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) by imf01.hostedemail.com (Postfix) with ESMTP id 5C879400B9 for ; Wed, 22 Jun 2022 06:47:43 +0000 (UTC) Received: by mail-pg1-f172.google.com with SMTP id r66so9313605pgr.2 for ; Tue, 21 Jun 2022 23:47:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=MnU5LUELxG6gx7YQQM1Li9d9/Gs3+ISx1Ie+xQK2vw4=; b=LM38fHr/TXkTvB/XeJ3vbofHjMo5Ph/M5PZa3JYpKEbN5q1FQ1o3wZ2l6ZJpDw1/9K yEaPwVDl39hROyWDkrA+iPbBhT12qnuF8gpf5TARt5u7yMqRu/t7lGmkBXhA13lfFp69 Gdr1ESfGBczS5yTSQFSkvOi2jPzYP45IVHsnZ2dCTbdolEBYs6Ibd/U0H7qoWmmsBy6q ks6oeRu7ZlohGqF6KEV3x8v4C36ARiItnptlAlKMj/nzRic+u5Qo60pCmDkcJGOacNIm vQ21NWa0qqr4cqH/b4W035yGFrpD9DHNP8+Sg0GudniwPJKgW/hc8nPS9xGIw7fNUWtY vQyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=MnU5LUELxG6gx7YQQM1Li9d9/Gs3+ISx1Ie+xQK2vw4=; b=xZ/B3vY/hnRn2lVjJilDxuDDT8F+iKtaPcBB6CYaTJH2A10/tIMoRxjgfa4Bx+rI/X nOsvVQO0/jqpqIR0Jfm2wH0QJTiwXffBwY6KAQR2N+tK20AYh1Qpf098DCdDINqpxwny l7MhYkT3oNxQEZjobzlyBkoOuyx5I38LOVSfdsfguuVclHO3sVUIzLGP3utwBL5xMfhN vbs0hJH7d8QCPRbyhK7KRU2GLJsckiW63G1cFEdWCQhC77Ga5q+CkU87Aw9EApsyF8cn msR9EDvcq5quNILoM7768LWTwWvzhCMXRgyw8UxJP8QgwLyHarHDzb/dyeKSbNLQQq0s Hsag== X-Gm-Message-State: AJIora+Nm1Dqh2pxMzEVQMTYewStFqH7RWvmgylKpfVd6ZB8Q5Dte7Mq tL7V6/hcFn7Jyf1zgWEcc/I= X-Google-Smtp-Source: AGRyM1tVQ9VHmV6wlz213cHyQb9Cpmf/RBoLpTYsIAlIBQr/thHEP11V6fBPKUGGaqWBZi51dCihGw== X-Received: by 2002:aa7:818d:0:b0:525:1f1d:185d with SMTP id g13-20020aa7818d000000b005251f1d185dmr16026782pfi.23.1655880454835; Tue, 21 Jun 2022 23:47:34 -0700 (PDT) Received: from localhost.localdomain ([193.203.214.57]) by smtp.gmail.com with ESMTPSA id s17-20020a17090a881100b001ec7d979da1sm8734501pjn.15.2022.06.21.23.47.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Jun 2022 23:47:34 -0700 (PDT) From: cgel.zte@gmail.com X-Google-Original-From: yang.yang29@zte.com.cn To: akpm@linux-foundation.org, willy@infradead.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Yang Yang Subject: [PATCH] mm/page_alloc: make the annotations of available memory more accurate Date: Wed, 22 Jun 2022 06:47:13 +0000 Message-Id: <20220622064712.959479-1-yang.yang29@zte.com.cn> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1655880463; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=MnU5LUELxG6gx7YQQM1Li9d9/Gs3+ISx1Ie+xQK2vw4=; b=LZVloPp0IOKb5yZpd9t/D/upR13vzqYzlJyEIYAYVqzIxzLzi5a4zX8BknY9TpmwYsjWzJ K01FeaquzUlxC3SRrOkmrRdW425lGo5kAfgqvminF/cP4U+C/kkq7Nx803z2AT9r1iNgFW hbU3DE6PLJ/KimBawoSrqrOw3PaZyks= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1655880463; a=rsa-sha256; cv=none; b=dz1Xz/PuWTPSYPoL+gfrgCGltjJn4MNzSInccrv4zk+MgEpqoPSjRUtVXpeVN1UjeCYFfq E0URQNbXhaKxQ63a+/7jZ1+5ALnQQQLfDwN/XiEJbNYGPz2rSeczZDXEqQHDEIMLiGj9PJ /vqPYyOtl/Yf4SgpjlrpUurSbuvhz5E= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="LM38fHr/"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of cgel.zte@gmail.com designates 209.85.215.172 as permitted sender) smtp.mailfrom=cgel.zte@gmail.com X-Stat-Signature: zgqfbti3n3prjniqaddy6nw8ypqrbibi X-Rspamd-Queue-Id: 5C879400B9 Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="LM38fHr/"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of cgel.zte@gmail.com designates 209.85.215.172 as permitted sender) smtp.mailfrom=cgel.zte@gmail.com X-Rspamd-Server: rspam02 X-Rspam-User: X-HE-Tag: 1655880463-61897 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: From: Yang Yang Not all the systems use swap, so estimating available memory would help to prevent swapping or OOM of system that not use swap. And we need to reserve some page cache to prevent swapping or thrashing. If somebody is accessing the pages in pagecache, and if too much would be freed, most accesses might mean reading data from disk, i.e. thrashing. Signed-off-by: Yang Yang --- mm/page_alloc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index e538dde2c1c0..233f68d31cdd 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5889,14 +5889,14 @@ long si_mem_available(void) /* * Estimate the amount of memory available for userspace allocations, - * without causing swapping. + * without causing swapping or OOM. */ available = global_zone_page_state(NR_FREE_PAGES) - totalreserve_pages; /* * Not all the page cache can be freed, otherwise the system will - * start swapping. Assume at least half of the page cache, or the - * low watermark worth of cache, needs to stay. + * start swapping or thrashing. Assume at least half of the page + * cache, or the low watermark worth of cache, needs to stay. */ pagecache = pages[LRU_ACTIVE_FILE] + pages[LRU_INACTIVE_FILE]; pagecache -= min(pagecache / 2, wmark_low);