Received: by 2002:a05:6358:7058:b0:131:369:b2a3 with SMTP id 24csp9218039rwp; Thu, 20 Jul 2023 01:06:08 -0700 (PDT) X-Google-Smtp-Source: APBJJlEO6SdYH0fD1A1T+qE43dpji278PqIt6cQm7f1rRFlR2ohc5oDQ13I7R/cE9FTVciTrj9dG X-Received: by 2002:a67:f406:0:b0:445:23e7:767f with SMTP id p6-20020a67f406000000b0044523e7767fmr4712215vsn.28.1689840368599; Thu, 20 Jul 2023 01:06:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689840368; cv=none; d=google.com; s=arc-20160816; b=JhrZCi7EMiWmjPmj/hJpZpx3NxOtkUafQ2cDVoJGWIKv2yjBSsnLcBsYHHKoifqumm 2A0os+4pH4k7t5RB5AxDTcMtuB1K9UwwUnoD3XL0wlLuOu7ACFj5gMA+fcnRqG5L8c/U DL8Dodh1xKmzldORRrJwv4gRrqlySD4mc5GQYefQKLfsTAD4szYTeUEGBQaw3xBvXCaW 4fidRfnlf54x6NXYlEmaEoyRte7HXE0l1m6pbrbxVn3n7GPpCC8ph7Pi/WzNWCACCPmD YRnCyU/SY4vxGSN9LF/shlHBoUMDU3Ipp/CdA6+eFqVU8PMrxyAQar31s33f/omiUWIg 5j7Q== 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:references :mime-version:in-reply-to:date:dkim-signature; bh=YhI2s0e+GIGqReCnHtRMQPrzSnIqjbw1XBQvBPYjKY0=; fh=5QaWCNvsrziG43oP6cMwR1zyvEmdAKz+qAWSnAk1QIY=; b=kBZPWVnj+wM/izRAdSXKgpUJxbDmol6XWwQgXLY0+VJB0oOWxcnWc/3ZT/t0nzzS5K WYv7OzG/2rGxIjCr/5b60D8q2XuktizWA6TKzUKZc7zYdv+TPOirFYm+wTdgWUey+2yl xgv7BzfN2jKfl3P/sxXKt7AiFUpvWcpzxcb70V7+/vOzvU1L12e32x26VPJCmbaRU4hf YXwPEJ81qR8sd8+wvhklNVMDM84EqD6yVwpMEZyPOnjtGmKpP03DgPa/BD3L99LE4BDs 6ithC+8CEkt/Ke306srErnj4QMacW6ICflccTbDS8knqwjCEIcDWCeLzr8Cu3pInulwu toHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=oBM+gyrv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s1-20020a63dc01000000b005634f8f269csi345783pgg.9.2023.07.20.01.05.55; Thu, 20 Jul 2023 01:06:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=oBM+gyrv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230355AbjGTHJO (ORCPT + 99 others); Thu, 20 Jul 2023 03:09:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42954 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231425AbjGTHIr (ORCPT ); Thu, 20 Jul 2023 03:08:47 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 33A4C26A5 for ; Thu, 20 Jul 2023 00:08:39 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-bd69bb4507eso458315276.2 for ; Thu, 20 Jul 2023 00:08:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1689836919; x=1692428919; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=YhI2s0e+GIGqReCnHtRMQPrzSnIqjbw1XBQvBPYjKY0=; b=oBM+gyrvc4kZmfzCDqqW014mddb+6ng6aUJcvm1PGzKPmmatk8vBmxnaO+jvawg8Cc cf0h8c+uRGKv+PpUjZOjju465YCs/RMkGS7FOfpfBg905u8KA48PZPv9pv5l5xU64hAu RRIbJwf2dG4G9KtiFyA18EerxfR/ghn9NkJLcaUskUA8yTC4t3T0XaugdSZxINO7vhKx oM7NXvmkzb7JDGBaiO8CTn60src/z33GmAEJWb+ZSh6IMofXorSGDhYJD6lnOVdfNi/O 3BRMWtylTLjUhnMgpCj7SaSMPCTWyEH1d0Cr6gcddMeYKbX7Wxwr5jKmhdVPpppLRUDQ nHOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689836919; x=1692428919; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YhI2s0e+GIGqReCnHtRMQPrzSnIqjbw1XBQvBPYjKY0=; b=M0AZA5LjIwY55/Z4oLho8vHXZfjD5WeNujbUOFO0PSx/yYG9G8jOasme6bS/Kl87Ko e1N0jeAUdCnPZGqa1fq/2gPpQ9rdd3cSdbsmJ7RVJnZODvoBnLBswpBcik1vzuZsGgT7 3csYrDedQzi8/DDrc0F2e4bs7bR9mFedx42rJ8rNvQmf/eHciEHg/0qXenPAJW0t+8w+ 3VLgERltCPjWRIPAaPRHPshZ87czCluF+lTMjKBDYj7VoEi2k+HnLTNzoJYcdzFlw5J5 J17yoIvk4V5vjnxZMSyL15iRFyXApQsNCinskCfexNV1ogn6fqq1YeciVZktms/5WF20 7FWQ== X-Gm-Message-State: ABy/qLZs/of71GWIu7Qf9uQeYs/tL5X9dE1870bVNZ/4O1DQXfOUavyA xKUFJdb/AFSHhy/xrD4Xiv8pBVjzjPVCAMfv X-Received: from yosry.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:2327]) (user=yosryahmed job=sendgmr) by 2002:a25:ab04:0:b0:bfe:ea69:91b4 with SMTP id u4-20020a25ab04000000b00bfeea6991b4mr36455ybi.4.1689836919167; Thu, 20 Jul 2023 00:08:39 -0700 (PDT) Date: Thu, 20 Jul 2023 07:08:23 +0000 In-Reply-To: <20230720070825.992023-1-yosryahmed@google.com> Mime-Version: 1.0 References: <20230720070825.992023-1-yosryahmed@google.com> X-Mailer: git-send-email 2.41.0.255.g8b1d071c50-goog Message-ID: <20230720070825.992023-7-yosryahmed@google.com> Subject: [RFC PATCH 6/8] memcg: add stats for offline memcgs recharging From: Yosry Ahmed To: Andrew Morton , Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt Cc: Muchun Song , "Matthew Wilcox (Oracle)" , Tejun Heo , Zefan Li , Yu Zhao , Luis Chamberlain , Kees Cook , Iurii Zaikin , "T.J. Mercier" , Greg Thelen , linux-kernel@vger.kernel.org, linux-mm@kvack.org, cgroups@vger.kernel.org, Yosry Ahmed Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add vm events for scanning pages for recharge, successfully recharging pages, and cancelling a recharge due to failure to charge the target memcg. Signed-off-by: Yosry Ahmed --- include/linux/vm_event_item.h | 5 +++++ mm/memcontrol.c | 6 ++++++ mm/vmstat.c | 6 +++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h index 8abfa1240040..cd80c00c50c2 100644 --- a/include/linux/vm_event_item.h +++ b/include/linux/vm_event_item.h @@ -60,6 +60,11 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, PAGEOUTRUN, PGROTATED, DROP_PAGECACHE, DROP_SLAB, OOM_KILL, +#ifdef CONFIG_MEMCG + RECHARGE_PGSCANNED, + RECHARGE_PGMOVED, + RECHARGE_PGCANCELLED, +#endif #ifdef CONFIG_NUMA_BALANCING NUMA_PTE_UPDATES, NUMA_HUGE_PTE_UPDATES, diff --git a/mm/memcontrol.c b/mm/memcontrol.c index cf9fb51ecfcc..2fe9c6f1be80 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -6394,6 +6394,8 @@ static bool mem_cgroup_recharge_folio(struct folio *folio, old_memcg, new_memcg); cancel_charge(err ? new_memcg : old_memcg, nr_pages); out: + count_vm_events(err ? RECHARGE_PGCANCELLED : RECHARGE_PGMOVED, + nr_pages); return err == 0; } @@ -6469,6 +6471,7 @@ static bool memcg_recharge_lruvec_list(struct lruvec *lruvec, int isolated_idx = NR_ISOLATED_ANON + is_file_lru(lru); struct mem_cgroup *memcg = lruvec_memcg(lruvec); unsigned long *nr_recharged = arg; + unsigned long nr_scanned = 0; unsigned long nr_staged = 0; LIST_HEAD(folios_skipped); LIST_HEAD(folios_staged); @@ -6505,6 +6508,7 @@ static bool memcg_recharge_lruvec_list(struct lruvec *lruvec, continue; } + nr_scanned += folio_nr_pages(folio); if (unlikely(!folio_try_get(folio))) { list_move(&folio->lru, &folios_skipped); continue; @@ -6543,6 +6547,7 @@ static bool memcg_recharge_lruvec_list(struct lruvec *lruvec, } mem_cgroup_end_move_charge(memcg); mod_lruvec_state(lruvec, isolated_idx, -nr_staged); + count_vm_events(RECHARGE_PGSCANNED, nr_scanned); return false; } @@ -6679,6 +6684,7 @@ void folio_memcg_deferred_recharge(struct folio *folio) if (unlikely(!memcg_recharge_wq)) return; + count_vm_events(RECHARGE_PGSCANNED, folio_nr_pages(folio)); if (unlikely(!folio_try_get(folio))) return; diff --git a/mm/vmstat.c b/mm/vmstat.c index b731d57996c5..e425a1aa7890 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -1303,7 +1303,11 @@ const char * const vmstat_text[] = { "drop_pagecache", "drop_slab", "oom_kill", - +#ifdef CONFIG_MEMCG + "recharge_pgs_scanned", + "recharge_pgs_moved", + "recharge_pgs_cancelled", +#endif #ifdef CONFIG_NUMA_BALANCING "numa_pte_updates", "numa_huge_pte_updates", -- 2.41.0.255.g8b1d071c50-goog