From patchwork Tue Oct 9 18:47:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Weiner X-Patchwork-Id: 10633185 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 B187E933 for ; Tue, 9 Oct 2018 18:48:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A70102953E for ; Tue, 9 Oct 2018 18:48:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9B4D02955C; Tue, 9 Oct 2018 18:48:26 +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 2E2402953E for ; Tue, 9 Oct 2018 18:48:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0B6CB6B0008; Tue, 9 Oct 2018 14:48:20 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 03D496B000E; Tue, 9 Oct 2018 14:48:20 -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 D84FB6B0008; Tue, 9 Oct 2018 14:48:19 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-yb1-f197.google.com (mail-yb1-f197.google.com [209.85.219.197]) by kanga.kvack.org (Postfix) with ESMTP id 9F3BE6B0008 for ; Tue, 9 Oct 2018 14:48:19 -0400 (EDT) Received: by mail-yb1-f197.google.com with SMTP id z8-v6so1159620ybo.17 for ; Tue, 09 Oct 2018 11:48:19 -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:mime-version :content-transfer-encoding; bh=tna855SkPJ6zYFOEu1mpIZPvXX+jOZfy3FmFArQWAbk=; b=bBbRQjirkjftey7S0DXFjghsLGoE8JKCU/S68X1eEmnL48UexrgfEr5xE8EPmrhnMl isY+hKnOFkPLdjrPIvRRP+x4QM6WDJKD+1rqev2kv+eaMbsbvrhX9EfYBEjcGpwj767P mvj5kT2N9Js7PDmqmkbmgFsm09ZI0vAjD0rPel8MpySwLcA36l5oInEpOmf7I46DPmqW sJBqb6BsQq2DAtlDcGHTyeHkWuJiAg0ZMFwsMTqhba79lpyu/JitzabqrrfrrhKobn2p PF1CWMut0ouuACNzAzWhfxiIFlv//o9ggEf0Fik3x3zxeUu2c4G7Y7FddBVMvh0qM1Hv NIUA== X-Gm-Message-State: ABuFfohP4WSd+G0z0RwtBQm3E0jpHsEor3f7p6AW/EOdNK1YjnGJeq2i nT7sdVR4uI2WRQRRhxKuRfAEA3g3o7kuNcV6KP2vH5xiD4FhV8scF8BILzZiUAeCa9dquXDVsls JsckutVM7IMPC0d4P46CrcEq+o7URz9rFSMEvmV57wOV8TdTIdZ/o1/IB/dU3wUxYvv2ajmf+YO T9W4TsthM86dP35YcISgKRYAIqzgruoPnPL/PI7E3far458fuU3tn6l4rAPrWEuzhgzxrqXwUEU UnbwmXudk/JJLfpPdxhdgtdfzISL9N8ZN49jEOiWhG0ftItsZIkmEz84YUO+ToXg4DlB2mBNGRe WHYpi6oPJBX+UndKSj6+CaE9YuL6aMDmNv+3XxHNzapuZHYUQxCUA07ko6T2PzcA+ul2E0WKK9S 3 X-Received: by 2002:a81:838e:: with SMTP id t136-v6mr16428311ywf.165.1539110899402; Tue, 09 Oct 2018 11:48:19 -0700 (PDT) X-Received: by 2002:a81:838e:: with SMTP id t136-v6mr16428285ywf.165.1539110898800; Tue, 09 Oct 2018 11:48:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539110898; cv=none; d=google.com; s=arc-20160816; b=Nw7UcKRoGmIeRy9TLQXVqKKNQ5PBI9F867OU4BhMq9bqPu1e8nlV4Q8HpmkXpA3R/C O/ZGDqFpPE8hdJ3knZhvdZshrff+9L6ECzgEZeDb47sJIf6p1zlrJf9n1g238bekHJHn eQ7IDLqfmj/E2BEeMlZDQAmLrExUXuO+S7kcFe5Cu94oaSbms8pUUVEol3E1H0hRW68q jMzIQXQ4g/QpAL8sKsrJzQ6sBjHNua2mTrjdBbfQW/zCtTJUGFN1xVootJqhukgTe6MN XSVo0A5pLr5urkMoRc2auekQxZCICsBvL61v6WHpC29Vs9gGGefaus1Xu/0Imk9Cay6A xFgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=tna855SkPJ6zYFOEu1mpIZPvXX+jOZfy3FmFArQWAbk=; b=i2Nr+5D7oU7BjkDPD3GQPp7/CVCtUsmWx2HjVwNxrM2cmNhXsrF+Z7NVJlZcLu7cx5 rvINBQKKU0TD9cY+vv8FvZtC2YKn9qQ8cPQCvJ9EGuIGyqOqYQ2TlFYQ92+nABNf41l8 PD33JWsgAhouJifImmhoErDoozPJq5/3fhlI06dFYk/l/OohaJ89bDMhUfmMAqhzhtyR NR5WnxJOCdC5EkNpaEG5XRuOlTfhNJtwnbC+kg0+chTMfsvrSJL/O7Jo/pqb54cfD1mr qUzcqSQSiicC4/x8d7eZzEtIrK2C6A9esMmHqec1lX7MPJ6+zZAcC/Ozmri48nG24j/6 nqOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cmpxchg-org.20150623.gappssmtp.com header.s=20150623 header.b=q1WF876n; 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 r5-v6sor8451987ybb.198.2018.10.09.11.48.15 for (Google Transport Security); Tue, 09 Oct 2018 11:48:15 -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=q1WF876n; 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 :mime-version:content-transfer-encoding; bh=tna855SkPJ6zYFOEu1mpIZPvXX+jOZfy3FmFArQWAbk=; b=q1WF876nhlbyKtvMhfR0OHFYV+tN6WzFjXq9mfW/WofE2vNw11mls/DaXKi3PsVf5K Cwsn0hgXBM8SJdQ3Tb6/o/9p0arMyyLmOI5y0p+1a/UxB1iiT1b/T/+UPO4PAptmlKwl Q46Ibp3kVYUyogtr6imYiaJtCKGNWsrsTGMnpemZVR1RxLquBg56ToXyo0jfmJAZyx6Y qcGeVVWmXhW8f+rrJYZ9dXN5fMl7zkkfIpd1+a6yDlkuf0N7M36RWyd8i3PCmbw4ENjl wiZ+kW8DWh5fNvz7cvbM6tznpLhBqCVFx9GhtpLUsU6k/OXQZsl1BAYYIcKehEhGrG8F 5yHw== X-Google-Smtp-Source: ACcGV61NpOFRd7f6oU6wl2iozn2f50mVxftcibOyxiAUnAeB6uGQt7UX/2EPdAIfEew1wsTlD+GhGg== X-Received: by 2002:a25:3a86:: with SMTP id h128-v6mr16695599yba.89.1539110895132; Tue, 09 Oct 2018 11:48:15 -0700 (PDT) Received: from localhost ([2620:10d:c091:200::6:14c5]) by smtp.gmail.com with ESMTPSA id r8-v6sm15176136ywa.56.2018.10.09.11.48.13 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Oct 2018 11:48:14 -0700 (PDT) From: Johannes Weiner To: Andrew Morton Cc: Rik van Riel , linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@fb.com Subject: [PATCH 1/4] mm: workingset: don't drop refault information prematurely fix Date: Tue, 9 Oct 2018 14:47:30 -0400 Message-Id: <20181009184732.762-2-hannes@cmpxchg.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181009184732.762-1-hannes@cmpxchg.org> References: <20181009184732.762-1-hannes@cmpxchg.org> MIME-Version: 1.0 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 The shadow shrinker is invoked per NUMA node, but the shadow limit enforced for cgroups is based on the page counter, which isn't NUMA aware. Instead of shrinking shadow pages to desired_size, we end up with desired_size * nr_online_nodes. Switch to NUMA-aware lru and slab counters to approximate cgroup size. Signed-off-by: Johannes Weiner Reviewed-by: Rik van Riel --- mm/workingset.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mm/workingset.c b/mm/workingset.c index 1d111913929d..e5c70bc94077 100644 --- a/mm/workingset.c +++ b/mm/workingset.c @@ -418,9 +418,15 @@ static unsigned long count_shadow_nodes(struct shrinker *shrinker, * PAGE_SIZE / xa_nodes / node_entries * 8 / PAGE_SIZE */ #ifdef CONFIG_MEMCG - if (sc->memcg) - pages = page_counter_read(&sc->memcg->memory); - else + if (sc->memcg) { + struct lruvec *lruvec; + + pages = mem_cgroup_node_nr_lru_pages(sc->memcg, sc->nid, + LRU_ALL); + lruvec = mem_cgroup_lruvec(NODE_DATA(sc->nid), sc->memcg); + pages += lruvec_page_state(lruvec, NR_SLAB_RECLAIMABLE); + pages += lruvec_page_state(lruvec, NR_SLAB_UNRECLAIMABLE); + } else #endif pages = node_present_pages(sc->nid);