proc_pid_smaps

proc_pid_smaps(5) File Formats Manual proc_pid_smaps(5)

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 map‐
          ping 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  ma
          jority  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 proces
          sors.  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)

Linux man-pages 6.9.1 2024-05-02 proc_pid_smaps(5)