From nobody Fri Feb 13 04:13:53 2026 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DC76B4E1D5 for ; Fri, 12 Apr 2024 07:38:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712907486; cv=none; b=rV0Fnp5008JEcvsihk8rjBsQR9ep4OniQr8Ncje2Id+Oqhg+tkqTTPsU0bk7UbsPt927TKnwCi6eajt77NKkg7ft75roe9ozaN7fp9wtPwKn/lf4puOETkX7unF4ijtkl07gFA4u9VzfUSmshJmfWh+wEbWRnhbzAJGufjTxUcs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712907486; c=relaxed/simple; bh=AwLzTz2WP6ngoFfQUTgruj5yXq9/RohM0YtE3zw78kM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fM3LH/rtHuvlxzOQFHxBB6zwCgUtK8FhkN0/fNtLKJ4hgch0q1/gGClGylDxJ8Z+DaeaovQlnpXUgmf0aXMl8aGUL2ZPtacp3NxvrPMux3O5GqqZyJncg+ot/1mS+9JqG0FOC/CdLPLDNBXyT06ip1fRGq/788CflagzIHdZSqM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ioQBqw93; arc=none smtp.client-ip=209.85.214.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ioQBqw93" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-1e4f341330fso6340125ad.0 for ; Fri, 12 Apr 2024 00:38:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712907484; x=1713512284; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=grQ4HG8GdSNxCcCAmJJR/tpqgvcFuaNbvEKv4Is26aY=; b=ioQBqw93xhAbxssbCVWeqlK+YEHkm64KKLpc6BAH/hifoiCoxFe5/PvBQBNn1fzSBM T7Sv0lPxTHuIaMn8O3Nw6J+yLDy1abIHao4WHHd3ciTKtv5zmh6zdrsgsQ6BpTeRlsAT nrFqw33De5LQwjwQdhTzv0GDbp1nymXP665walo4HFdtaQZzjvDR3VEHwu+4fQ1qmI/z x6b0lthaDm1MBkzmd3BoQcJooSCktBV2BTc7rVQvagPMdKuK+nhWdmnNnNfFD1OgbUZm 6lbweyM49NZTLl9acALGK0WVzjXZ+sgCFH8EyKlZr0e0SaKCNOODI4Nbf0topK2N91CK tR7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712907484; x=1713512284; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=grQ4HG8GdSNxCcCAmJJR/tpqgvcFuaNbvEKv4Is26aY=; b=h8YTMzQV2S9OhywEB3rAxC2jvNUfQUlmNl07FEOVruN2VFUs41tiu07Pr4qgaY0fya S3huuMeBgznw9yMVpiVceV+2MO+1sz/0YCnHsVlvoqqH5R/8qJVmnlpgoHg73OaA/Hn0 IO4vu402COZL8ak1f7NG1YP8QrjYa417pZPHfu32iGPxc9lxUF+Vegmblgx9e1olicyL 8hG8I7dGuwNq9taBueovvUn5Vl/kgvlktNDS23TvJJv4QvwjB4rqbEIWz0XyJ/BEKw4m k9/A4GBUkG4lak9Q+UrKGqm4WXm/8SqPgjeuEBkeIpQybu/huElXvmQhfsFSrszAaKuQ vmug== X-Forwarded-Encrypted: i=1; AJvYcCW4RtjVACS3ZkepOTrPkQryU2kflRr/UY+m3Wbx8mq47XJiWHgLn9A6kegqzJh3PYRY62yI6C86EauVwJOTgavQ+eRxZZ3ih84BK2dp X-Gm-Message-State: AOJu0Ywyy79pnsgAmoVwd4nNzc5g+K4ahcWL4N0Q/YvT4ukupbprjZls hyBAPxVsoXkKQh3PTwiv6rQkKHWMrD6LO/+xAty0/hwWpkkMUQyq X-Google-Smtp-Source: AGHT+IE+Kawy3AjgOA5jbKXP+/9bdEvPRSrd/EvA5EuSv+JyLrfRn6UvgmK3uhhBkgHSzBuIuxpkcA== X-Received: by 2002:a17:902:ea10:b0:1dd:135e:2604 with SMTP id s16-20020a170902ea1000b001dd135e2604mr1985869plg.40.1712907484158; Fri, 12 Apr 2024 00:38:04 -0700 (PDT) Received: from localhost.localdomain ([2407:7000:8942:5500:aaa1:59ff:fe57:eb97]) by smtp.gmail.com with ESMTPSA id n5-20020a170903110500b001e478f359bdsm2344011plh.127.2024.04.12.00.37.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 00:38:03 -0700 (PDT) From: Barry Song <21cnbao@gmail.com> To: akpm@linux-foundation.org, linux-mm@kvack.org Cc: cerasuolodomenico@gmail.com, chrisl@kernel.org, david@redhat.com, kasong@tencent.com, linux-kernel@vger.kernel.org, peterx@redhat.com, ryan.roberts@arm.com, surenb@google.com, v-songbaohua@oppo.com, willy@infradead.org, yosryahmed@google.com, yuzhao@google.com, corbet@lwn.net Subject: [PATCH v5 1/4] mm: add per-order mTHP anon_fault_alloc and anon_fault_fallback counters Date: Fri, 12 Apr 2024 19:37:37 +1200 Message-Id: <20240412073740.294272-2-21cnbao@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240412073740.294272-1-21cnbao@gmail.com> References: <20240412073740.294272-1-21cnbao@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Barry Song Profiling a system blindly with mTHP has become challenging due to the lack of visibility into its operations. Presenting the success rate of mTHP allocations appears to be pressing need. Recently, I've been experiencing significant difficulty debugging performance improvements and regressions without these figures. It's crucial for us to understand the true effectiveness of mTHP in real-world scenarios, especially in systems with fragmented memory. This patch establishes the framework for per-order mTHP counters. It begins by introducing the anon_fault_alloc and anon_fault_fallback counters. Additionally, to maintain consistency with thp_fault_fallback_charge in /proc/vmstat, this patch also tracks anon_fault_fallback_charge when mem_cgroup_charge fails for mTHP. Incorporating additional counters should now be straightforward as well. Signed-off-by: Barry Song Cc: Chris Li Cc: David Hildenbrand Cc: Domenico Cerasuolo Cc: Kairui Song Cc: Matthew Wilcox (Oracle) Cc: Peter Xu Cc: Ryan Roberts Cc: Suren Baghdasaryan Cc: Yosry Ahmed Cc: Yu Zhao --- include/linux/huge_mm.h | 51 ++++++++++++++++++++++++++++++++++ mm/huge_memory.c | 61 +++++++++++++++++++++++++++++++++++++++++ mm/memory.c | 3 ++ mm/page_alloc.c | 4 +++ 4 files changed, 119 insertions(+) diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index e896ca4760f6..c5beb54b97cb 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -264,6 +264,57 @@ unsigned long thp_vma_allowable_orders(struct vm_area_= struct *vma, enforce_sysfs, orders); } =20 +enum mthp_stat_item { + MTHP_STAT_ANON_FAULT_ALLOC, + MTHP_STAT_ANON_FAULT_FALLBACK, + MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE, + __MTHP_STAT_COUNT +}; + +struct mthp_stat { + unsigned long stats[0][__MTHP_STAT_COUNT]; +}; + +extern struct mthp_stat __percpu *mthp_stats; + +static inline void count_mthp_stat(int order, enum mthp_stat_item item) +{ + if (order <=3D 0 || order > PMD_ORDER || !mthp_stats) + return; + + this_cpu_inc(mthp_stats->stats[order][item]); +} + +static inline void count_mthp_stats(int order, enum mthp_stat_item item, l= ong delta) +{ + if (order <=3D 0 || order > PMD_ORDER || !mthp_stats) + return; + + this_cpu_add(mthp_stats->stats[order][item], delta); +} + +/* + * Fold the foreign cpu mthp stats into our own. + * + * This is adding to the stats on one processor + * but keeps the global counts constant. + */ +static inline void mthp_stats_fold_cpu(int cpu) +{ + struct mthp_stat *fold_stat; + int i, j; + + if (!mthp_stats) + return; + fold_stat =3D per_cpu_ptr(mthp_stats, cpu); + for (i =3D 1; i <=3D PMD_ORDER; i++) { + for (j =3D 0; j < __MTHP_STAT_COUNT; j++) { + count_mthp_stats(i, j, fold_stat->stats[i][j]); + fold_stat->stats[i][j] =3D 0; + } + } +} + #define transparent_hugepage_use_zero_page() \ (transparent_hugepage_flags & \ (1<stats[order][item]; + } + cpus_read_unlock(); + + return sum; +} + +#define DEFINE_MTHP_STAT_ATTR(_name, _index) \ +static ssize_t _name##_show(struct kobject *kobj, \ + struct kobj_attribute *attr, char *buf) \ +{ \ + int order =3D to_thpsize(kobj)->order; \ + \ + return sysfs_emit(buf, "%lu\n", sum_mthp_stat(order, _index)); \ +} \ +static struct kobj_attribute _name##_attr =3D __ATTR_RO(_name) + +DEFINE_MTHP_STAT_ATTR(anon_fault_alloc, MTHP_STAT_ANON_FAULT_ALLOC); +DEFINE_MTHP_STAT_ATTR(anon_fault_fallback, MTHP_STAT_ANON_FAULT_FALLBACK); +DEFINE_MTHP_STAT_ATTR(anon_fault_fallback_charge, MTHP_STAT_ANON_FAULT_FAL= LBACK_CHARGE); + +static struct attribute *stats_attrs[] =3D { + &anon_fault_alloc_attr.attr, + &anon_fault_fallback_attr.attr, + &anon_fault_fallback_charge_attr.attr, + NULL, +}; + +static struct attribute_group stats_attr_group =3D { + .name =3D "stats", + .attrs =3D stats_attrs, +}; + static struct thpsize *thpsize_create(int order, struct kobject *parent) { unsigned long size =3D (PAGE_SIZE << order) / SZ_1K; @@ -549,6 +593,12 @@ static struct thpsize *thpsize_create(int order, struc= t kobject *parent) return ERR_PTR(ret); } =20 + ret =3D sysfs_create_group(&thpsize->kobj, &stats_attr_group); + if (ret) { + kobject_put(&thpsize->kobj); + return ERR_PTR(ret); + } + thpsize->order =3D order; return thpsize; } @@ -691,6 +741,11 @@ static int __init hugepage_init(void) */ MAYBE_BUILD_BUG_ON(HPAGE_PMD_ORDER < 2); =20 + mthp_stats =3D __alloc_percpu((PMD_ORDER + 1) * sizeof(mthp_stats->stats[= 0]), + sizeof(unsigned long)); + if (!mthp_stats) + return -ENOMEM; + err =3D hugepage_init_sysfs(&hugepage_kobj); if (err) goto err_sysfs; @@ -725,6 +780,8 @@ static int __init hugepage_init(void) err_slab: hugepage_exit_sysfs(hugepage_kobj); err_sysfs: + free_percpu(mthp_stats); + mthp_stats =3D NULL; return err; } subsys_initcall(hugepage_init); @@ -880,6 +937,8 @@ static vm_fault_t __do_huge_pmd_anonymous_page(struct v= m_fault *vmf, folio_put(folio); count_vm_event(THP_FAULT_FALLBACK); count_vm_event(THP_FAULT_FALLBACK_CHARGE); + count_mthp_stat(HPAGE_PMD_ORDER, MTHP_STAT_ANON_FAULT_FALLBACK); + count_mthp_stat(HPAGE_PMD_ORDER, MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE); return VM_FAULT_FALLBACK; } folio_throttle_swaprate(folio, gfp); @@ -929,6 +988,7 @@ static vm_fault_t __do_huge_pmd_anonymous_page(struct v= m_fault *vmf, mm_inc_nr_ptes(vma->vm_mm); spin_unlock(vmf->ptl); count_vm_event(THP_FAULT_ALLOC); + count_mthp_stat(HPAGE_PMD_ORDER, MTHP_STAT_ANON_FAULT_ALLOC); count_memcg_event_mm(vma->vm_mm, THP_FAULT_ALLOC); } =20 @@ -1050,6 +1110,7 @@ vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault= *vmf) folio =3D vma_alloc_folio(gfp, HPAGE_PMD_ORDER, vma, haddr, true); if (unlikely(!folio)) { count_vm_event(THP_FAULT_FALLBACK); + count_mthp_stat(HPAGE_PMD_ORDER, MTHP_STAT_ANON_FAULT_FALLBACK); return VM_FAULT_FALLBACK; } return __do_huge_pmd_anonymous_page(vmf, &folio->page, gfp); diff --git a/mm/memory.c b/mm/memory.c index 649a547fe8e3..06048af7cf9a 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -4368,6 +4368,7 @@ static struct folio *alloc_anon_folio(struct vm_fault= *vmf) folio =3D vma_alloc_folio(gfp, order, vma, addr, true); if (folio) { if (mem_cgroup_charge(folio, vma->vm_mm, gfp)) { + count_mthp_stat(order, MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE); folio_put(folio); goto next; } @@ -4376,6 +4377,7 @@ static struct folio *alloc_anon_folio(struct vm_fault= *vmf) return folio; } next: + count_mthp_stat(order, MTHP_STAT_ANON_FAULT_FALLBACK); order =3D next_order(&orders, order); } =20 @@ -4485,6 +4487,7 @@ static vm_fault_t do_anonymous_page(struct vm_fault *= vmf) =20 folio_ref_add(folio, nr_pages - 1); add_mm_counter(vma->vm_mm, MM_ANONPAGES, nr_pages); + count_mthp_stat(folio_order(folio), MTHP_STAT_ANON_FAULT_ALLOC); folio_add_new_anon_rmap(folio, vma, addr); folio_add_lru_vma(folio, vma); setpte: diff --git a/mm/page_alloc.c b/mm/page_alloc.c index b51becf03d1e..3135b5ca2457 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5840,6 +5840,10 @@ static int page_alloc_cpu_dead(unsigned int cpu) */ vm_events_fold_cpu(cpu); =20 +#ifdef CONFIG_TRANSPARENT_HUGEPAGE + mthp_stats_fold_cpu(cpu); +#endif + /* * Zero the differential counters of the dead processor * so that the vm statistics are consistent. --=20 2.34.1 From nobody Fri Feb 13 04:13:53 2026 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 93B9E4D5BF for ; Fri, 12 Apr 2024 07:38:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712907491; cv=none; b=l2Mg5wzgibTdOfEwRmPPizlMwLQRJCBGGv2KK2sgkBzSLJB5o/Eeun6ldSynedZxfHhbjeUaZlyk2tAx8tXCHxo/6d79qk6TaBGkiXVatAqH+iPkcW1Fl/oBtpDPl9MJe3J1wt4GxJFAz7UUWvlsxsrZTWrvotLOnrG0RYjBn+s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712907491; c=relaxed/simple; bh=4Hwop6FJ5nVwlMbGbX82ySoe31PuiWS/yVoZEPPvmDc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=PXvykVSBxxZ98SMPw/iS37/+e++L5MaSGFGrjj/hS1d8bF7KzinpcznA6AkJ6BCTSP5B0q2QNAEBY1CfdQudXGYbrt/c1bBVb01hD1aeV1bmjdtUETQue5Jdn2Yu6uOd1hfw4kiSlsbkYyXFfKwyNmEwQ0B+Obvq0GQiwXOdsGs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fB31oEB+; arc=none smtp.client-ip=209.85.214.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fB31oEB+" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-1e40042c13eso4839875ad.2 for ; Fri, 12 Apr 2024 00:38:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712907490; x=1713512290; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hsOHXEK8Nh5pewumsjjrvdM3HKJLRrjO6yqH5K5tp/s=; b=fB31oEB+PAW0Vf0FvIAUqwWC9cw+L+fcQV7mb1y4xYizPKP1zRA+vWS31nYSf/JvXb u1opi38uyGk0L9nhtvnLY2u9dB0jX9T9VDeYqhNklBOT8UqSoUwCoamYnzPRtV2R/UeS X+Qj3XblBQVDr/IkKfQPilxPCblDQ0MeZCdB10zbGt6Y+mAOW0lqkW79Z/X9GfILZUe7 XiYVyS7B3BEi4WwRmKtEpQJlC/ExnMowDiK3cwKNTfm3XJ20zBuPHSON+VLMrgcN7P5H xpb4HQ3KNNEZ0Tg+sYwTnPphD6bgEAZPlTWbT0S8KSyHYN9NDbEOM13mEIaxsPU14vfs gw2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712907490; x=1713512290; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hsOHXEK8Nh5pewumsjjrvdM3HKJLRrjO6yqH5K5tp/s=; b=dNnwD4+2W6hfzcY+UzSQ7iicZBzkpj+UrmhzoyVcLgu2foQGPYwSEMxTPJ84PPOaZX cLGTch6gbnLvbwAVO6oNHMDUtesIow5bbZzDEKiN+FV9EDTrrCF4KtSSH97v8jXF0cwE LoPu7NmpYZJu4DJuzxQ1suJdrlPB+bB9rVCUji8RigcYRH88bNxdwba32jpac6Nt3tPi 2OAjnrWmDOH7bVlkbe2ud5AS7EfDknu8njS/swGQkXAtnjhpKOK00EDBVG4ssLBU3tRB p1KxEFSvZ+f003Z/9A1KD2EPGDcrXMt0VWWNsTL2fPUbTt/6hGXMZO5FaU6Ee7CICgy1 rEiA== X-Forwarded-Encrypted: i=1; AJvYcCWJOeMZ3J6NOZ9/aVoQDWe/SFPWk8n8G1j/MBE4ynJsH0si6EyWW1GRsyjpyLvpaLaPBQHYyoushO3e77uiPnP9MMK9ZmnFwHnBDZIK X-Gm-Message-State: AOJu0YwB1mVoyLA19SRNVjZWjzWlEvfamcP16Z+9932BFlwL/jM3sJ7k 80g9rVAA8Sb77YnD4hBXds0TZyWKkBe6ww5iS//JQRnkH9B9+Tb4 X-Google-Smtp-Source: AGHT+IHWZYew+Q9NtnWF+a6SE88ptdUjsAwDnwkkWmi3sA6yX2D3E8zqruIKdheWkebuC2R11yEKEg== X-Received: by 2002:a17:902:9341:b0:1e2:952b:81fc with SMTP id g1-20020a170902934100b001e2952b81fcmr1436795plp.29.1712907489843; Fri, 12 Apr 2024 00:38:09 -0700 (PDT) Received: from localhost.localdomain ([2407:7000:8942:5500:aaa1:59ff:fe57:eb97]) by smtp.gmail.com with ESMTPSA id n5-20020a170903110500b001e478f359bdsm2344011plh.127.2024.04.12.00.38.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 00:38:09 -0700 (PDT) From: Barry Song <21cnbao@gmail.com> To: akpm@linux-foundation.org, linux-mm@kvack.org Cc: cerasuolodomenico@gmail.com, chrisl@kernel.org, david@redhat.com, kasong@tencent.com, linux-kernel@vger.kernel.org, peterx@redhat.com, ryan.roberts@arm.com, surenb@google.com, v-songbaohua@oppo.com, willy@infradead.org, yosryahmed@google.com, yuzhao@google.com, corbet@lwn.net Subject: [PATCH v5 2/4] mm: add per-order mTHP anon_swpout and anon_swpout_fallback counters Date: Fri, 12 Apr 2024 19:37:38 +1200 Message-Id: <20240412073740.294272-3-21cnbao@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240412073740.294272-1-21cnbao@gmail.com> References: <20240412073740.294272-1-21cnbao@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Barry Song This helps to display the fragmentation situation of the swapfile, knowing the proportion of how much we haven't split large folios. So far, we only support non-split swapout for anon memory, with the possibility of expanding to shmem in the future. So, we add the "anon" prefix to the counter names. Signed-off-by: Barry Song Cc: Chris Li Cc: David Hildenbrand Cc: Domenico Cerasuolo Cc: Kairui Song Cc: Matthew Wilcox (Oracle) Cc: Peter Xu Cc: Ryan Roberts Cc: Suren Baghdasaryan Cc: Yosry Ahmed Cc: Yu Zhao Reviewed-by: Ryan Roberts --- include/linux/huge_mm.h | 2 ++ mm/huge_memory.c | 4 ++++ mm/page_io.c | 1 + mm/vmscan.c | 3 +++ 4 files changed, 10 insertions(+) diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index c5beb54b97cb..b69c3b3e1436 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -268,6 +268,8 @@ enum mthp_stat_item { MTHP_STAT_ANON_FAULT_ALLOC, MTHP_STAT_ANON_FAULT_FALLBACK, MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE, + MTHP_STAT_ANON_SWPOUT, + MTHP_STAT_ANON_SWPOUT_FALLBACK, __MTHP_STAT_COUNT }; =20 diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 21c4ac74b484..13e74724d0c3 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -557,11 +557,15 @@ static struct kobj_attribute _name##_attr =3D __ATTR_= RO(_name) DEFINE_MTHP_STAT_ATTR(anon_fault_alloc, MTHP_STAT_ANON_FAULT_ALLOC); DEFINE_MTHP_STAT_ATTR(anon_fault_fallback, MTHP_STAT_ANON_FAULT_FALLBACK); DEFINE_MTHP_STAT_ATTR(anon_fault_fallback_charge, MTHP_STAT_ANON_FAULT_FAL= LBACK_CHARGE); +DEFINE_MTHP_STAT_ATTR(anon_swpout, MTHP_STAT_ANON_SWPOUT); +DEFINE_MTHP_STAT_ATTR(anon_swpout_fallback, MTHP_STAT_ANON_SWPOUT_FALLBACK= ); =20 static struct attribute *stats_attrs[] =3D { &anon_fault_alloc_attr.attr, &anon_fault_fallback_attr.attr, &anon_fault_fallback_charge_attr.attr, + &anon_swpout_attr.attr, + &anon_swpout_fallback_attr.attr, NULL, }; =20 diff --git a/mm/page_io.c b/mm/page_io.c index a9a7c236aecc..46c603dddf04 100644 --- a/mm/page_io.c +++ b/mm/page_io.c @@ -217,6 +217,7 @@ static inline void count_swpout_vm_event(struct folio *= folio) count_memcg_folio_events(folio, THP_SWPOUT, 1); count_vm_event(THP_SWPOUT); } + count_mthp_stat(folio_order(folio), MTHP_STAT_ANON_SWPOUT); #endif count_vm_events(PSWPOUT, folio_nr_pages(folio)); } diff --git a/mm/vmscan.c b/mm/vmscan.c index bca2d9981c95..49bd94423961 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -1231,6 +1231,8 @@ static unsigned int shrink_folio_list(struct list_hea= d *folio_list, goto activate_locked; } if (!add_to_swap(folio)) { + int __maybe_unused order =3D folio_order(folio); + if (!folio_test_large(folio)) goto activate_locked_split; /* Fallback to swap normal pages */ @@ -1242,6 +1244,7 @@ static unsigned int shrink_folio_list(struct list_hea= d *folio_list, THP_SWPOUT_FALLBACK, 1); count_vm_event(THP_SWPOUT_FALLBACK); } + count_mthp_stat(order, MTHP_STAT_ANON_SWPOUT_FALLBACK); #endif if (!add_to_swap(folio)) goto activate_locked_split; --=20 2.34.1 From nobody Fri Feb 13 04:13:53 2026 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 446B750241 for ; Fri, 12 Apr 2024 07:38:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712907497; cv=none; b=ivOXPs3Nm/o8cVHOjX0K62A6HUMASpJuxdR9ONdc8yI4Aoq9CwH7kTk9nnCEU5Ekjy5zWJdDhCulE3rhMFZb0w8ydaiP+AvShpwTPueOpyUN6LNVT9c/8PUkaD9to1cGAIdBYYb0CytHqvov8K5DqBKw+Yt2r8qgWmYGhLvWnq0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712907497; c=relaxed/simple; bh=GkrF5NbnmDIO2PSdgna9PVGIA+4K9OmSE88/osARHDA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=FBDmctRTDS+UaKk792L9SpMd5UY0Qi4z9wndHMPGunZPnHrPWYmnPrKpLS8onGWn11j0SJdAggiis3VKi+mduGgJbBMHp5Pv+VZ6gO4zed6VlEnS/cXoW/OP3LMQE3/xGIUhCwsStlJH4qqUXska/uDuWoxKz+8HI2c587XqnBQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Yu75JMON; arc=none smtp.client-ip=209.85.214.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Yu75JMON" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-1e3c3aa8938so4360685ad.1 for ; Fri, 12 Apr 2024 00:38:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712907495; x=1713512295; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HKv+dOKRCJhG1tenSkeU7/8yjqgzALDAmJSETtZIvnY=; b=Yu75JMONCiqln6iIbS0A7A446Q9rpPavKaVSHz+sRrkv2CiGWkmFC9ZSCb4cCUmD+T HoKS2afIx28uzsFE/NIbRvpAm6UvK7buCwX9UzalN2Pitlqd/c5PtMjpoBYJmNr4ZgRq nwKTusC88WYakmjQstmSrzVjCl7YayeLTj1EXVU/OkQMl56UyXjHatvkrE4ieBxfI+oq Wp9aWKwi8crKpoLqUd8ZdtPQoS9f7ulo8hSOOOyJXLE25VGTt1MGPs6EjBK+B80Vvu43 xVAMOmgkaB2ZTpYx348k//FM//BXzF/2RBKZeYpd1mSvd+smj3E0CGJmX9xCp50cGOuh bExg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712907495; x=1713512295; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HKv+dOKRCJhG1tenSkeU7/8yjqgzALDAmJSETtZIvnY=; b=miTY+PKdYRnCrefMaWnlgB879n1f7b5FHMWym20XIfv44WktpQbGMMIfq3+gymuO32 nAv09t4gcXmMlYE7zXRI10wpGmLVL4c+9xKft7Vej73oPK3CpAshXY5OwHew238RDei0 HxugoolqKcCcYXAtWVRqBdk/VD5aY9n/zaqcFpgwtWRGSZDzLFEqzWJThplVrztnHur+ ZtqItH12yR0IcFyKExlQkVSfCnyoI5C5le8SisYZhoVRqTerVjIGKCQkb1Lk9ZbmoLaW Aab6Hpys0B0ybl6eJePLx6272R0L0dKu0E/6OSgipu2vEJlp+V2sxhT7+9uzFheAROMe 30ig== X-Forwarded-Encrypted: i=1; AJvYcCVDzXLz1n7xq6grZSudlrJv2HmXGl2ru227Zqkwei9p+yFZUYgS3gOpmPFFU63TJKQaEx/rOr+DHzWkINxoyADmMTRxu7SeEBanyn7Q X-Gm-Message-State: AOJu0Yyu++BS2QB2N9mn5JVli9GH5+v13kS5WQ+21cLvjlVGBT0eBldL yLjqruTBzdc0bNWoZBZ/6iRhYYeqvDkIzrM2cUXx+9QQIU4fNtAK X-Google-Smtp-Source: AGHT+IEs8mtcjto8rOXz5YMEcwZFJOMI1fiWwDFq30NXF3pGJzIMZvBmCkp2JLPcrzhMVIiefWw4TQ== X-Received: by 2002:a17:902:e950:b0:1e3:e0a7:3c9 with SMTP id b16-20020a170902e95000b001e3e0a703c9mr2171282pll.14.1712907495496; Fri, 12 Apr 2024 00:38:15 -0700 (PDT) Received: from localhost.localdomain ([2407:7000:8942:5500:aaa1:59ff:fe57:eb97]) by smtp.gmail.com with ESMTPSA id n5-20020a170903110500b001e478f359bdsm2344011plh.127.2024.04.12.00.38.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 00:38:15 -0700 (PDT) From: Barry Song <21cnbao@gmail.com> To: akpm@linux-foundation.org, linux-mm@kvack.org Cc: cerasuolodomenico@gmail.com, chrisl@kernel.org, david@redhat.com, kasong@tencent.com, linux-kernel@vger.kernel.org, peterx@redhat.com, ryan.roberts@arm.com, surenb@google.com, v-songbaohua@oppo.com, willy@infradead.org, yosryahmed@google.com, yuzhao@google.com, corbet@lwn.net Subject: [PATCH v5 3/4] mm: add docs for per-order mTHP counters and transhuge_page ABI Date: Fri, 12 Apr 2024 19:37:39 +1200 Message-Id: <20240412073740.294272-4-21cnbao@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240412073740.294272-1-21cnbao@gmail.com> References: <20240412073740.294272-1-21cnbao@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Barry Song This patch includes documentation for mTHP counters and an ABI file for sys-kernel-mm-transparent-hugepage, which appears to have been missing for some time. Signed-off-by: Barry Song Cc: Chris Li Cc: David Hildenbrand Cc: Domenico Cerasuolo Cc: Kairui Song Cc: Matthew Wilcox (Oracle) Cc: Peter Xu Cc: Ryan Roberts Cc: Suren Baghdasaryan Cc: Yosry Ahmed Cc: Yu Zhao Cc: Jonathan Corbet Reviewed-by: Ryan Roberts --- .../sys-kernel-mm-transparent-hugepage | 17 +++++++++++ Documentation/admin-guide/mm/transhuge.rst | 28 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 Documentation/ABI/testing/sys-kernel-mm-transparent-hug= epage diff --git a/Documentation/ABI/testing/sys-kernel-mm-transparent-hugepage b= /Documentation/ABI/testing/sys-kernel-mm-transparent-hugepage new file mode 100644 index 000000000000..80dde0fd576c --- /dev/null +++ b/Documentation/ABI/testing/sys-kernel-mm-transparent-hugepage @@ -0,0 +1,17 @@ +What: /sys/kernel/mm/hugepages/ +Date: April 2024 +Contact: Barry Song +Description: + /sys/kernel/mm/transparent_hugepage/ contains a number of files and + subdirectories, + - defrag + - enabled + - hpage_pmd_size + - khugepaged + - shmem_enabled + - use_zero_page + - subdirectories of the form hugepages-kB, where + is the page size of the hugepages supported by the kernel/CPU + combination. + + See Documentation/admin-guide/mm/transhuge.rst for details. diff --git a/Documentation/admin-guide/mm/transhuge.rst b/Documentation/adm= in-guide/mm/transhuge.rst index 04eb45a2f940..f436ff982f22 100644 --- a/Documentation/admin-guide/mm/transhuge.rst +++ b/Documentation/admin-guide/mm/transhuge.rst @@ -447,6 +447,34 @@ thp_swpout_fallback Usually because failed to allocate some continuous swap space for the huge page. =20 +In /sys/kernel/mm/transparent_hugepage/hugepages-kB/stats, There are +also individual counters for each huge page size, which can be utilized to +monitor the system's effectiveness in providing huge pages for usage. Each +counter has its own corresponding file. + +anon_fault_alloc + is incremented every time a huge page is successfully + allocated and charged to handle a page fault. + +anon_fault_fallback + is incremented if a page fault fails to allocate or charge + a huge page and instead falls back to using huge pages with + lower orders or small pages. + +anon_fault_fallback_charge + is incremented if a page fault fails to charge a huge page and + instead falls back to using huge pages with lower orders or + small pages even though the allocation was successful. + +anon_swpout + is incremented every time a huge page is swapout in one + piece without splitting. + +anon_swpout_fallback + is incremented if a huge page has to be split before swapout. + Usually because failed to allocate some continuous swap space + for the huge page. + As the system ages, allocating huge pages may be expensive as the system uses memory compaction to copy data around memory to free a huge page for use. There are some counters in ``/proc/vmstat`` to help --=20 2.34.1 From nobody Fri Feb 13 04:13:53 2026 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D811450284 for ; Fri, 12 Apr 2024 07:38:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712907503; cv=none; b=Xiit6biFHUXSp6yaXiiDwgBTaueS0h51e5Krs6CK6RwOyRd/tg+Pqc5cNrI35+iSsVOuUHu1cKEMcP9kFAqC886LMrWq51sVBpw/UR4Fwq95MJGoC0vHuISfH19yDKjYoUzgG+LzC1U8cmoPbKlPPsQ4IAu4+N6XO7W6+F9DBH8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712907503; c=relaxed/simple; bh=GdJ89Q45lpPvXsTdSxOkLG15s3X0yQKPT48wKzdZwts=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TQDWxlOPtYqjdG6gFW1WpzlFBxE/1sQnQLiUFnamB6dJReTXjOOjEqoaVlbuL7zMfeyrKoq74p66a4rJK885UXSQGo50guwV9x/J9aTewjfQha5akWhu6tUga96Vr1zX7RG8SJAV13fzci5FzVeC4aWzAp36ECAwGIDcBk9sHbc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MXdsQzy0; arc=none smtp.client-ip=209.85.214.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MXdsQzy0" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-1e2232e30f4so6042765ad.2 for ; Fri, 12 Apr 2024 00:38:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712907501; x=1713512301; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vLivAlSFWVO5qmFvXnJVwwxKOFwucVM2YU4CcxrDCQY=; b=MXdsQzy0+fhOR838TkLUoGxsbX9NU8a9ehJzao+0qm7XjJUh/OztgaPgXiZXhpzl1q FeQK7sQs77ZgpRW2IZj821FBswJceFHvfCIEC+oKIuUWs6b0TtuPqxE2I19owAN9bR81 0l1qR7NuSkrSc3KfZTNddTC2B5EwuIWa0iGr+ruPZ6/SdYD8QpFhjHFB9veS4jaPo6uL 9UFIvRK1nH2+AZArrZvN74wpXz+DNcUv57PjzKh38jeYxdDtz5Lkbpk9C85fqPfjcBH1 aI5lUVPmy9qASpvnZtRqXLmrLL8T1TjgnInv523jevNEx5zZN9N9LdZFQrZDLyMFiW5d mkIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712907501; x=1713512301; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vLivAlSFWVO5qmFvXnJVwwxKOFwucVM2YU4CcxrDCQY=; b=P2yHj5CkvSKVy1KJBU4dZJdODUoea8bDHearuzIF2CEHUxM8rcYmHqnbIl+oxQlQ0B T6rtoh3ftUIm56ksD9cIuVdBvXCJ6jjN08KWebltK9OF+CjfqbVw7Wp6wgLYVdmJxbn/ OvjzHKkmn+g4RyeSn60VWWpunh+ZtNwZ+m4w4PrKFtpvgvF6bYZHDb0qbFei21cwL60q NilgO9qOXn32yprJcdI5F/V9Ex4oVHqTVZnYgl/PgOinBsA2uY8QH6yXuSm4jk/3Xjp0 1i+ZliLHqggrSsa7vrOcVQ3/YHBNjsyE6UjG8arAGnBLWxdreoeEGLEOVx7Rc2ALQwlr QOJQ== X-Forwarded-Encrypted: i=1; AJvYcCV6Zhrd1EeI3jccLfRs5dELac9CMM57OUTlQqxKxZlnxkH4J+zp2BSkB+RHVEnFv4YY23Xehu5c0aokvdVCULnf6A2IKWiVIaTsn3Mu X-Gm-Message-State: AOJu0Yz0Yt5rJp2yMLkfS0YzgbGhhCzZMhrgepj7ibe2eIK3OumGOXTc YrT9yH+11CoLGOkD2d9iOx9uMGMaTWEAKywRz+z5gN9AH5FWQXq7 X-Google-Smtp-Source: AGHT+IHgBpc7UAQvJAcCBWbdfiIookBgasRuDbzAV/jyU0fOVDPDt6/r0/rQy9bL8YhPtuipQpw50g== X-Received: by 2002:a17:902:ec8e:b0:1e2:9ac2:4a03 with SMTP id x14-20020a170902ec8e00b001e29ac24a03mr1874586plg.28.1712907501110; Fri, 12 Apr 2024 00:38:21 -0700 (PDT) Received: from localhost.localdomain ([2407:7000:8942:5500:aaa1:59ff:fe57:eb97]) by smtp.gmail.com with ESMTPSA id n5-20020a170903110500b001e478f359bdsm2344011plh.127.2024.04.12.00.38.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 00:38:20 -0700 (PDT) From: Barry Song <21cnbao@gmail.com> To: akpm@linux-foundation.org, linux-mm@kvack.org Cc: cerasuolodomenico@gmail.com, chrisl@kernel.org, david@redhat.com, kasong@tencent.com, linux-kernel@vger.kernel.org, peterx@redhat.com, ryan.roberts@arm.com, surenb@google.com, v-songbaohua@oppo.com, willy@infradead.org, yosryahmed@google.com, yuzhao@google.com, corbet@lwn.net Subject: [PATCH v5 4/4] mm: correct the docs for thp_fault_alloc and thp_fault_fallback Date: Fri, 12 Apr 2024 19:37:40 +1200 Message-Id: <20240412073740.294272-5-21cnbao@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240412073740.294272-1-21cnbao@gmail.com> References: <20240412073740.294272-1-21cnbao@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Barry Song The documentation does not align with the code. In __do_huge_pmd_anonymous_page(), THP_FAULT_FALLBACK is incremented when mem_cgroup_charge() fails, despite the allocation succeeding, whereas THP_FAULT_ALLOC is only incremented after a successful charge. Signed-off-by: Barry Song Cc: Chris Li Cc: David Hildenbrand Cc: Domenico Cerasuolo Cc: Kairui Song Cc: Matthew Wilcox (Oracle) Cc: Peter Xu Cc: Ryan Roberts Cc: Suren Baghdasaryan Cc: Yosry Ahmed Cc: Yu Zhao Cc: Jonathan Corbet Reviewed-by: Ryan Roberts --- Documentation/admin-guide/mm/transhuge.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/admin-guide/mm/transhuge.rst b/Documentation/adm= in-guide/mm/transhuge.rst index f436ff982f22..98e3a99ea780 100644 --- a/Documentation/admin-guide/mm/transhuge.rst +++ b/Documentation/admin-guide/mm/transhuge.rst @@ -369,7 +369,7 @@ monitor how successfully the system is providing huge p= ages for use. =20 thp_fault_alloc is incremented every time a huge page is successfully - allocated to handle a page fault. + allocated and charged to handle a page fault. =20 thp_collapse_alloc is incremented by khugepaged when it has found @@ -377,7 +377,7 @@ thp_collapse_alloc successfully allocated a new huge page to store the data. =20 thp_fault_fallback - is incremented if a page fault fails to allocate + is incremented if a page fault fails to allocate or charge a huge page and instead falls back to using small pages. =20 thp_fault_fallback_charge --=20 2.34.1