From patchwork Tue Aug 28 17:22:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Weiner X-Patchwork-Id: 10578883 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4F50E5A4 for ; Tue, 28 Aug 2018 17:23:27 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 30677286C0 for ; Tue, 28 Aug 2018 17:23:27 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 23E622A579; Tue, 28 Aug 2018 17:23:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8EAC7286C0 for ; Tue, 28 Aug 2018 17:23:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AE7026B4738; Tue, 28 Aug 2018 13:23:25 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id A954E6B4739; Tue, 28 Aug 2018 13:23:25 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 95D6B6B473A; Tue, 28 Aug 2018 13:23:25 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-yb0-f200.google.com (mail-yb0-f200.google.com [209.85.213.200]) by kanga.kvack.org (Postfix) with ESMTP id 6B4896B4738 for ; Tue, 28 Aug 2018 13:23:25 -0400 (EDT) Received: by mail-yb0-f200.google.com with SMTP id 203-v6so1079906ybp.8 for ; Tue, 28 Aug 2018 10:23:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references; bh=6LP4jYlbkEnBcnLxdEdJzxq3VgpVfWiBPMH3IQ/af2M=; b=TNvLqeQ2GKedoIgrwfElxzXc+0mPqErAtL1EXtEc30ETKFBQIV0BWdiUujUG5dTQb1 UVcH6az6J2+NODrK9k8B+/UvyF1odqusspk3ykY2asNf0ItkF36VZvJlvJeHUMeJe1Xe AXbihHI5RW6EPQhNAJOlKceyBW9aVQvbXak7cwnMqjY4eHMi0HBmacc576f73WiNLbxR ht/Z0RGz1Z9zUXWTruuqA99a6OqHwuI1rLgxtn8dv6z6XzDlicdavr3TstNsenssbZnH wAn0C4lhgIhJCc5vxxl52hmBufqrnfSZ4MQfJ4mub63G1h1TLohI3nh1j6mUGMrQgkOx zcFQ== X-Gm-Message-State: APzg51Cwf8FXF1JCsbGjuA8IYkvr//nebatPMNK3nfvKtTMY2Di5oJMw QlPDzIkMDdOWS40ckx+Whxg0kGeFTJhoJRf+a/Vgr1Rdj29xQVO42nIC7xm6zAIybJ+hpeMU2+U ERCuYZvrI0qmcJbrV6xySC9M+hD55/tRRFBBL69kYtA6CxVGs3a1PpaHi2ATwcEAT5zRESpkEwR anwM2bssP2X06MxQZ/Z+QfUlDZ/yNUPAsDzFIF00zu6jwYN14mUsjFaDOOR0MjPawKny6Bu0eIJ kDt31gq4zbumcsFb147wv5HO4aNImCN21NHqtyxyVuxBQiCAGwC9c0htj6aNKtiGQod56J1q9rJ UmKnFHo8rh/ePYqezhuNzovxngHNGmxx6ZOtcsB0N/TJjD461BbwxFeLomDWbk9WUkUiAbCBicK 1 X-Received: by 2002:a25:bdc4:: with SMTP id g4-v6mr573327ybk.518.1535477005149; Tue, 28 Aug 2018 10:23:25 -0700 (PDT) X-Received: by 2002:a25:bdc4:: with SMTP id g4-v6mr573305ybk.518.1535477004419; Tue, 28 Aug 2018 10:23:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535477004; cv=none; d=google.com; s=arc-20160816; b=U9kWXv3woAvgbKWYAPRWj4EOeOBrSIzqLwN3lVqNJMRaHCmd2i+2qdVeOGOBSoNmvF +WOPIlIE3d8HWXGh2auJUrB1x+7UCdxR/s9+w+e3HQ+ZVG1KJPhfilWQH6em4rx0lPCV UjGf/XesJwCcg11gJaFalQMYQxTYtEc7WrKKUqzucjqdZvaUklbjJWwPAvMVfQ+XQ+6X 8Zyz2Owf2XMLg9Irt8sNRXBO+rHbHXLCYZ73Ru8frC+kJcn8tmT5B9WjdPtaVkshdfqd PfP/r/8VimBXjG6pNCw7PUHRMOYY2/7YeWtHQUn0+y+jrAxM7Qf1F4MEAGODxJsbd3Xo Kgfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=6LP4jYlbkEnBcnLxdEdJzxq3VgpVfWiBPMH3IQ/af2M=; b=XNrIwtJ0Bfxge9Ja6cI3lNKyZWPClmr8akl2oXCprbMpbtr4Jg9LjRrbKITsYjSK0k zTOn8iZMEq7h1vJc/x54THyFtu9vSHpf0leGRjgW85GwjtasLom7U9/9x0UuwwYhXzEA 42uwvrEYEwDyCfn6YgaigcThaEBnNg0RtVQ9dvUh8DDIPopt5/MYSTFnDlwlZLSuXczs 3Xz5TyW/lrTTwoLos+Jur1Ot4reN32JIongDuxuIL0Oy02xa8tqvP6jqOtdImEefq/xr 5obaDGCF/m5PIIXofYUyERrZp8VQEP5JbmmqID0Hm7T0OcBzTZNXYjjlxKCqmhEs8+sp dXug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cmpxchg-org.20150623.gappssmtp.com header.s=20150623 header.b=1VST8BwL; spf=pass (google.com: domain of hannes@cmpxchg.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cmpxchg.org Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id l124-v6sor390362ywg.152.2018.08.28.10.23.21 for (Google Transport Security); Tue, 28 Aug 2018 10:23:21 -0700 (PDT) Received-SPF: pass (google.com: domain of hannes@cmpxchg.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@cmpxchg-org.20150623.gappssmtp.com header.s=20150623 header.b=1VST8BwL; spf=pass (google.com: domain of hannes@cmpxchg.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cmpxchg.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=6LP4jYlbkEnBcnLxdEdJzxq3VgpVfWiBPMH3IQ/af2M=; b=1VST8BwL/2+J3rqHHlYBmAySQOD3S7m02Nic1jjLJcfoHxI8+mwYve17/BJZ1m03lm kRVchpfKFipfKjExKOaozqJk24pyutKM23M0yyaUW1Y75DxmgodD8EBE4FUnPBWGkC3v QzJ7JPI6Y8ZyrfJXkJIW9+S/Ack5MkA1EWfKelcFc0/vOtym7aD4kD/Y5UIy9D3Z6LgB f4/Gu1Ksf+I26xfika+1g+imCP2BqrH3XjSZPNh+5FfHwOn4qIHdGk2yH5Tl6qR0sYjn AcKbmMfJUfgH1sCh6rU1rfM/lFq1Xxgvb/enMbtVwswr2ta+1n4NTADp06MNEhidpYtg WNZg== X-Google-Smtp-Source: ANB0VdZAij0mXhndy16AixHc4IHud8DBf3FghkG2ia0L7VNTNXix/ML/G1k6yN73Mc8LEYjLfzs8Sw== X-Received: by 2002:a81:3295:: with SMTP id y143-v6mr1401869ywy.418.1535477001360; Tue, 28 Aug 2018 10:23:21 -0700 (PDT) Received: from localhost ([2620:10d:c091:200::1:de86]) by smtp.gmail.com with ESMTPSA id i190-v6sm1129807ywc.60.2018.08.28.10.23.20 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 28 Aug 2018 10:23:20 -0700 (PDT) From: Johannes Weiner To: Ingo Molnar , Peter Zijlstra , Andrew Morton , Linus Torvalds Cc: Tejun Heo , Suren Baghdasaryan , Daniel Drake , Vinayak Menon , Christopher Lameter , Peter Enderborg , Shakeel Butt , Mike Galbraith , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@fb.com Subject: [PATCH 1/9] mm: workingset: don't drop refault information prematurely Date: Tue, 28 Aug 2018 13:22:50 -0400 Message-Id: <20180828172258.3185-2-hannes@cmpxchg.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180828172258.3185-1-hannes@cmpxchg.org> References: <20180828172258.3185-1-hannes@cmpxchg.org> 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: X-Virus-Scanned: ClamAV using ClamSMTP From: Johannes Weiner If we keep just enough refault information to match the *current* page cache during reclaim time, we could lose a lot of events when there is only a temporary spike in non-cache memory consumption that pushes out all the cache. Once cache comes back, we won't see those refaults. They might not be actionable for LRU aging, but we want to know about them for measuring memory pressure. Signed-off-by: Johannes Weiner --- mm/workingset.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/mm/workingset.c b/mm/workingset.c index 40ee02c83978..53759a3cf99a 100644 --- a/mm/workingset.c +++ b/mm/workingset.c @@ -364,7 +364,7 @@ static unsigned long count_shadow_nodes(struct shrinker *shrinker, { unsigned long max_nodes; unsigned long nodes; - unsigned long cache; + unsigned long pages; /* list_lru lock nests inside the IRQ-safe i_pages lock */ local_irq_disable(); @@ -393,14 +393,14 @@ static unsigned long count_shadow_nodes(struct shrinker *shrinker, * * PAGE_SIZE / radix_tree_nodes / node_entries * 8 / PAGE_SIZE */ - if (sc->memcg) { - cache = mem_cgroup_node_nr_lru_pages(sc->memcg, sc->nid, - LRU_ALL_FILE); - } else { - cache = node_page_state(NODE_DATA(sc->nid), NR_ACTIVE_FILE) + - node_page_state(NODE_DATA(sc->nid), NR_INACTIVE_FILE); - } - max_nodes = cache >> (RADIX_TREE_MAP_SHIFT - 3); +#ifdef CONFIG_MEMCG + if (sc->memcg) + pages = page_counter_read(&sc->memcg->memory); + else +#endif + pages = node_present_pages(sc->nid); + + max_nodes = pages >> (RADIX_TREE_MAP_SHIFT - 3); if (nodes <= max_nodes) return 0;