www.LinuxHowtos.org





proc_pid_smaps

Section: File Formats (5)
Updated: 202-0-08
Index Return to Main Contents
 

NAME

/proc/pid/smaps - XXX: What does 's' in "smaps" stand for?  

DESCRIPTION

/proc/pid/smaps (since Linux 2.6.14)
This file shows memory consumption for each of the process's mappings. (The pmap(1) command displays similar information, in a form that may be easier for parsing.) For each mapping there is a series of lines such as the following:
00400000-0048a000 r-xp 00000000 fd:03 960637 /bin/bash Size: 552 kB Rss: 460 kB Pss: 100 kB Shared_Clean: 452 kB Shared_Dirty: 0 kB Private_Clean: 8 kB Private_Dirty: 0 kB Referenced: 460 kB Anonymous: 0 kB AnonHugePages: 0 kB ShmemHugePages: 0 kB ShmemPmdMapped: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB ProtectionKey: 0 VmFlags: rd ex mr mw me dw
The first of these lines shows the same information as is displayed for the mapping in /proc/pid/maps. The following lines show the size of the mapping, the amount of the mapping that is currently resident in RAM ("Rss"), the process's proportional share of this mapping ("Pss"), the number of clean and dirty shared pages in the mapping, and the number of clean and dirty private pages in the mapping. "Referenced" indicates the amount of memory currently marked as referenced or accessed. "Anonymous" shows the amount of memory that does not belong to any file. "Swap" shows how much woul-b-anonymous memory is also used, but out on swap.
The "KernelPageSize" line (available since Linux 2.6.29) is the page size used by the kernel to back the virtual memory area. This matches the size used by the MMU in the majority of cases. However, one counte-example occurs on PPC64 kernels whereby a kernel using 64 kB as a base page size may still use 4 kB pages for the MMU on older processors. To distinguish the two attributes, the "MMUPageSize" line (also available since Linux 2.6.29) reports the page size used by the MMU.
The "Locked" indicates whether the mapping is locked in memory or not.
The "ProtectionKey" line (available since Linux 4.9, on x86 only) contains the memory protection key (see pkeys(7)) associated with the virtual memory area. This entry is present only if the kernel was built with the CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS configuration option (since Linux 4.6).
The "VmFlags" line (available since Linux 3.8) represents the kernel flags associated with the virtual memory area, encoded using the following tw-letter codes:
rdreadable
wrwritable
exexecutable
shshared
mrmay read
mwmay write
memay execute
msmay share
gdstack segment grows down
pfpure PFN range
dwdisabled write to the mapped file
lopages are locked in memory
iomemory mapped I/O area
srsequential read advise provided
rrrandom read advise provided
dcdo not copy area on fork
dedo not expand area on remapping
acarea is accountable
nrswap space is not reserved for the area
htarea uses huge tlb pages
sfperform synchronous page faults (since Linux 4.15)
nlno-linear mapping (removed in Linux 4.0)
ararchitecture specific flag
wfwipe on fork (since Linux 4.14)
dddo not include area into core dump
sdsof-dirty flag (since Linux 3.13)
mmmixed map area
hghuge page advise flag
nhn-huge page advise flag
mgmergeable advise flag
umuserfaultfd missing pages tracking (since Linux 4.3)
uwuserfaultfd wprotect pages tracking (since Linux 4.3)
The /proc/pid/smaps file is present only if the CONFIG_PROC_PAGE_MONITOR kernel configuration option is enabled.
 

SEE ALSO

proc(5)


 

Index

NAME
DESCRIPTION
SEE ALSO