]> granicus.if.org Git - procps-ng/commitdiff
top: man page now includes resident memory enhancement
authorJim Warner <james.warner@comcast.net>
Wed, 13 Apr 2016 05:00:00 +0000 (00:00 -0500)
committerCraig Small <csmall@enc.com.au>
Thu, 14 Apr 2016 11:03:03 +0000 (21:03 +1000)
Beginning with linux-4.5, the following new fields are
being added under that /proc/<pid>/status pseudo file:
 . RssAnon - size of resident anonymous memory
 . RssFile - size of resident file mappings
 . RssShmem - size of resident shared memory

This patch just represents the initial library and top
support, sharing a commit message with 2 more patches.

p.s. locked resident memory support was also added but
isn't directly related to the kernel 4.5 enhancements.

Reference(s):
commit 1f8e41d01966ef337bc252bffb181d0acc0c8751

Signed-off-by: Jim Warner <james.warner@comcast.net>
top/top.1

index 77b575072ccf1a27e2efd9165120d06fe99d138e..562b10a97455abb5d2c7a1d403a13a8dc290d035 100644 (file)
--- a/top/top.1
+++ b/top/top.1
@@ -69,7 +69,7 @@
 .
 .\" Document /////////////////////////////////////////////////////////////
 .\" ----------------------------------------------------------------------
-.TH TOP 1 "October 2015" "procps-ng" "User Commands"
+.TH TOP 1 "April 2016" "procps-ng" "User Commands"
 .\" ----------------------------------------------------------------------
 
 .\" ----------------------------------------------------------------------
@@ -306,7 +306,7 @@ The memory in quadrant #4, when modified, acts as its own dedicated \*(MS.
                           \fB1\fR           |          \fB2\fR
      \fBAnonymous\fR  . stack               |
                 . malloc()            |
-                . brk()/sbrk()        |
+                . brk()/sbrk()        | . POSIX shm*
                 . mmap(PRIVATE, ANON) | . mmap(SHARED, ANON)
                -----------------------+----------------------
                 . mmap(PRIVATE, fd)   | . mmap(SHARED, fd)
@@ -315,14 +315,22 @@ The memory in quadrant #4, when modified, acts as its own dedicated \*(MS.
 .fi
 
 The following may help in interpreting process level memory values displayed
