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); From patchwork Tue Oct 9 18:47:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Weiner X-Patchwork-Id: 10633183 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 E026515E8 for ; Tue, 9 Oct 2018 18:48:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D61782953E for ; Tue, 9 Oct 2018 18:48:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CA2E729554; Tue, 9 Oct 2018 18:48:23 +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 4F4642953E for ; Tue, 9 Oct 2018 18:48:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CC0E46B0007; Tue, 9 Oct 2018 14:48:19 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id C4DFA6B000C; Tue, 9 Oct 2018 14:48:19 -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 A9AEB6B000D; 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-yw1-f70.google.com (mail-yw1-f70.google.com [209.85.161.70]) by kanga.kvack.org (Postfix) with ESMTP id 828106B0007 for ; Tue, 9 Oct 2018 14:48:19 -0400 (EDT) Received: by mail-yw1-f70.google.com with SMTP id v132-v6so1517660ywb.15 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=xqbsKb6+MsTOYxvFNkRY6HKryVHEiHLbzY5smiU/q9o=; b=YrxqPc9T+WxA/BPEYgunjx0fpGySdxIFOhD3V0CFRxW1TcP5QKEtBfiUAmqmKUegEA ooUxH6nyaG63OWun1VMyAsx98TAsX62Arre2xhNX5bErLRG4R7OY+1ELIjTwNv5Y6FE3 DTSEHhXYGDBjbU5zx5CymafIFtix3S7TJSP0OByvSZ8gVWwndYYltYmJW+n7FGYnXV8X RyrdqoYwEupkNOjgHGdYY1kXPHOIF5nGLU/1/mKUKenIwdMijMwwrvOx9txdIf1tZgto Z7WR6hsG5P8z1rRY7d0zGHpCRRjQK+7gJMR8ffEt2gked+xTRXMZMNuu9VZ6fewYAOt9 NEsw== X-Gm-Message-State: ABuFfojvd6nS6tW5ecfK44Wl36rtoosSCOvHZtwCNQp7tHWCfRygnL2d kMhTZ3vJpe+6uMwcJdOW5RuZVgoVjtZ5TNnhZ8+HgWSAg7TyObjymLazTw38M1EPH/kemHTLIwH DCDuSDWHIJ/qB0IvJb8g9j4kL8Q45gV7kzFZ4E1PaWQY1b78VIqcQ5o6hvGIpAAyj/H7d+2jdQf ywgMZyvcjSo08HSqTaJ1sh+Gul/mZTxH+XhSqSBV7VXBIiPllX5KB7n5PckufspqZzN6ab4psUO +EeW/pM6Os25iHX04q246qProiPPtpZg3Or4Q6j1GzPFPhcqUH8rm4/B4MLod1lXnyRUgPV1hjo Kv+iHfCr8+8WASxbQeBHS1D6k/3EApINXZhOqVaHSP5xk7aAHcW2CNnMQln/5UJnasxedz4Tsbv Y X-Received: by 2002:a81:9b89:: with SMTP id s131-v6mr16508062ywg.283.1539110899259; Tue, 09 Oct 2018 11:48:19 -0700 (PDT) X-Received: by 2002:a81:9b89:: with SMTP id s131-v6mr16508040ywg.283.1539110898796; 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=uGEhoM6mbPkvOgfmn37aEi8Oz8rEG1FRh6C9O3cF/TeZOi9IOWSl9cPZzsVuO3AkjG C2MAll5EXmjQ9kpaklepMd554GTqcyl0LIV0yjHAU/6TbhVVhSgiOMqu92HHRady6kQ9 DT4J360FHwGKhcGxFIWwEuDI+sW7Orr3j0fc2XUKMRVDrHfUrBoetMTSl9S0AfQdsj4s 96X4nRkj9hE9t5nB/5I04ZTvUmJavJtrAyBKMVrUuQys7fuIIDpvZzlHPSTGLE7tT47p smBDkyfJ12Z7qOP4fnQu1ja9gBaWO8TyC+pWpV/3xraC6s/Oi1b9HgblO11cvkOAGBu6 XYaw== 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=xqbsKb6+MsTOYxvFNkRY6HKryVHEiHLbzY5smiU/q9o=; b=KOYsXUEFc+M44em2OwFqpS3KvVxR4+LvJSitm6vpe66xBflGdTCvIZ8rpojcFh0I5/ UckIK76DDttp/qa7pWelRVhUWnwy/gSGGMe37wvTViV0ypyGFSe20B9o03A2gB5HV1eL R/VfDXumxjZxyEVUXhM5JMaEXWbz0q+cTJBiELWNYbjztHfneHzXlxrfmTdDplR3UjtN uOC61/P6vfJHzWt+dTOGrNHqFH2RNP7uupRk5rTIHhBCOEvGR1sdkWOS7RDngVhM6Y8y p8jvuL4fhk0x1dYk3plrJURU3WZN9dDIV1917eChAES1aXFi96GOxbh7NAuRTs1r2mdA g4KA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cmpxchg-org.20150623.gappssmtp.com header.s=20150623 header.b=2JpSxkRR; 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 e142-v6sor9951265yba.7.2018.10.09.11.48.17 for (Google Transport Security); Tue, 09 Oct 2018 11:48:17 -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=2JpSxkRR; 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=xqbsKb6+MsTOYxvFNkRY6HKryVHEiHLbzY5smiU/q9o=; b=2JpSxkRR4M31hSqYhIRpOAxAMei/UCRotaZiDLuYmqn1wzDkrYi0oaTAYG0Sma9CJP rrCe43lMHImNHs03pdLNqlzHCJLD1/VZ2QoXjnKpnQ9Nx1RDVgiC/0gGnd3Vlp5nmsU0 Q20toGmCeq3Y37XWIzJXU99nCVWHFvU6V79lZWy4BVbmvSPNEsrUorMHsvCryacKMDfe y7fXLYsue/bduZGQWQ6cmhCrEweq0bTltnrBnDv2UN3WOY2jLwaDQVqsJ2aThf7hEOY3 kjF+KcsjpTo4cTxKQzgoJ0ezK6qf5yDk7XI1qdClu/ELAY7FzUcUiz8leUxAA1C2tkb1 UbOw== X-Google-Smtp-Source: ACcGV63DSRtb2M1873wzEFbvNrF8EqbjX6+h5uKkX5MxiEsBQ8R+Dq1KsodlTZjiNTsOYEo+e332/A== X-Received: by 2002:a25:7ec5:: with SMTP id z188-v6mr4015990ybc.250.1539110897163; Tue, 09 Oct 2018 11:48:17 -0700 (PDT) Received: from localhost ([2620:10d:c091:200::6:14c5]) by smtp.gmail.com with ESMTPSA id r8-v6sm15176282ywa.56.2018.10.09.11.48.15 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Oct 2018 11:48:16 -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 2/4] mm: workingset: use cheaper __inc_lruvec_state in irqsafe node reclaim Date: Tue, 9 Oct 2018 14:47:31 -0400 Message-Id: <20181009184732.762-3-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 No need to use the preemption-safe lruvec state function inside the reclaim region that has irqs disabled. Signed-off-by: Johannes Weiner Reviewed-by: Rik van Riel --- mm/workingset.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/workingset.c b/mm/workingset.c index e5c70bc94077..f564aaa6b71d 100644 --- a/mm/workingset.c +++ b/mm/workingset.c @@ -493,7 +493,7 @@ static enum lru_status shadow_lru_isolate(struct list_head *item, * shadow entries we were tracking ... */ xas_store(&xas, NULL); - inc_lruvec_page_state(virt_to_page(node), WORKINGSET_NODERECLAIM); + __inc_lruvec_page_state(virt_to_page(node), WORKINGSET_NODERECLAIM); out_invalid: xa_unlock_irq(&mapping->i_pages); From patchwork Tue Oct 9 18:47:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Weiner X-Patchwork-Id: 10633187 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 B28CF933 for ; Tue, 9 Oct 2018 18:48:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A8F4229552 for ; Tue, 9 Oct 2018 18:48:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9D82F2956E; Tue, 9 Oct 2018 18:48:29 +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 3855A29552 for ; Tue, 9 Oct 2018 18:48:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AEED66B000C; 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 A762E6B000D; 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 93EAA6B000E; Tue, 9 Oct 2018 14:48:20 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-yb1-f199.google.com (mail-yb1-f199.google.com [209.85.219.199]) by kanga.kvack.org (Postfix) with ESMTP id 511AA6B000C for ; Tue, 9 Oct 2018 14:48:20 -0400 (EDT) Received: by mail-yb1-f199.google.com with SMTP id n8-v6so1181630ybo.9 for ; Tue, 09 Oct 2018 11:48:20 -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=5KEsEdGBvrMUNWtGyEIiTPpN958jHDkc6gRi8ilCin8=; b=HUQGeFZ17M6f2SJi0jkYbyD7fKpQXkTMxyc81b3HajzdlEf0EZUF0DRGLj/v1ZjEaD vvEDZ9OjVrUjQ55naxbLuxQ2mWRkU8ARE9E8KmTlq5FYyUX5U+/b3Vk9ynp3KJTD+HG6 ib1FIobcvjyKOIg2yrQcPrO671w8tNHx5JE2uP1yYPywC1jA+RoWarlT5Wk9zBTcEd9H WTs8oRIhcsJP/XoHipxtklLjlJH/iAI3w1Ao7Y0scGhP9wyh6krybvPbWVxbb1Zs/XSv xCzFjJKEdWm/IQNcMLgNjf7uApX4l4ZDXEP3b+VmxqTXpB89/Wq0KS7i0l/O5bMdBuYJ HpEQ== X-Gm-Message-State: ABuFfoh9PqipUohR152oOBYRQt3OlMBZF30H5I3UHrVX/vtNdtLeLvET YhnvFUEqGO02bu5tTI/hQHPiUkC7mktQ+mDL0JGfgY4k6VWbBMeB/t17VMAqPdf+P8PxZZnby0d 1R5MkqpmgesJSh++YIitd1EWcEfnLSZ76m1qx8eh+xnck9eDu6v7j2vpE8ANRx/fusaROxLMP4l y+ezeLvXhMaj5+O5ymN35cUgGiOWqqP1ANfQYUuLksSmsNt0qLpEz3gLHpUPDTdRcGsRRpVMFve YJbvUrC9QyvSaa3aoGGW+2rvGxVDhAac5ZwnEy62Nn/pD6As3/DalFcA+UWCmjZCP4LA8gGaDdE PQav7NcGRX7nfgS209eDzovgbpOaKgRHPAL/HXAOaYLnIoocPnY7cl0eLt/hWbBDRPYTW1rCYuc 4 X-Received: by 2002:a25:1e88:: with SMTP id e130-v6mr4536974ybe.123.1539110900082; Tue, 09 Oct 2018 11:48:20 -0700 (PDT) X-Received: by 2002:a25:1e88:: with SMTP id e130-v6mr4536946ybe.123.1539110899328; Tue, 09 Oct 2018 11:48:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539110899; cv=none; d=google.com; s=arc-20160816; b=OKzwsqdmOnKWoPG2BpPzIVecGv6ERctxNRvPypIZd1RQqtkHG2+Ph+wU7r5FmJgiEH iLtP70kV1euI5FDJlTk4oo0iav7xciychANAL3hcokTScQEpNahmeBJCAkMzD8G9gm7H UGn+XVKm8E1pGoAoSX6bOKy8VxxwHGmLZ1DsNjWdR4HrOt5fiHbFA8+GsoWG2nrKdlQ5 e9P2xP5q+GCFConZvJQaKiNjUNoMgKRiJBkE3K3pjl4vmDfN3iO5ivp8vpN3EHqk0cXQ +pCrJ3swkSLk9IKjd/nIj6UV0JW8zRBZuBedLubjrIJ4i5H7gG5rWhIjm1mY6dHAfo/o /Eqw== 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=5KEsEdGBvrMUNWtGyEIiTPpN958jHDkc6gRi8ilCin8=; b=zYYbvTTMgmdF1Eq58F+ZygxgVztFTnRKzBetUzNN3x6uRlEUTUsrvesJZ3L9GEeEhM k/k9YvBUsZ/C2fxpsqbXZDLO46CI59oJn4JnFbYviHYwOnqtYtKih1Hl5UWiQRlFcic6 7zApJXmOwepwKx6lqOgLsosRmxc+pEFPhAiUL2/YmttbNUaagiJ7RlKvv9LnHdDS/bx6 SbMlIVuMqqrOYXpSy/pEcdqZuo5FkZPargtoXFPMIM7Hq/OJHIqFsN1T07kswmFUQi1Y TI5XGjcaEBS/+rxCq/0KK707YKTvG1rmzuSrOCfZddi0eiEC/8baKZXxImKN5DcEcUKN 20Dw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cmpxchg-org.20150623.gappssmtp.com header.s=20150623 header.b=iHW4Xuaz; 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 n186-v6sor2343296ywc.51.2018.10.09.11.48.19 for (Google Transport Security); Tue, 09 Oct 2018 11:48:19 -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=iHW4Xuaz; 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=5KEsEdGBvrMUNWtGyEIiTPpN958jHDkc6gRi8ilCin8=; b=iHW4XuazhRFqlrZRq9IUKEVo7Apl+liUkomlKYHmxGSxyFc2pckXE8G6NTzXQ5su7/ okopKOrLP5N1PXqh8N8RYwtSnbtaSlmxmce+2IQchMunbthj/9WDU89QVNbdwqc0/kX8 fxvzAZ3mhC1Q2vL895UEFZY6BDqyNjZ0D9m98T8Lg5KGnpYzoo9BFONj02tvdJM2e+jg ljsIwB7FxTAVrnnLRXuoZT08vIztvbrB19hE0Gcmei1orsZIunZ7qsGA2F4dhN9jpaRh eI7yUuXCKEhL4VwqEszgnTOYaVxXbQLTsfQ/NwOSYTWkzpZTmpm+LF4U7D8oNofLm8gu oyjg== X-Google-Smtp-Source: ACcGV63u3zwG+OP0mGmwt3IuEh4X6VI2/AtHABSD8/EI77QXHbis0ICPaJuSb4LP/KYxxnZ84Yp3ug== X-Received: by 2002:a81:2609:: with SMTP id m9-v6mr16924353ywm.67.1539110899119; Tue, 09 Oct 2018 11:48:19 -0700 (PDT) Received: from localhost ([2620:10d:c091:200::6:14c5]) by smtp.gmail.com with ESMTPSA id o202-v6sm35068808ywo.38.2018.10.09.11.48.17 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Oct 2018 11:48:18 -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 3/4] mm: workingset: add vmstat counter for shadow nodes Date: Tue, 9 Oct 2018 14:47:32 -0400 Message-Id: <20181009184732.762-4-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 Make it easier to catch bugs in the shadow node shrinker by adding a counter for the shadow nodes in circulation. Signed-off-by: Johannes Weiner Signed-off-by: Johannes Weiner --- include/linux/mmzone.h | 1 + mm/vmstat.c | 1 + mm/workingset.c | 12 ++++++++++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 4179e67add3d..d82e80d82aa6 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -161,6 +161,7 @@ enum node_stat_item { NR_SLAB_UNRECLAIMABLE, NR_ISOLATED_ANON, /* Temporary isolated pages from anon lru */ NR_ISOLATED_FILE, /* Temporary isolated pages from file lru */ + WORKINGSET_NODES, WORKINGSET_REFAULT, WORKINGSET_ACTIVATE, WORKINGSET_RESTORE, diff --git a/mm/vmstat.c b/mm/vmstat.c index d08ed044759d..6038ce593ce3 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -1143,6 +1143,7 @@ const char * const vmstat_text[] = { "nr_slab_unreclaimable", "nr_isolated_anon", "nr_isolated_file", + "workingset_nodes", "workingset_refault", "workingset_activate", "workingset_restore", diff --git a/mm/workingset.c b/mm/workingset.c index f564aaa6b71d..cfdf6adf7e7c 100644 --- a/mm/workingset.c +++ b/mm/workingset.c @@ -378,11 +378,17 @@ void workingset_update_node(struct xa_node *node) * as node->private_list is protected by the i_pages lock. */ if (node->count && node->count == node->nr_values) { - if (list_empty(&node->private_list)) + if (list_empty(&node->private_list)) { list_lru_add(&shadow_nodes, &node->private_list); + __inc_lruvec_page_state(virt_to_page(node), + WORKINGSET_NODES); + } } else { - if (!list_empty(&node->private_list)) + if (!list_empty(&node->private_list)) { list_lru_del(&shadow_nodes, &node->private_list); + __dec_lruvec_page_state(virt_to_page(node), + WORKINGSET_NODES); + } } } @@ -472,6 +478,8 @@ static enum lru_status shadow_lru_isolate(struct list_head *item, } list_lru_isolate(lru, item); + __dec_lruvec_page_state(virt_to_page(node), WORKINGSET_NODES); + spin_unlock(lru_lock); /* From patchwork Tue Oct 9 18:47:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Weiner X-Patchwork-Id: 10633189 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 AFA13933 for ; Tue, 9 Oct 2018 18:48:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A488B2953E for ; Tue, 9 Oct 2018 18:48:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 98E252955C; Tue, 9 Oct 2018 18:48:33 +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 036E42953E for ; Tue, 9 Oct 2018 18:48:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 325156B000D; Tue, 9 Oct 2018 14:48:23 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 263816B0010; Tue, 9 Oct 2018 14:48:23 -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 E96AB6B0266; Tue, 9 Oct 2018 14:48:22 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-yw1-f71.google.com (mail-yw1-f71.google.com [209.85.161.71]) by kanga.kvack.org (Postfix) with ESMTP id AD5A96B000D for ; Tue, 9 Oct 2018 14:48:22 -0400 (EDT) Received: by mail-yw1-f71.google.com with SMTP id x5-v6so1514722ywd.19 for ; Tue, 09 Oct 2018 11:48:22 -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=IJnCLRw3K+q3Md8hRn4AAV6ZWYmte8NOr8osfiV9S1M=; b=E9XvRdewqqJ2rZ+VXVFqevx0Rpxa/Sba9L+z93CHcXyiW9USVWb7sA/A3Jml3XIJKz bcUjzfKysI4VgikusPMGjwz4/OFLg3jGckTqeLdIfxFlFOlrhOD8b6LU1tGtPPgSrrGx WaYrDuyZmFW2xd9C3fbf8uErt20iVxVbzoym9kpHjsCBj8zGQ/X40479yQaTAjJN18XF QWp3MHwt/eTBqiCc9QSHojcIXeHZVPSWZdQSSzdW71RxJ/7DGnbVqYKvwKNkVcQvk6Tq P98GfYvCas+qG/vJsJjB3G/4D1bLy3ImCXRnw9Bfa7vNjVRLoB6p5ZsZRZdi3dx1njjX pG5g== X-Gm-Message-State: ABuFfohdYfgyli52y6Ai6x5kMTblDh1pzhmKRxfmk0Lvo7tt5NH5Vwny p5NcB71PcJAJNp6ac2NyLBqQoXLoX4NRJF6Xdl8nqrgUl9n0dpCCwkMhHiwSnhc/RgkEvTy5pj3 MYz3VpIeBxhOXskg01lTIQ94QSNe5CzQaRAcAIabf86ZlP6OwZmMoFyBrFoqLbufOcNr4H0F9kd sxAYcuWup/3FkOoLlapCV3PlrtOY2MwU/T3jfegoVeJ4LyDi57k5CvZ2xDQMY9MDGRdf4kGDh+z kyA5fy7m43M71AbvUwrZ0Ow8QyQ2zn1tiV9c1jIk6hK1bxVNa+LWMl/ElyMIN9PFMUUbd3xTCC0 2oiFfqUz89L2OHCWXgj6mE2cxDkP5rzg0oCZnZRbp4Cw39Z2rxCw+FPw5cTj52xb34nkEu7GrHt h X-Received: by 2002:a25:1342:: with SMTP id 63-v6mr16352555ybt.495.1539110902379; Tue, 09 Oct 2018 11:48:22 -0700 (PDT) X-Received: by 2002:a25:1342:: with SMTP id 63-v6mr16352524ybt.495.1539110901449; Tue, 09 Oct 2018 11:48:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539110901; cv=none; d=google.com; s=arc-20160816; b=vT0ve1aWfvVuxbH/EcuQK5LZP92ITSyYSf6MxQrw+r0iZRtCjxo68j75RA+BEZApAA fCq1vAaxc6hSd1k+1V0/nvkCztRp1cW1HoVtu2hEZf4AKNMpPYVcxbBeoLWlSQdnbUa0 U7d0NN9AKnOHJmPRyOUaLYInf3HPoGi1YsgHlo4hKTYscsNdVM/0P490573rOjwljXQD J9FQteuXXEULQl9GrA1vUP1IRWzjSygOLsuyucm3e4Q1h0F4HgjiocKke6BBq5j7kOiF CjfZQzQeG7SlKZC1E5GtkPJPIrWVEsNaOM2VFkLnYAnhMyGKoOVAniajaoHWd7Txx/5a NWgg== 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=IJnCLRw3K+q3Md8hRn4AAV6ZWYmte8NOr8osfiV9S1M=; b=cdk33AzRBy3ZKCijW8THwB5fOigCBrHVoJqucyrxFhGdJypQS6ZXOvb0Hma8r8TNOX WFKys+e6caeSLb/utOIgVTOIAuKWstPivbwkN4Sn99EIWi87i1JJPmtSki77qHXKkb4W StK4w/bB/z0+5pcKf9RjZyVAHyxmEIYS/+tXkeRKXm3uzCBGGJu9zNpkZlB8kONUvxiU CVCLefNJEEboiHmbtdJ5i2m0OzQfRLpGNSlLM9J/J5sJZrIa0p1AhFLIbByowF4dzCbn XmEGdd4+cUyQ/7XrCg4ccZui4dT4OTOa6fE6VXfoT40NgCF9oMHiEwEb6zuE4zDP9CZj s08w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cmpxchg-org.20150623.gappssmtp.com header.s=20150623 header.b=el2EUKH7; 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 p3-v6sor2976494ywf.7.2018.10.09.11.48.21 for (Google Transport Security); Tue, 09 Oct 2018 11:48: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=el2EUKH7; 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=IJnCLRw3K+q3Md8hRn4AAV6ZWYmte8NOr8osfiV9S1M=; b=el2EUKH7k0vuEAzqiBypMiUy3RyKKukFBLG0f2cl17Plo4OYPhfACk0S11Jf4PBgRa b4cTCDsdeeYj81uWm6iEZDx/TlqhMh6WonLGKHU68SbN9yRHOdh3oowHVP2erFo64mei yLcny3Kx2s7peV4X6z8UxNZJo7Emr4+/0/TlBLLnbBXBQd0WTufMOXLdu9ojkrkmoJd5 WQqVYKT/pDBkGYMiEWUPlkG9e8GPbNmyeU6jFf9IgVJNEX2RvAcU+rHPlY4ml0UdhAGL VbiaVpjlKmGyiv+efZ5DRsc3zFholac0xI4hhQ834jskAMLJwwhtTovei1j31saiN2YJ OveQ== X-Google-Smtp-Source: ACcGV62qRx2HfQJfPX3jBPoOLE9skEPk+s+BCfnqkpFsTggsdSHGjGMixGKyjd7YcA94hpHjdAvWHQ== X-Received: by 2002:a81:e901:: with SMTP id d1-v6mr16555259ywm.383.1539110901166; Tue, 09 Oct 2018 11:48:21 -0700 (PDT) Received: from localhost ([2620:10d:c091:200::6:14c5]) by smtp.gmail.com with ESMTPSA id x133-v6sm13947696ywg.66.2018.10.09.11.48.19 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Oct 2018 11:48:20 -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 4/4] mm: zero-seek shrinkers Date: Tue, 9 Oct 2018 14:47:33 -0400 Message-Id: <20181009184732.762-5-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 page cache and most shrinkable slab caches hold data that has been read from disk, but there are some caches that only cache CPU work, such as the dentry and inode caches of procfs and sysfs, as well as the subset of radix tree nodes that track non-resident page cache. Currently, all these are shrunk at the same rate: using DEFAULT_SEEKS for the shrinker's seeks setting tells the reclaim algorithm that for every two page cache pages scanned it should scan one slab object. This is a bogus setting. A virtual inode that required no IO to create is not twice as valuable as a page cache page; shadow cache entries with eviction distances beyond the size of memory aren't either. In most cases, the behavior in practice is still fine. Such virtual caches don't tend to grow and assert themselves aggressively, and usually get picked up before they cause problems. But there are scenarios where that's not true. Our database workloads suffer from two of those. For one, their file workingset is several times bigger than available memory, which has the kernel aggressively create shadow page cache entries for the non-resident parts of it. The workingset code does tell the VM that most of these are expendable, but the VM ends up balancing them 2:1 to cache pages as per the seeks setting. This is a huge waste of memory. These workloads also deal with tens of thousands of open files and use /proc for introspection, which ends up growing the proc_inode_cache to absurdly large sizes - again at the cost of valuable cache space, which isn't a reasonable trade-off, given that proc inodes can be re-created without involving the disk. This patch implements a "zero-seek" setting for shrinkers that results in a target ratio of 0:1 between their objects and IO-backed caches. This allows such virtual caches to grow when memory is available (they do cache/avoid CPU work after all), but effectively disables them as soon as IO-backed objects are under pressure. It then switches the shrinkers for procfs and sysfs metadata, as well as excess page cache shadow nodes, to the new zero-seek setting. Reported-by: Domas Mituzas Signed-off-by: Johannes Weiner Reviewed-by: Rik van Riel --- fs/kernfs/mount.c | 3 +++ fs/proc/root.c | 3 +++ mm/vmscan.c | 15 ++++++++++++--- mm/workingset.c | 2 +- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/fs/kernfs/mount.c b/fs/kernfs/mount.c index 1bd43f6947f3..7d56b624e0dc 100644 --- a/fs/kernfs/mount.c +++ b/fs/kernfs/mount.c @@ -251,6 +251,9 @@ static int kernfs_fill_super(struct super_block *sb, struct kernfs_fs_context *k sb->s_export_op = &kernfs_export_ops; sb->s_time_gran = 1; + /* sysfs dentries and inodes don't require IO to create */ + sb->s_shrink.seeks = 0; + /* get root inode, initialize and unlock it */ mutex_lock(&kernfs_mutex); inode = kernfs_get_inode(sb, info->root->kn); diff --git a/fs/proc/root.c b/fs/proc/root.c index 8912a8b57ac3..74975ca77b71 100644 --- a/fs/proc/root.c +++ b/fs/proc/root.c @@ -127,6 +127,9 @@ static int proc_fill_super(struct super_block *s, struct fs_context *fc) */ s->s_stack_depth = FILESYSTEM_MAX_STACK_DEPTH; + /* procfs dentries and inodes don't require IO to create */ + s->s_shrink.seeks = 0; + pde_get(&proc_root); root_inode = proc_get_inode(s, &proc_root); if (!root_inode) { diff --git a/mm/vmscan.c b/mm/vmscan.c index a859f64a2166..62ac0c488624 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -474,9 +474,18 @@ static unsigned long do_shrink_slab(struct shrink_control *shrinkctl, nr = atomic_long_xchg(&shrinker->nr_deferred[nid], 0); total_scan = nr; - delta = freeable >> priority; - delta *= 4; - do_div(delta, shrinker->seeks); + if (shrinker->seeks) { + delta = freeable >> priority; + delta *= 4; + do_div(delta, shrinker->seeks); + } else { + /* + * These objects don't require any IO to create. Trim + * them aggressively under memory pressure to keep + * them from causing refetches in the IO caches. + */ + delta = freeable / 2; + } /* * Make sure we apply some minimal pressure on default priority diff --git a/mm/workingset.c b/mm/workingset.c index cfdf6adf7e7c..97523c4d3496 100644 --- a/mm/workingset.c +++ b/mm/workingset.c @@ -523,7 +523,7 @@ static unsigned long scan_shadow_nodes(struct shrinker *shrinker, static struct shrinker workingset_shadow_shrinker = { .count_objects = count_shadow_nodes, .scan_objects = scan_shadow_nodes, - .seeks = DEFAULT_SEEKS, + .seeks = 0, /* ->count reports only fully expendable nodes */ .flags = SHRINKER_NUMA_AWARE | SHRINKER_MEMCG_AWARE, };