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 5EFE8C2BD09 for ; Mon, 1 Jul 2024 10:36:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B63B46B00AF; Mon, 1 Jul 2024 06:36:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B13B16B00B0; Mon, 1 Jul 2024 06:36:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9DAF26B00B2; Mon, 1 Jul 2024 06:36:56 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 802A66B00AF for ; Mon, 1 Jul 2024 06:36:56 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 252FC40DC2 for ; Mon, 1 Jul 2024 10:36:56 +0000 (UTC) X-FDA: 82290830832.24.0841FFC Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) by imf14.hostedemail.com (Postfix) with ESMTP id 4C20B100010 for ; Mon, 1 Jul 2024 10:36:54 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Itk1Ba/5"; spf=pass (imf14.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.48 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=1719830204; 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=7TEtTsZBZ1gg5jFfBK9mVH7HjSHPH4E/ha4me09DcWo=; b=t9XlcLTuptYkmIgaVTQ1E5uPt2BraZRvz8WfvIjNz6Zyj0NPe8gFJ6ImNeeSQlnw0pOpqh cP+PWL12zMEoT+3r2yHVFbZgzodKtxhiifcHU5/jr1DHgHsW0n2oGGygE5X5YVajxcUJkS RXhfBWZrYKRZ1FjIqJI8FkB4praSEws= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Itk1Ba/5"; spf=pass (imf14.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.48 as permitted sender) smtp.mailfrom=ioworker0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1719830204; a=rsa-sha256; cv=none; b=BtYHNwfIrkmRFYnqyudksnNIN0ru5mWR/8lV3mLGH7GIjZL0+YfU6ClKPGcw81MUoB6YW5 61ihc9wDuT6uzPTDW5h+yM0K68NIuHUS7tR1cp2rgG8Ql4bzR1SPrcZF1bXlYA1KyIR+tb x3jzZJDA+0Lvg1mbjtdYz9F30dJ/uj0= Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-57d203d4682so95806a12.0 for ; Mon, 01 Jul 2024 03:36:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719830212; x=1720435012; 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=7TEtTsZBZ1gg5jFfBK9mVH7HjSHPH4E/ha4me09DcWo=; b=Itk1Ba/5D79+XE71gltDYz95ektHpE16ZuHYuUBG+5AbFulDo5HEI0vzr7dNRX/crt OHBMo/4e3PbRGSf4/H2qrEKdG5unL383kEWL+FrqfmEIhdr0ife27GOjVnQmjszKhg9z fXK1bupB1kngrRkOQkaPjRWVimbSYyMEEcwfLdkoBkemvBSBbyy3687alo6eSA2PwbRk 0r479/63DRpsa1LtC7XnHEDgBvyPY8RYXMy6TvXPD6adqq4XACColBbFLPXZexpedICE k/e+QfZ0Bvku6tIEtAVe71NoZbo0VdL9HrnElldIkNjAqyuUTsfIvN7pwPsAezUd5jcc bwdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719830212; x=1720435012; 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=7TEtTsZBZ1gg5jFfBK9mVH7HjSHPH4E/ha4me09DcWo=; b=uFnJUbYYNGb7RI213esj/W0x+Ip8W8T0Kl4B/NI8lS5ax0zGHhuoHvdtYZwKLZPhbS uL4/BhUwryTAGMEmg+6swQVVhFgd2wKJVXq0pCwmAS+0dk4c3p6u3KVAR4Lzekblu7My eZ/N90MpuJ58OFbXGo9uNK58xgsSc8D3QWPEFgk+oGKUAqFgBUgqyMh2gVjLuHeoippz 6I0qb9YvmVEdf49h+m8XL5yS3cl66pR4q24PHiImRqzAMoY4bAD6Z3wjmU5rvBSzOLdn Xs9VOPB7dwnEA/7RcFleyTheggdgRKRraZ7BLg/dtvN2tmLv867ASBPkbvzUrp/KUF2N 3DBA== X-Forwarded-Encrypted: i=1; AJvYcCUrK3++qL9R4yaS7jwA5X4KAhHWMLjOL/rjXPhkxlF1Qd/EZjEJPiMmaEvT2qTzewZzZKcyNYMMlf8x5cAsc0dGIuM= X-Gm-Message-State: AOJu0YzWFGR8DONDeWENsUlUTLoANd1xPy/6IQcZj93WA1ChyI4t7phu hsdV8jTdABAKH/4DXsMU8KbAKQeq8/EpwcIbSvatSt76lHApzLpvZfrgijOxiSaHGyWjm9PVCnj DcgPklCZddb0W6O0JKOAktF3p6RQ= X-Google-Smtp-Source: AGHT+IGzIhwYmbHd37ApVUXuzPylQlY0wKvhrRXAISVqnBCHUoxXcKmFZqR5ql6Y2ZK1aZRanS5i95IG7hqeAerVoXc= X-Received: by 2002:a05:6402:d09:b0:57c:7599:2c67 with SMTP id 4fb4d7f45d1cf-587a0bfdde8mr3961629a12.37.1719830212245; Mon, 01 Jul 2024 03:36:52 -0700 (PDT) MIME-Version: 1.0 References: <20240628130750.73097-1-ioworker0@gmail.com> <20240628130750.73097-2-ioworker0@gmail.com> In-Reply-To: From: Lance Yang Date: Mon, 1 Jul 2024 18:36:41 +0800 Message-ID: Subject: Re: [PATCH v2 1/2] mm: add per-order mTHP split counters To: Baolin Wang Cc: Barry Song <21cnbao@gmail.com>, akpm@linux-foundation.org, dj456119@gmail.com, ryan.roberts@arm.com, david@redhat.com, shy828301@gmail.com, ziy@nvidia.com, libang.li@antgroup.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: rspam01 X-Rspamd-Queue-Id: 4C20B100010 X-Stat-Signature: 58n8iw48gy6i4skh7cea7e5ww4aty1o1 X-HE-Tag: 1719830214-780560 X-HE-Meta: U2FsdGVkX19nXYsffSdmUQcWSXuBR2EplR0NeIgxAq9ThwQcbXMvujD6EbruaCODl+Tf/ZaNBFFLaqjBiqZzrtcowL2EUFbnPO0hlZdYtjPd0+YNNlDGYeUH3ffuRIIli8pKJk/LQk8ZFZj1jT39by5Dwq7wUH6u47i33P2nEeWY/r6dBAjKjcTLEHoyHojK99940B36l79v0HltygG+nF7D8EcIYokPfN5pGShkYIvG7q5HqX2rjmRczYMV3kcrfdg/f0HAR5iAUcrIgjg5jh+SiBdipWCtKGMXMSvSyfedbJWz8tPLTHip1dCgjSnb/rmbKKlieugvyq3f4/GBf7kJP9h94JpXIWdq5jBUKbRN53DjSbjvgtOCviL3p5F4LzFnALP7RH5z3viFAGwLCSe2r3Ou4o6ZZzvcWEPr4hQpZrO93kJdLPD0L2KBgV8Gt0ioQUFvFJN3tc+UooGGicYBITLzeQFIJEjePrWCei8GrgS/NSmaEnm6O4MUwaCET3NjjPkB55oNCTSVsqjb6WBr6jhiSctHoxu10TCXPsPEN937IIr1wrhicqOpDwQGmt5cLCtbibGr9dZeodXgYM8mMs6oMERX5gJFYwdPUy/XZcN94dhccMP9KhWNG0PdtiP4N4MH/w2Vsza7B8Bdu4KSlFv7E2fVeOKSihgdHr/eW0SOHdH31F/z8eGkD1WkkTfiv0iOqD3jf0OVX5x9LuWc1D4b36LG3doU8mzOxpioVWBGFByRgQQDJcAE4k3bZp1kXdmRB1oQo9fQMWd3mLWOT28DPY87PedBd0+UkjTOEac3tgc0Z+VLNoGe2XceeakbDrMo/0DNV25u+Vv6k502nerrXgGE6O1OnUufe57KZxOqz9/bnfEGBnYunDIBZEcASjiTOn5Mwd2Pl6iQzMiK0L5q/hnGCxQv10lktDM8N9pG/TJubBjJh/C5gDNmAhRxF9ImujV7xMHRM8B 2VsJDARJ AFUbdAutQa1taqBAhCFvWdNZD7sM+sqfzuezQ62xDlwgpC2qHF7esVlD4lnsRcrpQWHkjiJlNCTvgndwnBANLpP23kDTUQT6DJkQlucugL1tGhe08OsLoQHxLobeKfwTkRSzZdjHj8HuY2wWqBSpY9fMUGvBd5bvWlnqe6gqnwStiqXcY3saEpYZAw9WoyE11y/9lOFp+a9hxSj8b2lZf/ATP5/bWU8yATfepzwUUSGoEKwh+XrygNwOROP58Nx6NvNXH2eKTPMfCJjEDDrNSVKqwTAOtAOA2iij+oQ3MZ/Ta0uNFDMaANuoofK7l6lrDD7WUbuYA+JGv2dLDSnJoWKlrLv5SN1dkau//PY709uiE/Bizave7598eXuc0Ozvzx7onyqF0yJ/zNDm+QW35p8WKbc+WES2nEih03dQe3nIEMS4= 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 Baolin, Thanks for taking time to review! On Mon, Jul 1, 2024 at 10:23=E2=80=AFAM Baolin Wang wrote: > > > > On 2024/7/1 08:02, Barry Song wrote: > > On Sat, Jun 29, 2024 at 1:09=E2=80=AFAM Lance Yang wrote: > >> > >> Currently, the split counters in THP statistics no longer include > >> PTE-mapped mTHP. Therefore, we propose introducing per-order mTHP spli= t > >> counters to monitor the frequency of mTHP splits. This will help devel= opers > >> 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 > > > > Personally, I'm not convinced that using a temporary variable order > > makes the code > > more readable. Functions like folio_test_pmd_mappable() seem more reada= ble to > > me. In any case, it's a minor issue. > > Yes, I have the same opinion as Barry. With that: > Reviewed-by: Baolin Wang Thanks again for your opinion! Lance > > > > Acked-by: Barry Song > > > >> --- > >> 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_S= WPOUT_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_= CHARGE); > >> +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, n= ew_order); > >> 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= _FAILED); > >> + count_mthp_stat(order, !ret ? MTHP_STAT_SPLIT : MTHP_STAT_SPLI= T_FAILED); > >> 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 a= lso > >> * won't waste much memory by not adding them to the deferred= list. > >> */ > >> - 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->spli= t_queue); > >> ds_queue->split_queue_len++; > >> #ifdef CONFIG_MEMCG > >> -- > >> 2.45.2 > >>