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?
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