# proc_pid_smaps

## 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 would-be-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 counter-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 two-letter codes:
    
                         rd   -   readable
                         wr   -   writable
                         ex   -   executable
                         sh   -   shared
                         mr   -   may read
                         mw   -   may write
                         me   -   may execute
                         ms   -   may share
                         gd   -   stack segment grows down
                         pf   -   pure PFN range
                         dw   -   disabled write to the mapped file
                         lo   -   pages are locked in memory
                         io   -   memory mapped I/O area
                         sr   -   sequential read advise provided
                         rr   -   random read advise provided
                         dc   -   do not copy area on fork
                         de   -   do not expand area on remapping
                         ac   -   area is accountable
                         nr   -   swap space is not reserved for the area
                         ht   -   area uses huge tlb pages
                         sf   -   perform synchronous page faults (since Linux 4.15)
                         nl   -   non-linear mapping (removed in Linux 4.0)
                         ar   -   architecture specific flag
                         wf   -   wipe on fork (since Linux 4.14)
                         dd   -   do not include area into core dump
                         sd   -   soft-dirty flag (since Linux 3.13)
                         mm   -   mixed map area
                         hg   -   huge page advise flag
                         nh   -   no-huge page advise flag
                         mg   -   mergeable advise flag
                         um   -   userfaultfd missing pages tracking (since Linux 4.3)
                         uw   -   userfaultfd 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.
    


* * *