From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A0685C2BD09 for ; Mon, 1 Jul 2024 10:37:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3C3CA6B00B2; Mon, 1 Jul 2024 06:37:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3744D6B00B4; Mon, 1 Jul 2024 06:37:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 23B756B00B5; Mon, 1 Jul 2024 06:37:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 055286B00B2 for ; Mon, 1 Jul 2024 06:37:54 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 972E6121BA1 for ; Mon, 1 Jul 2024 10:37:54 +0000 (UTC) X-FDA: 82290833268.19.E5E387B Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) by imf14.hostedemail.com (Postfix) with ESMTP id B5150100010 for ; Mon, 1 Jul 2024 10:37:52 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EyjADXBq; spf=pass (imf14.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.51 as permitted sender) smtp.mailfrom=ioworker0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1719830251; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=vWK8rSjCA61r7Gr5Pz/lFiaUPoyy/i2wr10vJSbNf/c=; b=ij8rhZuQxJQcOhR3b/xoyk8DJAPJ6Q1tL8G7WMnPF5R6I7sqtge+igKqfTVqOvZ8ZZR+MT xHqyeS46/VzGsQk19ZrM0nPfZNzCfsf/HGX5l9ftXGMEFCZn3wUVoTiNJ8CNpKjA+/drEy b61OzjdcQ16nZW41Brq7DLgrVKkQM3U= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1719830251; a=rsa-sha256; cv=none; b=H/AoyCbj3g8irl/xFRktGwun5GG6/KwFssdtxQBi+3oejSYJbwPAEs3tLDhT7H+0koNet7 nCgK2e92uNXoaHhFjQuxeRmzIERzuoGWdl/04ANFXYjX0NOTJhL/9F/HVEyapzeYzkkGVD bDaugbNtKURWk800/wMO9cz+G8whOds= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EyjADXBq; spf=pass (imf14.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.51 as permitted sender) smtp.mailfrom=ioworker0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-57cd26347d3so96148a12.1 for ; Mon, 01 Jul 2024 03:37:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719830271; x=1720435071; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=vWK8rSjCA61r7Gr5Pz/lFiaUPoyy/i2wr10vJSbNf/c=; b=EyjADXBq3FR4A1HGahs2Th664VQScsGw6g3HXVGE8ubQlJ3BmwA3HMfr6F6mUDcfJZ 9vLqITEj9FCJiZq8Lh4A/Smf0EhiBTHWcl1whuF1CiGxOVbabMZ8tgEUmc1Ch8mAIz9j djFPC34qXYC8Xm2IrOb8ADnxUAEajuYBV7pd+VOmw8BZqURZVCA4t4Y9tJNNKvK8asoE aWzPLD+j0PJI3Bj1ahtaab/fdN4xuMuwXDE9gjGpkLWxX1SqrbkDBZjjoAQ/qbLlMytU hX6ZOsMHoADQQfHGdjvVMncPoclQNOkioHVYJ0zReuJdwidBe+0h5auBVE00Lnzf8uSA QP9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719830271; x=1720435071; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vWK8rSjCA61r7Gr5Pz/lFiaUPoyy/i2wr10vJSbNf/c=; b=NhB/nHfEgKpbpwJi3Z1AdHzIMAHNki2TN95R0GfyAHjPq3+WVOEtG8ShnMajxlvMSM DAnsZKYdJ++jdcUKq5qv/EK2EAtfBv9SJqvrBs2rfBgLdaDtWTUc2zGz/I2nGs6N0uEg 2upbC4Lm9Tjjw+rf5rTu4dftfAcgnAZ902QgqUGave5x+jOxgaGfbUppcw8tTJ6wZCtD ts2W5EUzlJUMDbmUO6iksan80Ye0VFffvgPJZAFDfPc7yzvCoauqjAMVRS6fF8sgErEm OLIFthNMnZyIqFcCTPcwt6kiAp2HIal8XWQV36WIu6rY4hi3UfaVNFdvsAd67xOVNDW8 pC+g== X-Forwarded-Encrypted: i=1; AJvYcCVR4863HuJWmKEH2+t8KnACIVjQdGP9kQlSCvCQ4tZ9adSQYs1+0qIL3vRfBH6/sCVGm/zpz8MAcCmWdDC7mNn54IY= X-Gm-Message-State: AOJu0YwSqu/wLoWRc7/KwjNTIHfonrmUxs4EvgvU4YpfuCEOTR5WANo5 RNreTe05J5WvQbYQ95AuXbYQZH/6mSv33EJ9CU0qFAM7Dyq2FVNEQvgCx/JvGxLQCU7nZOsKn7M oC81+NYNWPBdknEcu212nD5Xfywk= X-Google-Smtp-Source: AGHT+IG7os5Fx2ezQcm8ByEMMWVTsuHciyJ5zoDL3EKXz/4O1QZejjqNdQj7e7rnY0M6wCtshnUxPdnGcVSjH7TFs5M= X-Received: by 2002:a05:6402:206b:b0:578:56e1:7ba3 with SMTP id 4fb4d7f45d1cf-587a0b037a9mr3100177a12.38.1719830271351; Mon, 01 Jul 2024 03:37:51 -0700 (PDT) MIME-Version: 1.0 References: <20240628130750.73097-1-ioworker0@gmail.com> <20240628130750.73097-2-ioworker0@gmail.com> <4516ebbe-5d88-423a-bc45-dfb1eb6adc2d@arm.com> In-Reply-To: <4516ebbe-5d88-423a-bc45-dfb1eb6adc2d@arm.com> From: Lance Yang Date: Mon, 1 Jul 2024 18:37:40 +0800 Message-ID: Subject: Re: [PATCH v2 1/2] mm: add per-order mTHP split counters To: Ryan Roberts Cc: akpm@linux-foundation.org, dj456119@gmail.com, 21cnbao@gmail.com, david@redhat.com, shy828301@gmail.com, ziy@nvidia.com, libang.li@antgroup.com, baolin.wang@linux.alibaba.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Mingzhe Yang Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: B5150100010 X-Stat-Signature: uf1f4dizm6oa5o34bhijrg31abk9fzmm X-HE-Tag: 1719830272-739220 X-HE-Meta: U2FsdGVkX19i2hZ7Az9SDjSALrSgCRk+5tQmmGr4MDhji0Wl977huvqmT4XEd322nQe1JNgRBZhyzT4wVNHriW309pkv4gm8jKsDj8KenwZAWWfRAmsnPTHCUBF9t85+sg0/YRHYdkH1mi9yC56uEPkdEudBZn1E3Tonpfr1f+LIvRp1JdfBZ2yKII4xHq3Wcoz53qnlf/vuR896ZXwC/nEtPTwqPtWpB7G7g9h8IylyInu3L5dh9sNy0s/i2o4+1VzWkB/rA5CaCQJ7g85m0Agw8VWvBQudW17WvkL5MM1a91MXz1SuWMzRHSNAStNH3J/9YGxRebvqZiIExo0gVzp5TGI69RMqbe8YeohgF6213Xu1utZR6IAXRZLZzPJgMQ1VqP1Y0TQeDxmekO+GGqIsmGxObcSj9Wf8+bv47ZxxFdAc2Rxe5uBLbbpEUMBNd8ec8/9e4PgRIti2huE96LCI0GtB4ZDF6+2B86N9+IzB8UddTmijrzII+iwWmAkL0zfWNEBc+K+KtMnPq23Z/lOsyyz5DVVE9Z9WFTth+w+AAVQjsucMUDUoO13FlIzeWHHrWiy3+vGdLBpy2UH6/KFFX8xDXP7x5kv1UOxJZWqfv8A6Cbgij28lfmfjmSunzfcRKJnqGneW4OZTWJkSfXEuZriZZM3S6ufFjo3/K1QeM/hEEOOCplnRqGqeBg7GVRfgNy/unALYUEMIUhcnLNmY2jmz2PcFw8VUxsTByNd7TLpD2qmmmxNqajcS5EJlrHFAKZdiD9yFyg4v+UgAijQs9ajXIMfgcdn66BKz+IusyxiYP++yOdnfbTeEdkY993pVJyma2c8MV2sczsc1MggOaBtAUk7SCWfgE2BIm8OJbsLZ+kb38eVeom3dtUp1FHR1K2fWJnnG/fiAiqDb5lrpf6nuWuVxh9zf5SnXcR4hyltB//raK89dEPrT5l6EVkZNJ7DXm7WhFp9w8a9 B17j1xHF dGMLWKKonN1DjX1qvICStrfB1Hpj91x42/qqX74+DrYIgZwfihz1k/EkFPTKJ0uKF6SknuyRiSUYbZvEdPSA2gAne3aL9tjEcqjHlhfcNcyinJO3LWKOYFYnkX7Id16BNFw1wdjfJVFqlxZ0g6SPPi/sQftDND+obeNxtJLyRpNOe63nD5LhC3Goe2QwvXHVIiWuQRLmNLrRxkOvksZrI4FDKWtzBxc1n5+uCJee7eHeYR8eVspGqbxp6yhkUB7QAL41AsqBZWv5xmUDy6m+MPc03ZNQYR9JVpKRQI+UhTRIBOaYBEJPpDM0GzVSyZVyyzzWA11ao6dj+6Z4DgBf+b0w/yNBaL+YHEhCevQDr5Bz/l2somNvw2dy+pUSINiZm2oumye4vnJ0HILUm61UVuNYghg== 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: List-Subscribe: List-Unsubscribe: Hi Ryan, On Mon, Jul 1, 2024 at 4:18=E2=80=AFPM Ryan Roberts = wrote: > > On 28/06/2024 14:07, Lance Yang wrote: > > Currently, the split counters in THP statistics no longer include > > PTE-mapped mTHP. Therefore, we propose introducing per-order mTHP split > > counters to monitor the frequency of mTHP splits. This will help develo= pers > > better analyze and optimize system performance. > > > > /sys/kernel/mm/transparent_hugepage/hugepages-/stats > > split > > split_failed > > split_deferred > > > > Signed-off-by: Mingzhe Yang > > Signed-off-by: Lance Yang > > LGTM! > > Reviewed-by: Ryan Roberts Thanks for taking time to review! Lance > > > --- > > include/linux/huge_mm.h | 3 +++ > > mm/huge_memory.c | 19 ++++++++++++++----- > > 2 files changed, 17 insertions(+), 5 deletions(-) > > > > diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h > > index 212cca384d7e..cee3c5da8f0e 100644 > > --- a/include/linux/huge_mm.h > > +++ b/include/linux/huge_mm.h > > @@ -284,6 +284,9 @@ enum mthp_stat_item { > > MTHP_STAT_FILE_ALLOC, > > MTHP_STAT_FILE_FALLBACK, > > MTHP_STAT_FILE_FALLBACK_CHARGE, > > + MTHP_STAT_SPLIT, > > + MTHP_STAT_SPLIT_FAILED, > > + MTHP_STAT_SPLIT_DEFERRED, > > __MTHP_STAT_COUNT > > }; > > > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > > index c7ce28f6b7f3..a633206375af 100644 > > --- a/mm/huge_memory.c > > +++ b/mm/huge_memory.c > > @@ -559,6 +559,9 @@ DEFINE_MTHP_STAT_ATTR(swpout_fallback, MTHP_STAT_SW= POUT_FALLBACK); > > DEFINE_MTHP_STAT_ATTR(file_alloc, MTHP_STAT_FILE_ALLOC); > > DEFINE_MTHP_STAT_ATTR(file_fallback, MTHP_STAT_FILE_FALLBACK); > > DEFINE_MTHP_STAT_ATTR(file_fallback_charge, MTHP_STAT_FILE_FALLBACK_CH= ARGE); > > +DEFINE_MTHP_STAT_ATTR(split, MTHP_STAT_SPLIT); > > +DEFINE_MTHP_STAT_ATTR(split_failed, MTHP_STAT_SPLIT_FAILED); > > +DEFINE_MTHP_STAT_ATTR(split_deferred, MTHP_STAT_SPLIT_DEFERRED); > > > > static struct attribute *stats_attrs[] =3D { > > &anon_fault_alloc_attr.attr, > > @@ -569,6 +572,9 @@ static struct attribute *stats_attrs[] =3D { > > &file_alloc_attr.attr, > > &file_fallback_attr.attr, > > &file_fallback_charge_attr.attr, > > + &split_attr.attr, > > + &split_failed_attr.attr, > > + &split_deferred_attr.attr, > > NULL, > > }; > > > > @@ -3068,7 +3074,7 @@ int split_huge_page_to_list_to_order(struct page = *page, struct list_head *list, > > XA_STATE_ORDER(xas, &folio->mapping->i_pages, folio->index, new_o= rder); > > struct anon_vma *anon_vma =3D NULL; > > struct address_space *mapping =3D NULL; > > - bool is_thp =3D folio_test_pmd_mappable(folio); > > + int order =3D folio_order(folio); > > int extra_pins, ret; > > pgoff_t end; > > bool is_hzp; > > @@ -3076,7 +3082,7 @@ int split_huge_page_to_list_to_order(struct page = *page, struct list_head *list, > > VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio); > > VM_BUG_ON_FOLIO(!folio_test_large(folio), folio); > > > > - if (new_order >=3D folio_order(folio)) > > + if (new_order >=3D order) > > return -EINVAL; > > > > if (folio_test_anon(folio)) { > > @@ -3253,8 +3259,9 @@ int split_huge_page_to_list_to_order(struct page = *page, struct list_head *list, > > i_mmap_unlock_read(mapping); > > out: > > xas_destroy(&xas); > > - if (is_thp) > > + if (order >=3D HPAGE_PMD_ORDER) > > count_vm_event(!ret ? THP_SPLIT_PAGE : THP_SPLIT_PAGE_FAI= LED); > > + count_mthp_stat(order, !ret ? MTHP_STAT_SPLIT : MTHP_STAT_SPLIT_F= AILED); > > return ret; > > } > > > > @@ -3278,13 +3285,14 @@ void deferred_split_folio(struct folio *folio) > > #ifdef CONFIG_MEMCG > > struct mem_cgroup *memcg =3D folio_memcg(folio); > > #endif > > + int order =3D folio_order(folio); > > unsigned long flags; > > > > /* > > * Order 1 folios have no space for a deferred list, but we also > > * won't waste much memory by not adding them to the deferred lis= t. > > */ > > - if (folio_order(folio) <=3D 1) > > + if (order <=3D 1) > > return; > > > > /* > > @@ -3305,8 +3313,9 @@ void deferred_split_folio(struct folio *folio) > > > > spin_lock_irqsave(&ds_queue->split_queue_lock, flags); > > if (list_empty(&folio->_deferred_list)) { > > - if (folio_test_pmd_mappable(folio)) > > + if (order >=3D HPAGE_PMD_ORDER) > > count_vm_event(THP_DEFERRED_SPLIT_PAGE); > > + count_mthp_stat(order, MTHP_STAT_SPLIT_DEFERRED); > > list_add_tail(&folio->_deferred_list, &ds_queue->split_qu= eue); > > ds_queue->split_queue_len++; > > #ifdef CONFIG_MEMCG >