Received: by 2002:a05:7412:419a:b0:f3:1519:9f41 with SMTP id i26csp4316559rdh; Tue, 28 Nov 2023 19:22:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IGRApWA00zkBS7/9Fr2kzKsSoL4JEyUOQYwrjLRbAhuCw6IH/XqNbJ7MXuax6jjkhrWYTeq X-Received: by 2002:a05:6a00:4983:b0:6cb:5bf7:a50e with SMTP id dn3-20020a056a00498300b006cb5bf7a50emr25217198pfb.12.1701228144118; Tue, 28 Nov 2023 19:22:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701228144; cv=none; d=google.com; s=arc-20160816; b=SsnaI4lMLuOhliiPvXFOyvz7Gfalp8pOaoN2qRU2iPFmPrLdSM0uNN92YVMqf0WPP0 2wa5JwpDRAoF+gPdrlH5kluOGP+Ewc7X3Kx/V0ycOX3+D9xFigHseYC324JR6vuZ6FjK EXqfgVPZXTb5bTK+L0bnNGInWbe7CzclN0ryGpKa4VDaD6fp90BJYx8lCZucOsL9gtXy YkB2rtay2175O+JN5uyAxQTRyPNiSetVeVDiypBGJBq47WuGJwIBrDR9TFtuqtErQ5QZ 83vwqzBO9oJfIFahcvysuupIWyMMxujvvemWfx8ynPzL0gQzQhc9IkvGJzHAK6xlvGXh 1qxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:mime-version:date :dkim-signature; bh=Ky2REY4MxzMO+RxmPId6O0x4sdb+oIV13EhP53U4pHw=; fh=IfBS1eUR4Ph2d1rlykJm3WUUhflOgyoV/WQxPmHrs48=; b=0hqx/dRqsQGYLOAKoHq9tXE+mygNfE+NcFoi5BJQwOb6sG3+TrATlPsTV1DZZOulLt es3qYir1PJvOQ9zsjS9ECmqyaPA8QRuWUiHCYivtkQIBv0fYZXorqRdcGIpY8m8VGS5s ghuplxd342x5pBbHR1EF4NxttNIB7VQJu97NUWRpcu6ix7UBY80nwtozqroxAh9KMh2F 60BeMm6JYTYDDyWJ0vgqg4DAR4JoDnkjZoPyfMVccqkN+k4D/FAf6OJiTYFCfe+meJGI Xj746BmV83gWa6G7L/m5fLtg5BKyJ7absB8xsq5A6o9v685MV8hTcmSChBtOjz/ftqzL /8QQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=sL5L5PZv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from pete.vger.email (pete.vger.email. [2620:137:e000::3:6]) by mx.google.com with ESMTPS id q6-20020a63e946000000b005bdf5961646si12768735pgj.268.2023.11.28.19.22.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Nov 2023 19:22:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) client-ip=2620:137:e000::3:6; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=sL5L5PZv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id E345381C98E1; Tue, 28 Nov 2023 19:22:15 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376776AbjK2DV4 (ORCPT + 99 others); Tue, 28 Nov 2023 22:21:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47952 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229880AbjK2DVz (ORCPT ); Tue, 28 Nov 2023 22:21:55 -0500 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CC0571A3 for ; Tue, 28 Nov 2023 19:22:01 -0800 (PST) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-5d12853cb89so34215367b3.3 for ; Tue, 28 Nov 2023 19:22:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1701228121; x=1701832921; darn=vger.kernel.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=Ky2REY4MxzMO+RxmPId6O0x4sdb+oIV13EhP53U4pHw=; b=sL5L5PZvd4xwqyCkpJqWaIUcaB7q8DD1oraoEiYuNedWYrqGfEGZ6UeQP974N/CUAm yJyw2TIyhnmQmeMGcfsFtlbjJqPxU3qkL/xUo7kt+suL2/x8j9RoYQ1rUXcziNJ1iXhL i0nNCDtfD2zYTxVveP7mOm3LOhNdmt4/yHGGRA1E8ldLU0MXYlD39cZFiCEl9rLrYen7 6OnelRY0AUs8z9RuCBcDJtTYkbvNn4lHNor9J/KsEri3kXENxCpoCWr0Nql1p+iFJ2LQ Aabk5+55jG0msA/OjQTJ5YQEMLQC87f8Ih2bJiBTlyyrCuppffQRwMQZ61+e/ibyUrEM bdeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701228121; x=1701832921; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Ky2REY4MxzMO+RxmPId6O0x4sdb+oIV13EhP53U4pHw=; b=LQiymTWE/uE3YtCE1pMV+cuHM00kssWM/3lF1DXIlxjpOrVa1BoQyxogM2P7zEpx7U B+nfWG4RZTsOtdp37qMkMt9a9MPM+iFSmdw1FI+VpxenJNvM0Q90O97h++nzPppCP334 3xXIZdjqX4X5eLS8WeSZ3SV9pzo4HgAc8qLGMm19qLDgrrE/G+rF6DzIvXTD4wz3JPKu F1h9qd4uVXgQbyCb1STZymheotdrFNFbm5uqsG3xf8anqvuK0qgk5b8tKPYYmNbmyO1X CZQIAdUC6Ox5QuMpKU8wIUgg1xPa7195bKIm9nxgVDJho+N3FvSrjEVpu38C6kpdvJw0 LPrg== X-Gm-Message-State: AOJu0YwXws3GfMsEQfMLXh1NN3xmp6vJbM3kracX6LlSQ5GuuYoyMS4I ChytnUA05Zf+Gfj1OWeBulPk2TmstgePcYuQ X-Received: from yosry.c.googlers.com ([fda3:e722:ac3:cc00:20:ed76:c0a8:29b4]) (user=yosryahmed job=sendgmr) by 2002:a05:690c:2e10:b0:5cd:c47d:d89f with SMTP id et16-20020a05690c2e1000b005cdc47dd89fmr499535ywb.5.1701228121058; Tue, 28 Nov 2023 19:22:01 -0800 (PST) Date: Wed, 29 Nov 2023 03:21:48 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.43.0.rc1.413.gea7ed67945-goog Message-ID: <20231129032154.3710765-1-yosryahmed@google.com> Subject: [mm-unstable v4 0/5] mm: memcg: subtree stats flushing and thresholds From: Yosry Ahmed To: Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Ivan Babrou , Tejun Heo , "=?UTF-8?q?Michal=20Koutn=C3=BD?=" , Waiman Long , kernel-team@cloudflare.com, Wei Xu , Greg Thelen , Domenico Cerasuolo , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Yosry Ahmed Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Tue, 28 Nov 2023 19:22:16 -0800 (PST) This series attempts to address shortages in today's approach for memcg stats flushing, namely occasionally stale or expensive stat reads. The series does so by changing the threshold that we use to decide whether to trigger a flush to be per memcg instead of global (patch 3), and then changing flushing to be per memcg (i.e. subtree flushes) instead of global (patch 5). Patch 3 & 5 are the core of the series, and they include more details and testing results. The rest are either cleanups or prep work. This series replaces the "memcg: more sophisticated stats flushing" series [1], which also replaces another series, in a long list of attempts to improve memcg stats flushing. It is not a new version of the same patchset as it is a completely different approach. This is based on collected feedback from discussions on lkml in all previous attempts. Hopefully, this is the final attempt. There was a reported regression in v2 [2] for will-it-scale::fallocate benchmark. I believe this regression should not affect production workloads. This specific benchmark is allocating and freeing memory (using fallocate/ftruncate) at a rate that is much faster to make actual use of the memory. Testing this series on 100+ machines running production workloads did not show any practical regressions in page fault latency or allocation latency, but it showed great improvements in stats read time. I do not have numbers about the exact improvements for this series, but combined with another optimization for cgroup v1 [3] we see 5-10x improvements. A significant chunk of that is coming from the cgroup v1 optimization, but this series also made an improvement as reported by Domenico [4]. v3 -> v4: - Rebased on top of mm-unstable + "workload-specific and memory pressure-driven zswap writeback" series to fix conflicts [5]. v3: https://lore.kernel.org/all/20231116022411.2250072-1-yosryahmed@google.com/ [1]https://lore.kernel.org/lkml/20230913073846.1528938-1-yosryahmed@google.com/ [2]https://lore.kernel.org/lkml/202310202303.c68e7639-oliver.sang@intel.com/ [3]https://lore.kernel.org/lkml/20230803185046.1385770-1-yosryahmed@google.com/ [4]https://lore.kernel.org/lkml/CAFYChMv_kv_KXOMRkrmTN-7MrfgBHMcK3YXv0dPYEL7nK77e2A@mail.gmail.com/ [5]https://lore.kernel.org/all/20231127234600.2971029-1-nphamcs@gmail.com/ Yosry Ahmed (5): mm: memcg: change flush_next_time to flush_last_time mm: memcg: move vmstats structs definition above flushing code mm: memcg: make stats flushing threshold per-memcg mm: workingset: move the stats flush into workingset_test_recent() mm: memcg: restore subtree stats flushing include/linux/memcontrol.h | 8 +- mm/memcontrol.c | 272 +++++++++++++++++++++---------------- mm/vmscan.c | 2 +- mm/workingset.c | 42 ++++-- 4 files changed, 188 insertions(+), 136 deletions(-) -- 2.43.0.rc1.413.gea7ed67945-goog