Linux-mm Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Ye Liu <ye.liu@linux.dev>
To: Johannes Weiner <hannes@cmpxchg.org>, liuye <liuye@kylinos.cn>
Cc: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Danilo Krummrich <dakr@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Hildenbrand <david@kernel.org>,
	"Liam R. Howlett" <liam@infradead.org>,
	Vlastimil Babka <vbabka@kernel.org>,
	Mike Rapoport <rppt@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>,
	Michal Hocko <mhocko@suse.com>, Kairui Song <kasong@tencent.com>,
	Qi Zheng <qi.zheng@linux.dev>,
	Shakeel Butt <shakeel.butt@linux.dev>,
	Barry Song <baohua@kernel.org>,
	Axel Rasmussen <axelrasmussen@google.com>,
	Yuanchu Xie <yuanchu@google.com>, Wei Xu <weixugc@google.com>,
	Zi Yan <ziy@nvidia.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Nico Pache <npache@redhat.com>,
	Ryan Roberts <ryan.roberts@arm.com>, Dev Jain <dev.jain@arm.com>,
	Lance Yang <lance.yang@linux.dev>,
	Usama Arif <usama.arif@linux.dev>,
	driver-core@lists.linux.dev, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH] mm/thp: expose deferred split folio memory usage in meminfo
Date: Mon, 20 Jul 2026 10:31:29 +0800	[thread overview]
Message-ID: <c32645fe-4c66-428f-b027-0271cd99f76b@linux.dev> (raw)
In-Reply-To: <20260717102909.GA6843@cmpxchg.org>



在 2026/7/17 18:29, Johannes Weiner 写道:
> Hello,
> 
> On Fri, Jul 17, 2026 at 05:38:10PM +0800, liuye wrote:
>>
>> 在 2026/7/17 17:24, Ye Liu 写道:
>>>
>>> 在 2026/7/17 16:08, Lorenzo Stoakes (ARM) 写道:
>>>> +cc Johannes
>>>>
>>>> On Fri, Jul 17, 2026 at 02:30:22PM +0800, Ye Liu wrote:
>>>>> From: Ye Liu <liuye@kylinos.cn>
>>>>>
>>>>> Folios on the deferred split list hold physical memory that is
>>>>> invisible in meminfo. When a THP becomes partially mapped, the
>>>>> unmapped pages are removed from AnonPages but remain physically
>>>>> allocated until the shrinker splits the folio. This creates a
>>>>> memory accounting gap where used memory cannot be attributed to
>>>>> any meminfo field.
>>>> Is this really that much of an issue? You're not giving any use cases here.
>>>>
>>>> What real-world use case motivated this?
>>>>
>>> I have indeed encountered this situation in a customer environment,                           
> 
> We have run into this before as well. It's not super
> rare. Applications do partial unmaps or protection changes with no
> awareness for THPs. The issue is likely to stick around with legacy
> software for some time.
> 
> Do note that all information is there if you know how to look for
> it. But it is cumbersome and somewhat inconsistent, so I'm not opposed
> to fixing it:
> 
>>> but the environment is complex, and I cannot clearly explain why this memory                  
>>> black hole occurs in that scenario.                                                           
>>> However, I will provide an example to reproduce it below.                                     
>>> Use case: The system has 100GB of memory. A user-space program requests 80GB of memory.       
>>> For each 2MB block, only one page is retained, and the mapping of all other pages is unmapped,
>>> while the process continues to run.                                                           
>>> You'll find that in meminfo, MemFree: only 12GB remains,                                      
>>> but the process actually uses very little memory.                                             
>>> This creates a memory black hole situation.                                                   
>>> Below is the test program I used, from AI.                                                    
>>>
>>
>> ps -p $(pgrep -d, test) -o pid,comm,%mem,rss,vsz
>>     PID COMMAND         %MEM   RSS    VSZ
>>    9358 test             0.1 165220 166032
>>
>>
>> MemTotal:       101606276 kB
>> MemFree:        13172092 kB
>> MemAvailable:   13569668 kB
>> Buffers:            5352 kB
>> Cached:          1169520 kB
>> SwapCached:            0 kB
>> Active:         84730404 kB
>> Inactive:        1129792 kB
>> Active(anon):   84730404 kB
> 
> This shows actually allocated anon+shmem.
> 
>> Inactive(anon):        0 kB
>> Active(file):          0 kB
>> Inactive(file):  1129792 kB
>> Unevictable:        6192 kB
>> Mlocked:              32 kB
>> SwapTotal:       4194300 kB
>> SwapFree:        4194300 kB
>> Zswap:                 0 kB
>> Zswapped:              0 kB
>> Dirty:                24 kB
>> Writeback:             0 kB
>> AnonPages:        969280 kB
> 
> This shows anon *mapped*.
> 
>> Mapped:           308848 kB
>> Shmem:             45076 kB
> 
> This shows that your (in)active anon *isn't* driven by shmem.
> 
>> KReclaimable:      96144 kB
>> Slab:             269540 kB
>> SReclaimable:      96144 kB
>> SUnreclaim:       173396 kB
>> KernelStack:       27584 kB
>> PageTables:       187408 kB
>> SecPageTables:         0 kB
>> NFS_Unstable:          0 kB
>> Bounce:                0 kB
>> WritebackTmp:          0 kB
>> CommitLimit:    54997436 kB
>> Committed_AS:    6628776 kB
>> VmallocTotal:   261087232 kB
>> VmallocUsed:       38696 kB
>> VmallocChunk:          0 kB
>> Percpu:            42800 kB
>> HardwareCorrupted:     0 kB
>> AnonHugePages:    413696 kB
> 
> This shows anon pmd-mapped.
> 
>> ShmemHugePages:        0 kB
>> ShmemPmdMapped:        0 kB
>> FileHugePages:    172032 kB
>> FilePmdMapped:     28672 kB
> 
> This shows both allocated huge pages and the pmd-mapped portion.
> 
> So you *can* work it out by looking at the LRU ((in)active) and
> cross-checking the shmem position. But it is awkward, granted.
Yes, R&D personnel may be able to draw conclusions through analysis, 
but this is indeed not very intuitive for operations and maintenance personnel.
> 
> IMO if there is a case to be made, it's doing the same split we do for
> file and shmem - AnonHugePages (allocated) and AnonPmdMapped.