-as columns and discussed in topic `3a. DESCRIPTIONS of Fields'.
+as scalable columns and discussed under topic `3a. DESCRIPTIONS of Fields'.
+
 .nf
    %MEM \- simply RES divided by total \*(MP
    CODE \- the `pgms' portion of quadrant \fB3\fR
-   DATA \- the quadrant \fB1\fR portion of VIRT
-   RES  \- anything occupying \*(MP (all quadrants)
+   DATA \- the entire quadrant \fB1\fR portion of VIRT plus all
+          explicit mmap file-backed pages of quadrant \fB3\fR
+   RES  \- anything occupying \*(MP which, beginning with
+          Linux-4.5, is the sum of the following three fields:
+          RSan \- quadrant \fB1\fR pages, which include any
+                 former quadrant \fB3\fR pages if modified
+          RSfd \- quadrant \fB3\fR and quadrant \fB4\fR pages
+          RSsh \- quadrant \fB2\fR pages
+   RSlk \- subset of RES which cannot be swapped out (any quadrant)
    SHR  \- subset of RES (excludes \fB1\fR, includes all \fB2\fR & \fB4\fR, some \fB3\fR)
-   SWAP \- excludes quadrant \fB4\fR
+   SWAP \- potentially any quadrant except \fB4\fR
    USED \- simply the sum of RES and SWAP
    VIRT \- everything in-use and/or reserved (all quadrants)
 .fi
@@ -684,7 +692,7 @@ any truncated data.
 
 .TP 4
  7.\fB DATA \*(Em Data + Stack Size (KiB) \fR
-The amount of private anonymous memory \fIreserved\fR by a process.
+The amount of private memory \fIreserved\fR by a process.
 It is also known as the Data Resident Set or DRS.
 Such memory may not yet be mapped to \*(MP (RES) but will always be
 included in the \*(MV (VIRT) amount.
@@ -781,6 +789,8 @@ And while the 2.6 kernel can be made mostly preemptible, it is not always so.
 19.\fB RES \*(Em Resident Memory Size (KiB) \fR
 A subset of the virtual address space (VIRT) representing the non-swapped
 \*(MP a task is currently using.
+It is also the sum of the RSan, RSfd and RSsh fields.
+
 It can include private anonymous pages, private pages mapped to files
 (including program images and shared libraries) plus shared anonymous pages.
 All such memory is backed by the \*(MS represented separately under SWAP.
@@ -791,15 +801,35 @@ modified, act as a dedicated \*(MS and thus will never impact SWAP.
 \*(XX.
 
 .TP 4
-20.\fB RUID \*(Em Real User Id \fR
+20.\fB RSan \*(Em Resident Anonymous Memory Size (KiB) \fR
+A subset of resident memory (RES) representing private pages not
+mapped to a file.
+
+.TP 4
+21.\fB RSfd \*(Em Resident File-Backed Memory Size (KiB) \fR
+A subset of resident memory (RES) representing the implicitly shared
+pages supporting program images and shared libraries.
+It also includes explicit file mappings, both private and shared.
+
+.TP 4
+22.\fB RSlk \*(Em Resident Locked Memory Size (KiB) \fR
+A subset of resident memory (RES) which cannot be swapped out.
+
+.TP 4
+23.\fB RSsh \*(Em Resident Shared Memory Size (KiB) \fR
+A subset of resident memory (RES) representing the explicitly shared
+anonymous shm*/mmap pages.
+
+.TP 4
+24.\fB RUID \*(Em Real User Id \fR
 The\fI real\fR user ID.
 
 .TP 4
-21.\fB RUSER \*(Em Real User Name \fR
+25.\fB RUSER \*(Em Real User Name \fR
 The\fI real\fR user name.
 
 .TP 4
-22.\fB S \*(Em Process Status \fR
+26.\fB S \*(Em Process Status \fR
 The status of the task which can be one of:
     \fBD\fR = uninterruptible sleep
     \fBR\fR = running
@@ -814,16 +844,16 @@ Even without a true SMP machine, you may see numerous tasks in this state
 depending on \*(We's delay interval and nice value.
 
 .TP 4
-23.\fB SHR \*(Em Shared Memory Size (KiB) \fR
+27.\fB SHR \*(Em Shared Memory Size (KiB) \fR
 A subset of resident memory (RES) that may be used by other processes.
 It will include shared anonymous pages and shared file-backed pages.
-It also includes \fIprivate\fR pages mapped to files representing
+It also includes private pages mapped to files representing
 program images and shared libraries.
 
 \*(XX.
 
 .TP 4
-24.\fB SID \*(Em Session Id \fR
+28.\fB SID \*(Em Session Id \fR
 A session is a collection of process groups (\*(Xa PGRP),
 usually established by the login shell.
 A newly forked process joins the session of its creator.
@@ -832,11 +862,11 @@ member of the session, called the session leader, which is usually the
 login shell.
 
 .TP 4
-25.\fB SUID \*(Em Saved User Id \fR
+29.\fB SUID \*(Em Saved User Id \fR
 The\fI saved\fR user ID.
 
 .TP 4
-26.\fB SUPGIDS \*(Em Supplementary Group IDs \fR
+30.\fB SUPGIDS \*(Em Supplementary Group IDs \fR
 The IDs of any supplementary group(s) established at login or
 inherited from a task's parent.
 They are displayed in a comma delimited list.
@@ -849,7 +879,7 @@ Even so, such variable width fields could still suffer truncation.
 any truncated data.
 
 .TP 4
-27.\fB SUPGRPS \*(Em Supplementary Group Names \fR
+31.\fB SUPGRPS \*(Em Supplementary Group Names \fR
 The names of any supplementary group(s) established at login or
 inherited from a task's parent.
 They are displayed in a comma delimited list.
@@ -862,24 +892,24 @@ Even so, such variable width fields could still suffer truncation.
 any truncated data.
 
 .TP 4
-28.\fB SUSER \*(Em Saved User Name \fR
+32.\fB SUSER \*(Em Saved User Name \fR
 The\fI saved\fR user name.
 
 .TP 4
-29.\fB SWAP \*(Em Swapped Size (KiB) \fR
+33.\fB SWAP \*(Em Swapped Size (KiB) \fR
 The formerly resident portion of a task's address space written
 to the \*(MS when \*(MP becomes over committed.
 
 \*(XX.
 
 .TP 4
-30.\fB TGID \*(Em Thread Group Id \fR
+34.\fB TGID \*(Em Thread Group Id \fR
 The ID of the thread group to which a task belongs.
 It is the PID of the thread group leader.
 In kernel terms, it represents those tasks that share an mm_struct.
 
 .TP 4
-31.\fB TIME \*(Em \*(PU Time \fR
+35.\fB TIME \*(Em \*(PU Time \fR
 Total \*(PU time the task has used since it started.
 When Cumulative mode is \*O, each process is listed with the \*(Pu
 time that it and its dead children have used.
@@ -887,19 +917,19 @@ You toggle Cumulative mode with `S', which is both a \*(CO and an \*(CI.
 \*(XC `S' \*(CI for additional information regarding this mode.
 
 .TP 4
-32.\fB TIME+ \*(Em \*(PU Time, hundredths \fR
+36.\fB TIME+ \*(Em \*(PU Time, hundredths \fR
 The same as TIME, but reflecting more granularity through hundredths
 of a second.
 
 .TP 4
-33.\fB TPGID \*(Em Tty Process Group Id \fR
+37.\fB TPGID \*(Em Tty Process Group Id \fR
 The process group ID of the foreground process for the connected tty,
 or \-1 if a process is not connected to a terminal.
 By convention, this value equals the process ID (\*(Xa PID) of the
 process group leader (\*(Xa PGRP).
 
 .TP 4
-34.\fB TTY \*(Em Controlling Tty \fR
+38.\fB TTY \*(Em Controlling Tty \fR
 The name of the controlling terminal.
 This is usually the device (serial port, pty, etc.) from which the
 process was started, and which it uses for input or output.
@@ -907,22 +937,22 @@ However, a task need not be associated with a terminal, in which case
 you'll see `?' displayed.
 
 .TP 4
-35.\fB UID \*(Em User Id \fR
+39.\fB UID \*(Em User Id \fR
 The\fI effective\fR user ID of the task's owner.
 
 .TP 4
-36.\fB USED \*(Em Memory in Use (KiB) \fR
+40.\fB USED \*(Em Memory in Use (KiB) \fR
 This field represents the non-swapped \*(MP a task is using (RES) plus
 the swapped out portion of its address space (SWAP).
 
 \*(XX.
 
 .TP 4
-37.\fB USER \*(Em User Name \fR
+41.\fB USER \*(Em User Name \fR
 The\fI effective\fR user name of the task's owner.
 
 .TP 4
-38.\fB VIRT \*(Em Virtual Memory Size (KiB) \fR
+42.\fB VIRT \*(Em Virtual Memory Size (KiB) \fR
 The total amount of \*(MV used by the task.
 It includes all code, data and shared libraries plus pages that have been
 swapped out and pages that have been mapped but not used.
@@ -930,20 +960,20 @@ swapped out and pages that have been mapped but not used.
 \*(XX.
 
 .TP 4
-39.\fB WCHAN \*(Em Sleeping in Function \fR
+43.\fB WCHAN \*(Em Sleeping in Function \fR
 This field will show the name of the kernel function in which the task
 is currently sleeping.
 Running tasks will display a dash (`\-') in this column.
 
 .TP 4
-40.\fB nDRT \*(Em Dirty Pages Count \fR
+44.\fB nDRT \*(Em Dirty Pages Count \fR
 The number of pages that have been modified since they were last
 written to \*(AS.
 Dirty pages must be written to \*(AS before the corresponding physical
 memory location can be used for some other virtual page.
 
 .TP 4
-41.\fB nMaj \*(Em Major Page Fault Count \fR
+45.\fB nMaj \*(Em Major Page Fault Count \fR
 The number of\fB major\fR page faults that have occurred for a task.
 A page fault occurs when a process attempts to read from or write to a
 virtual page that is not currently present in its address space.
@@ -951,7 +981,7 @@ A major page fault is when \*(AS access is involved in making that
 page available.
 
 .TP 4
-42.\fB nMin \*(Em Minor Page Fault count \fR
+46.\fB nMin \*(Em Minor Page Fault count \fR
 The number of\fB minor\fR page faults that have occurred for a task.
 A page fault occurs when a process attempts to read from or write to a
 virtual page that is not currently present in its address space.
@@ -959,50 +989,50 @@ A minor page fault does not involve \*(AS access in making that
 page available.
 
 .TP 4
-43.\fB nTH \*(Em Number of Threads \fR
+47.\fB nTH \*(Em Number of Threads \fR
 The number of threads associated with a process.
 
 .TP 4
-44.\fB nsIPC \*(Em IPC namespace \fR
+48.\fB nsIPC \*(Em IPC namespace \fR
 The Inode of the namespace used to isolate interprocess communication (IPC)
 resources such as System V IPC objects and POSIX message queues.
 
 .TP 4
-45.\fB nsMNT \*(Em MNT namespace \fR
+49.\fB nsMNT \*(Em MNT namespace \fR
 The Inode of the namespace used to isolate filesystem mount points thus
 offering different views of the filesystem hierarchy.
 
 .TP 4
-46.\fB nsNET \*(Em NET namespace \fR
+50.\fB nsNET \*(Em NET namespace \fR
 The Inode of the namespace used to isolate resources such as network devices,
 IP addresses, IP routing, port numbers, etc.
 
 .TP 4
-47.\fB nsPID \*(Em PID namespace \fR
+51.\fB nsPID \*(Em PID namespace \fR
 The Inode of the namespace used to isolate process ID numbers
 meaning they need not remain unique.
 Thus, each such namespace could have its own `init/systemd' (PID #1) to
 manage various initialization tasks and reap orphaned child processes.
 
 .TP 4
-48.\fB nsUSER \*(Em USER namespace \fR
+52.\fB nsUSER \*(Em USER namespace \fR
 The Inode of the namespace used to isolate the user and group ID numbers.
 Thus, a process could have a normal unprivileged user ID outside a user
 namespace while having a user ID of 0, with full root privileges, inside
 that namespace.
 
 .TP 4
-49.\fB nsUTS \*(Em UTS namespace \fR
+53.\fB nsUTS \*(Em UTS namespace \fR
 The Inode of the namespace used to isolate hostname and NIS domain name.
 UTS simply means "UNIX Time-sharing System".
 
 .TP 4
-50.\fB vMj \*(Em Major Page Fault Count Delta\fR
+54.\fB vMj \*(Em Major Page Fault Count Delta\fR
 The number of\fB major\fR page faults that have occurred since the
 last update (see nMaj).
 
 .TP 4
-51.\fB vMn \*(Em Minor Page Fault Count Delta\fR
+55.\fB vMn \*(Em Minor Page Fault Count Delta\fR
 The number of\fB minor\fR page faults that have occurred since the
 last update (see nMin).