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 6D0DDC27C4F for ; Mon, 1 Jul 2024 01:42:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A93BB6B008C; Sun, 30 Jun 2024 21:42:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9F57C6B0095; Sun, 30 Jun 2024 21:42:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8BCE86B0096; Sun, 30 Jun 2024 21:42:20 -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 6AD9E6B008C for ; Sun, 30 Jun 2024 21:42:20 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 2999241759 for ; Mon, 1 Jul 2024 01:42:20 +0000 (UTC) X-FDA: 82289483640.26.756429C Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) by imf05.hostedemail.com (Postfix) with ESMTP id 56E4F100004 for ; Mon, 1 Jul 2024 01:42:18 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="V/y9dVsq"; spf=pass (imf05.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.52 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=1719798127; a=rsa-sha256; cv=none; b=uSR3ihy+l/NqRV4FYD03b1LBQBeQ1oJEU+8pBX1fDsWtyfIgwIkMc9HsXnjh23bD8/h01X CfclOK5qADe/l09nK04avCc+ZD+N9YkgtV189WRSiO/y4gF6WwZTTQIqLYwg1racrAJZeg qoJspC+HLN3UbAOzd/iQPNdJ/KxHmpo= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="V/y9dVsq"; spf=pass (imf05.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.52 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=1719798127; 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=QDwPLMmlaqY2Z+dXHgf9a1r847VxqdR04f3yjAi09Uk=; b=aCQrkkzcVUCPqvWVsOENEffZExix9AUdJK06pbJc1smIL3lJwo/WqnFPRoJTxd2nHMEfAn GHxoQ//d4XmrStYTxxRuMPdIaPfAtwssmt8imix6Sn6RX9UZjhkYqp/xVoA3Xv4MPu8JgT ZKvukExo+ldUjXILiCTKHENsxd/r2OA= Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-57d07673185so2667867a12.1 for ; Sun, 30 Jun 2024 18:42:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719798137; x=1720402937; 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=QDwPLMmlaqY2Z+dXHgf9a1r847VxqdR04f3yjAi09Uk=; b=V/y9dVsqvbXfbmKBFpFyZRb4K6bF5EqaHky84SrR2tWANJ6cVl5ki07KaSBeAl9ti9 qm+fpzGVv2Q6b9mRa2DgZTzRr8j2lAg05s9zOFFtkBeXYXSi5IM1E9YhGvbrnJzxActt Zs+vZ+rHhfdiEGl35Rl/Z2AkPs3iK+/uRfGW8iNUW8UxhQ6bC6hjnvDjdTuOh8sChLkg 1Rrw2EFqlJHyzuTnY2oSu3i0JKdqisw9WrQ8w1FxsQwrMEfcraLnNVtQJI7ONZjcMITg 4+//QatYDIK5LKE5sM3PLh8u5dyYytsNfmWAuRpViZa1eT2+cBTPQ5vFBTZQKfumh9mN GioA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719798137; x=1720402937; 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=QDwPLMmlaqY2Z+dXHgf9a1r847VxqdR04f3yjAi09Uk=; b=qjL+mAA1V6ux5jQKgbHmgePcKY/gAJQeo6YCzml3vil/BJd5dDst8zEhtP1cZGNdrH sH4Cp+DL5vdgD5Ra264Q5DGNSbMsU5Erj92Ku41f18yG+AAKIIvyMmq9dEjdjBdIAY12 tpwLp8ov7wM8Dqsf2wIbqdhju/cU23K0T8sV0mfbqd7YAffObToxsISuio+4+QRlwNLu O+N+Mx7R3EvifhxPF6B+7z65TjW476yGinPCFN/7KSsJWzxfqD9DVFBGyM9kPhN3B83O 36FGbmD9dlsGz4A2RbedkOCaxXQOSimYk2QZduKP3Qn8lOPrEJPqQDN8HEmkTgCTNjUA 7vqA== X-Forwarded-Encrypted: i=1; AJvYcCVplL0EMFXEq1XQD5E9v9RJ6iN+RkZNzAx4K6GjNldNJZw+SJfQTEgJQ5Wv3qxb3LWvmzUlI5TUEiRU0V0DG6GHhl4= X-Gm-Message-State: AOJu0YxSpOOEUjsj4b46xK8vwenWoQlxF/+m5vR2abVdoUOpbLgfJGFQ x/dHXi5Fb5MkRoxMgRonHR+VufkzAH0x1r9gFklVr9LdllKLgZCzBDLZHwtRPqscIEP/Zzw5FQ8 TyrZQ7GnaWH8Yo3QR9ND5QCeeIFc= X-Google-Smtp-Source: AGHT+IG/MYaPLxvlYOaDUSFyv1g6sKCJYrmgLplveO02lDU/vDYT0ChyOHw5p1KMxVyGv3bpjUijSClKJ1dfNzeetNg= X-Received: by 2002:a05:6402:50d3:b0:57d:4b56:da11 with SMTP id 4fb4d7f45d1cf-5879f4a5716mr3289105a12.11.1719798136582; Sun, 30 Jun 2024 18:42:16 -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 09:42:05 +0800 Message-ID: Subject: Re: [PATCH v2 1/2] mm: add per-order mTHP split counters To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, dj456119@gmail.com, ryan.roberts@arm.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-Stat-Signature: imxge9qyoedhxwcs5xkn1d4q66mj6edn X-Rspamd-Queue-Id: 56E4F100004 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1719798138-328918 X-HE-Meta: U2FsdGVkX1/djV6Kab8TkqWigmeYyC3xN0SLgUAFyHU8gB1p5yb/Luf+8fNa4pB0aVQHKC8lsvMY5GT+1gBEkWz/NT9g5+9PGTF0ZTge0d1zHCKeMWcCtrDD+SyRPjGhHrjXdlYVnauVQN7CIVMoYPfSoJ7S85ksfQ/yYcPbMsflyO3UuBle/vBsJ+Ls1EU5hKTvAYaeZvdsHA860ARik1Bu8gU3w3MUqXcXLGo8xqwI1Z6ycQeObcekPYnhSHJFxovudDUumNhixkSj74lR9lDtPPgySsnUGyjiU+O0U6xU1tv3Vg+tn78BA8IfeuPMf6s8ShmvIP5kf5/T/qPmufJEZdJRdNkmrgd5IvpjNke5OodmZzZsUuAeVufOFgwq5iid/Xqw84PmuOba7j2zodSI61iB3iLpYvKWdswCQ9uL56/ABfdwhzHO8bNIlWyQD9wVxW+vAXpUm/Ijb0jgVFd4w+PCqqCBQ4n82YQMgELZLUfAfC3Bi7Vxp2Dr73gNJgR/T3ChQl7H6e9A6WRCTuMxcShmtQcrxNB21MQ959lyXfCe+AzwvLGg/8RLIq0n0ZfvY4P7x1/e30QTuC5Fyi3NUuZMsI0+QAwiwF5smsHz4Cjlwi2PtGXev9R7WIQ/BkkT6eWUSs+0N7YtcdtSckBbRdxpC3mM3uWK6h/LoUBki15zQvty29UleqBFjSCh6ubFfT3Fwp2UbZFKzbre37fRbq3N5ce+CYUaAp/txMERFpdlYR6vUJW9jOgMZPmakMtw5IwcUPMXj5M1TFJ4MR+jyRzc8LrE4L/A+zL5PUJI+34qexXGMv0RWab+1rG76LIGR3w8apMxzfoCM1THTTbbA47H/tIU7YrUzjencwiBiFEgZ29R1fGnzcnY4xP+wvAYHC6RqE83drbwXjj/ruBlo6wZ3Zee6Gq62cNTyemJtDuTfyVs/bZa6qgSlEAmiciLw1D40bxe7hSg55b L5SxkzmI L3Pmo47/ee0u5DMNwS7ByciLt0PXwzzJF/MbtbDVoA3MGpCh2NRAOo3JHaez8YMkbLedwaslz3RdJDezJtGETCNgrBhrqPvv9sN3chNFbKERxS98LVkoby3EGCV2xwZoAYhuf3ivHvi8DBrbyHPS6n9+UG2L28rbq8gku2yLaxX11VW5hZycoaiq1YuQ09dEQ6zRzR3nGobAQGd4+asUEUnNyvLV1wJ87OdRBCktvlpnD/GTKX/+/ZX7H5qsHCOS/UaNdDeVSIWtOG9LViwmUtIFGeSyJ+EAZ++cRGRgLrSJE4unw+F/1bvr2Ik83MhJ3f+tF15Hi15CAdM5r8HFwIln2ljXyVi9zStQBEVd6Lrb3NAiIMs4rv5i/iyAvwuNlC9Cr2/taOrpL0j5n62D51OBKpA== 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 Barry, Thanks for taking time to review! On Mon, Jul 1, 2024 at 8:02=E2=80=AFAM Barry Song <21cnbao@gmail.com> 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 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 > > Personally, I'm not convinced that using a temporary variable order > makes the code > more readable. Functions like folio_test_pmd_mappable() seem more readabl= e to Agreed. Using functions like folio_test_pmd_mappable() is more readable for THP checks. > me. In any case, it's a minor issue. I'd like to hear other opinions as well ;) > > Acked-by: Barry Song Thanks again for your time! 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= _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_F= AILED); > > + count_mthp_stat(order, !ret ? MTHP_STAT_SPLIT : MTHP_STAT_SPLIT= _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 als= o > > * won't waste much memory by not adding them to the deferred l= ist. > > */ > > - 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_= queue); > > ds_queue->split_queue_len++; > > #ifdef CONFIG_MEMCG > > -- > > 2.45.2 > >