2013-07-12 11:38:34

by naveen yadav

[permalink] [raw]
Subject: shmem info issue

Hi All

I am working on tmpfs. During code analysis I found shmem driver
register itself as tmpfs .

cat /proc/meminfo Shmem field read NR_SHMEM enum filed and shows used
memory in tmpfs


[root@localhost linux-3.8.2]# cat /proc/meminfo | grep -r Shmem
Shmem: 704 kB
[root@localhost linux-3.8.2]#

include/linux/mmzone.h
enum zone_stat_item {
-----cut here-------
NR_SHMEM, /* shmem pages (included tmpfs/GEM pages
-----cut here
}

I have the following query
1-> cat /proc/meminfo | grep -r Shmem show only the used tmpfs memory
or it show used tmpfs memory + mata data also (because I found Shmem
is bit larger then tempfs used memory )
2-> as per the developer comments NR_SHMEM included tmpfs and GEM
pages whct is Gem pages
3-> is my above code analysis is correct?


2013-07-12 22:58:30

by Hugh Dickins

[permalink] [raw]
Subject: Re: shmem info issue

On Fri, 12 Jul 2013, naveen yadav wrote:
> Hi All
>
> I am working on tmpfs. During code analysis I found shmem driver
> register itself as tmpfs .
>
> cat /proc/meminfo Shmem field read NR_SHMEM enum filed and shows used
> memory in tmpfs
>
>
> [root@localhost linux-3.8.2]# cat /proc/meminfo | grep -r Shmem
> Shmem: 704 kB
> [root@localhost linux-3.8.2]#
>
> include/linux/mmzone.h
> enum zone_stat_item {
> -----cut here-------
> NR_SHMEM, /* shmem pages (included tmpfs/GEM pages
> -----cut here
> }
>
> I have the following query
> 1-> cat /proc/meminfo | grep -r Shmem show only the used tmpfs memory
> or it show used tmpfs memory + mata data also (because I found Shmem
> is bit larger then tempfs used memory )

"Shmem" includes only data, not metadata, nor memory currently swapped
out. But it includes tmpfs memory, SysV shared memory (from ipc/shm.c),
POSIX shared memory (under /dev/shm), and shared anonymous mappings
(from mmap of /dev/zero with MAP_SHARED: see call to shmem_zero_setup()
from drivers/char/mem.c): whatever allocates pages through mm/shmem.c.

> 2-> as per the developer comments NR_SHMEM included tmpfs and GEM
> pages whct is Gem pages

Ah yes, and the Graphics Execution Manager uses shmem for objects shared
with the GPU: see use of shmem_read_mapping_page*() in drivers/gpu/drm/.

> 3-> is my above code analysis is correct?

I think so.

Hugh