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.
>
signature.asc
Description: OpenPGP digital signature

