Provided by: manpages_6.9.1-1_all bug

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.

SEE ALSO

       proc(5)