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 4B256E77179 for ; Fri, 6 Dec 2024 11:21:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BBF9C6B013C; Fri, 6 Dec 2024 06:21:40 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B6F886B013D; Fri, 6 Dec 2024 06:21:40 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A0FBE6B0140; Fri, 6 Dec 2024 06:21:40 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 83F1E6B013C for ; Fri, 6 Dec 2024 06:21:40 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 36A2E1A1C18 for ; Fri, 6 Dec 2024 11:21:40 +0000 (UTC) X-FDA: 82864293162.19.EC367B1 Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) by imf25.hostedemail.com (Postfix) with ESMTP id 2E995A000A for ; Fri, 6 Dec 2024 11:21:25 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=D35sgcwh; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf25.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.44 as permitted sender) smtp.mailfrom=ioworker0@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1733484090; 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=IyzXuvxRpwFrV1nRnI/J4fk27w/kJSEXBODmElH5NDM=; b=xdymhsdTAOQfN8ObIfRIotQs2QOFxD55fYX1EGXLIyMiODpfVFEPPW4YfODhIhmmGB2IHr y4oKXkAWlVqlx3/q3S6Eqf/m4TVI2kr7zviqtLg0jEWawEnd/O4giJUDL/PkeMl5F4+/Vb 4FpAOY+EuMhiYmAKUIPHdKgyTt6qMew= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1733484090; a=rsa-sha256; cv=none; b=QvvWP07WwBaaurG/EyyPw4piBWy22SotdREznxQKdd1X2A9NeuJMrU/SepbYugCR3b0RBR UfOxdhv9Smf7l/615OQdgDHEosVHMX0f8sfUkfzQGCIm0ejFjiJ/UdyFCpVv5K4ymABZCE Eh40Roa8zicQkGbfzh+cfTVxph+jYtE= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=D35sgcwh; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf25.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.44 as permitted sender) smtp.mailfrom=ioworker0@gmail.com Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-5ceb03aadb1so2535517a12.0 for ; Fri, 06 Dec 2024 03:21:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733484096; x=1734088896; 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=IyzXuvxRpwFrV1nRnI/J4fk27w/kJSEXBODmElH5NDM=; b=D35sgcwhEf++Bb5P23m5eKE0SnIZu0sLAjgoZcB29SnsQWNBPXYARsNQms7i/XiQsN 892Y8pDXbVGsh20MAv9X1+AoUa2Pbc2aQ7fkergkNdQx9qjeVhM214f2ZNFB+R0duHoe BlQnELBbucw4xqYK0zoEc8HJiMStKBOFzIOgOy0osCfg48fP+f2RCrusKQqBuUjsfFPl jGoWI0o5SoFJa+p8qHWSzHxJKC24gB4SR9+uCAoqn2+o5oQUkSkxCVCdhIwULNA0VbVT XELyFoSH40zG8yyDUatGQn3iEREXV/6BuJeI+R7eNuZ6zKzu6GKW0UdDhPOH4OALtXQ5 frSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733484096; x=1734088896; 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=IyzXuvxRpwFrV1nRnI/J4fk27w/kJSEXBODmElH5NDM=; b=Izk1WpuT7IPMIFe8oAQwAMXQ4/dqMsFUsuLdDZrc7x1xQah7UfCZjZS2KX8lh4XEvh G0XHS9qQ011KoUg6mFtj3z51OwDl1xiMAIbmCCHLDTn+xM7RBYSSxFA2sdtcB2YIU4vG IfiuQbPiMPsLiheTKhbx5LdLkQfdjCzOEy3HksjxRcPizsBgYztL4lBiLIX+L6hHFjMZ N8dWZ27LZ1NgP8INkXYxlZ5gPdx/gZ3ECDmaVSdUa+B0x5JlaFTUQNHSZmmmwDPnKRHT yGMrWBWIyKWSBS3YPpdo//0atGEVaQNSpIMoDrPhiNJQsXLKlycFNsh+jmYyYQfaQ/+y lF2Q== X-Forwarded-Encrypted: i=1; AJvYcCW9855d7K9l3QQbncGXtRhJIvsBXj6yK8CNRc2GBGkD6MMoG6RBiCLaYmT4bsyP56meC5yp98nIcg==@kvack.org X-Gm-Message-State: AOJu0Yx7Ut99RW+Ff2IlfUIa81byesnDinPZQh9hrIRAFN90Sk6/51NU rqb+Dz4YoKgKhKxHN1q1PdkNpxKKHD13zWg8xZJK0GKafllKYLdmAGfR3EmVH5smeMLC/VSC2g0 iZqL18LmjoxkJiuWGsbT983PHmsw= X-Gm-Gg: ASbGnctsTI4VDtZqB0r7w/QCE0YrsM2fllcWUdSMryTOms4yTHyULGFSuAIRGFDjFH3 Tsc3L+hz45A1kpOQv4ljaLktptBWVObXYGQ== X-Google-Smtp-Source: AGHT+IFL429JqXIboRvzssamCzQ6I+a9lCKCvQULS8lNCRXBuWoGme3cYGF5xMWYLcAq6Fjkq7suXMdMvs/rWVbY51c= X-Received: by 2002:a05:6402:4497:b0:5d0:e877:764e with SMTP id 4fb4d7f45d1cf-5d3be71f257mr2571986a12.24.1733484096457; Fri, 06 Dec 2024 03:21:36 -0800 (PST) MIME-Version: 1.0 References: <20241202124730.2407037-1-haowenchao22@gmail.com> In-Reply-To: <20241202124730.2407037-1-haowenchao22@gmail.com> From: Lance Yang Date: Fri, 6 Dec 2024 19:21:00 +0800 Message-ID: Subject: Re: [PATCH v3] mm: add per-order mTHP swap-in fallback/fallback_charge counters To: Wenchao Hao Cc: Jonathan Corbet , Andrew Morton , David Hildenbrand , Barry Song , Ryan Roberts , Baolin Wang , Usama Arif , Matthew Wilcox , Peter Xu , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: f1rz85rr4e9zu8txe338a5w4ng4bnuc5 X-Rspamd-Queue-Id: 2E995A000A X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1733484085-550452 X-HE-Meta: U2FsdGVkX1+Iw3HoPFkU8P36rrJH1sEb3PHwqa9dB0beFfKwtWAk+BgGrKBWdEEfJ6U7IWiiEQG1jRhLQV3ffnjFrQiA249smhxtiKGWMlCOfp4ncfGjaBwD2vQiNpJJMZ40hCYcTsSU8lyk/0KEWuwKagx66j+UunORP2d82C963hvtlUsnoqW6fiGWfckeQUdatn1E+nmnk1X9DLHORd+zpYjDQpA4mfgqKdDgcmeiEzfpCuzgm1JU4XdS1PwzAqVLHy9tI90Tx3mxwiIKOkdtxrk+UieYY0umHRWDFfLhswTKjyPa05ePwBKkPA+wbzjcI6SixmPWtxmZ5HGLPB5b8rJuv2CS8KZ3KkWqjWfDdPhyPL8r8JHUgcwEvqyVvTiNfJk7RznHKbq0TE4dLQE4L/PLvMI6trmE6mjOethVl+BrASLhV46Q2LSF5CZy9Ol3sWxR8m5FRuwlNqXbK8nb/gSIVtkOxp/q6daxUKioCz7KotxOfIKgahI8WQ2k4r/UkeDMoypi/gfTDOAtYPaEdAXrvkph6AHB6MT5uC2EmeDNko1I23smpi1QOcD0cpu1iq2Od+hXeT3wsYH2FYGjO+7k+PyATRYVZeej70OTbJwPZujR09ADcOeccoLD62/6xi+z6qMg2aO8S2ZTwGjnY9/RlNFULQAHNAeyPEo9cApjONOC/FGnHJRs8FVOBQg5LznmHL4xqHQBvKOgqv4SShyHk7mVfFoVkVSkyMhbEC0xBDbN9Ku5/ETdtK+G/UVyM6j4rc/4OxcamPabJscV1NXbIYrAn4oYAkO/LvomiYnn+vAYKLonKdGxp0Q39rGZ3b3K+0KTijQnJ6QvSEtmGt4EQCiOMbaTot1gqwc6hFfmg7+4/qIlHdzlkdiAKASsY5fzCuMOTMVi8TCPFXV/SDxOH80IvA52CM/bY2yDerd16xy9qFRb8IH2UwIi/jsS+UNM/p2dprvlRba x24yoY6t KdYv6u82/0kj5RqEoJNAB6PJZutmgqj7im4kXkkmb/DKTvJnD/EkUs1ECiI0O4qyS0Z6KSdgSqPu2+zrlzmvG24AAvTeghRQSHavipxiH7euAGDrwvGyAjFHk0D8tOdnbS6LwnNbOPy7NXOCiS3/64zju4NfYK5OueES760yomyuZynggkinOF7/w0SJ3DjMQyPO44H2wCjvZmggZcEp9oUclHwEW8i7aSswoSfm5s89IZxImgnU54U17Fw4bVaucodnWOFdj0Qi7zdI6gm/FP5cNTSlJnKc6YPPTInVPq5u2PQsD5VMIz6ETd6WY9KjPpuZvkA0P7kVfx8spRf2xAwhMl4LP7smj6IeD0Nr5vk3Am84RzYOEdtBALxoxu8ncffpmLNWUQbb287U= 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: On Mon, Dec 2, 2024 at 8:47=E2=80=AFPM Wenchao Hao = wrote: > > Currently, large folio swap-in is supported, but we lack a method to > analyze their success ratio. Similar to anon_fault_fallback, we introduce > per-order mTHP swpin_fallback and swpin_fallback_charge counters for > calculating their success ratio. The new counters are located at: > > /sys/kernel/mm/transparent_hugepage/hugepages-/stats/ > swpin_fallback > swpin_fallback_charge > > Signed-off-by: Wenchao Hao LGTM. Feel free to add: Reviewed-by: Lance Yang Thanks, Lance > --- > V3: > Update description about swpin_fallback and swpin_fallback_charge > > V2: > Introduce swapin_fallback_charge, which increments if it fails to > charge a huge page to memory despite successful allocation. > > Documentation/admin-guide/mm/transhuge.rst | 10 ++++++++++ > include/linux/huge_mm.h | 2 ++ > mm/huge_memory.c | 6 ++++++ > mm/memory.c | 2 ++ > 4 files changed, 20 insertions(+) > > diff --git a/Documentation/admin-guide/mm/transhuge.rst b/Documentation/a= dmin-guide/mm/transhuge.rst > index 333958ef0d5f..156a03af0a88 100644 > --- a/Documentation/admin-guide/mm/transhuge.rst > +++ b/Documentation/admin-guide/mm/transhuge.rst > @@ -591,6 +591,16 @@ swpin > is incremented every time a huge page is swapped in from a non-zs= wap > swap device in one piece. > > +swpin_fallback > + is incremented if swapin fails to allocate or charge a huge page > + and instead falls back to using huge pages with lower orders or > + small pages. > + > +swpin_fallback_charge > + is incremented if swapin 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. > + > swpout > is incremented every time a huge page is swapped out to a non-zsw= ap > swap device in one piece without splitting. > diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h > index b94c2e8ee918..93e509b6c00e 100644 > --- a/include/linux/huge_mm.h > +++ b/include/linux/huge_mm.h > @@ -121,6 +121,8 @@ enum mthp_stat_item { > MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE, > MTHP_STAT_ZSWPOUT, > MTHP_STAT_SWPIN, > + MTHP_STAT_SWPIN_FALLBACK, > + MTHP_STAT_SWPIN_FALLBACK_CHARGE, > MTHP_STAT_SWPOUT, > MTHP_STAT_SWPOUT_FALLBACK, > MTHP_STAT_SHMEM_ALLOC, > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index ab46ef718b44..d062b257376d 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -617,6 +617,8 @@ DEFINE_MTHP_STAT_ATTR(anon_fault_fallback, MTHP_STAT_= ANON_FAULT_FALLBACK); > DEFINE_MTHP_STAT_ATTR(anon_fault_fallback_charge, MTHP_STAT_ANON_FAULT_F= ALLBACK_CHARGE); > DEFINE_MTHP_STAT_ATTR(zswpout, MTHP_STAT_ZSWPOUT); > DEFINE_MTHP_STAT_ATTR(swpin, MTHP_STAT_SWPIN); > +DEFINE_MTHP_STAT_ATTR(swpin_fallback, MTHP_STAT_SWPIN_FALLBACK); > +DEFINE_MTHP_STAT_ATTR(swpin_fallback_charge, MTHP_STAT_SWPIN_FALLBACK_CH= ARGE); > DEFINE_MTHP_STAT_ATTR(swpout, MTHP_STAT_SWPOUT); > DEFINE_MTHP_STAT_ATTR(swpout_fallback, MTHP_STAT_SWPOUT_FALLBACK); > #ifdef CONFIG_SHMEM > @@ -637,6 +639,8 @@ static struct attribute *anon_stats_attrs[] =3D { > #ifndef CONFIG_SHMEM > &zswpout_attr.attr, > &swpin_attr.attr, > + &swpin_fallback_attr.attr, > + &swpin_fallback_charge_attr.attr, > &swpout_attr.attr, > &swpout_fallback_attr.attr, > #endif > @@ -669,6 +673,8 @@ static struct attribute *any_stats_attrs[] =3D { > #ifdef CONFIG_SHMEM > &zswpout_attr.attr, > &swpin_attr.attr, > + &swpin_fallback_attr.attr, > + &swpin_fallback_charge_attr.attr, > &swpout_attr.attr, > &swpout_fallback_attr.attr, > #endif > diff --git a/mm/memory.c b/mm/memory.c > index d5a1b0a6bf1f..a44547600c02 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -4189,8 +4189,10 @@ static struct folio *alloc_swap_folio(struct vm_fa= ult *vmf) > if (!mem_cgroup_swapin_charge_folio(folio, vma->v= m_mm, > gfp, entry)) > return folio; > + count_mthp_stat(order, MTHP_STAT_SWPIN_FALLBACK_C= HARGE); > folio_put(folio); > } > + count_mthp_stat(order, MTHP_STAT_SWPIN_FALLBACK); > order =3D next_order(&orders, order); > } > > -- > 2.45.0 >