Re: [RFC PATCH v2 5/5] mm, shmem: Show location of non-resident shmem pages in smaps

From: Jerome Marchand
Date: Mon Sep 15 2014 - 12:48:41 EST


On 09/15/2014 06:21 PM, Oleg Nesterov wrote:
> Hi Jerome,
>
> Not sure I understand this patch correctly, will try to read it later.
> But a couple of nits/questions anyway,
>
> On 09/15, Jerome Marchand wrote:
>>
>> +The ShmXXX lines only appears for shmem mapping. They show the amount of memory
>> +from the mapping that is currently:
>> + - resident in RAM but not mapped into any process (ShmNotMapped)
>
> But how can we know that it is not mapped by another process?

Its mapcount is zero.

>
> And in fact "not mapped" looks confusing (at least to me).

"Not mapped" as "not present in a page table". It does belong to a
userspace mapping though. I wonder if there is a less ambiguous terminology.

> IIUC it is actually
> mapped even by this process, just it never tried to fault these (resident or
> swapped) pages in. Right?

No these pages are in the page cache. This can happen when the only
process which have accessed these exits or munmap() the mapping.

>
>> +void update_shmem_stats(struct mem_size_stats *mss, struct vm_area_struct *vma,
>> + pgoff_t pgoff, unsigned long size)
>
> static?
>
>> +{
>> + int count = 0;
>> +
>> + switch (shmem_locate(vma, pgoff, &count)) {
>> + case SHMEM_RESIDENT:
>> + if (!count)
>> + mss->shmem_notmapped += size;
>> + break;
>> + case SHMEM_SWAP:
>> + mss->shmem_swap += size;
>> + break;
>> + }
>> +}
>
> It seems that shmem_locate() and shmem_vma() are only defined if CONFIG_SHMEM,
> probably this series needs more ifdef's.

Now I wonder. Did I try to compile this with CONFIG_SHMEM unset?

>
> And I am not sure why we ignore SHMEM_SWAPCACHE...

Hugh didn't like it as it is a small and transient value.

Thanks,
Jerome

>
> Oleg.
>


Attachment: signature.asc
Description: OpenPGP digital signature