This also adds a new field, which doesn't seem to be welcomed.

-- 
Thanks,
Ye Liu



  parent reply	other threads:[~2026-07-20  2:32 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-17  6:30 [PATCH] mm/thp: expose deferred split folio memory usage in meminfo Ye Liu
     [not found] ` <alngSdkM6iEGpETe@lucifer>
     [not found]   ` <102bada7-66ae-415d-abc8-12d5939b7ebb@linux.dev>
     [not found]     ` <70294b26-86e1-4de0-832f-d5cb488cdb3e@kylinos.cn>
     [not found]       ` <20260717102909.GA6843@cmpxchg.org>
2026-07-20  2:31         ` Ye Liu [this message]
     [not found] ` <46017e29-48a3-4a74-8c5a-0be9d912deaa@kernel.org>
     [not found]   ` <dd037379-cf59-468e-8b42-51546bf2e28c@linux.dev>
     [not found]     ` <f041f1e0-8ec4-48d4-8656-a6789c8ad379@kernel.org>
     [not found]       ` <aln6SBHcxBY-9Vfl@lucifer>
     [not found]         ` <41bc5ca5-08ed-4aba-86a3-d7f44b16e6f5@linux.dev>
     [not found]           ` <b6b04cf2-30d0-4511-9bd4-042b176c1b31@kernel.org>
2026-07-20  2:36             ` Ye Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c32645fe-4c66-428f-b027-0271cd99f76b@linux.dev \
    --to=ye.liu@linux.dev \
    --cc=akpm@linux-foundation.org \
    --cc=axelrasmussen@google.com \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=dakr@kernel.org \
    --cc=david@kernel.org \
    --cc=dev.jain@arm.com \
    --cc=driver-core@lists.linux.dev \
    --cc=gregkh@linuxfoundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=kasong@tencent.com \
    --cc=lance.yang@linux.dev \
    --cc=liam@infradead.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=liuye@kylinos.cn \
    --cc=ljs@kernel.org \
    --cc=mhocko@suse.com \
    --cc=npache@redhat.com \
    --cc=qi.zheng@linux.dev \
    --cc=rafael@kernel.org \
    --cc=rppt@kernel.org \
    --cc=ryan.roberts@arm.com \
    --cc=shakeel.butt@linux.dev \
    --cc=surenb@google.com \
    --cc=usama.arif@linux.dev \
    --cc=vbabka@kernel.org \
    --cc=weixugc@google.com \
    --cc=yuanchu@google.com \
    --cc=ziy@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox