3a. DESCRIPTIONS of Fields
Listed below are top's available process fields (columns). They
are shown in strict ascii alphabetical order. You may customize
their position and whether or not they are displayable with the
`f' (Fields Management) interactive command.
Any field is selectable as the sort field, and you control
whether they are sorted high-to-low or low-to-high. For
additional information on sort provisions see topic 4c. TASK AREA
Commands, SORTING.
The fields related to physical memory or virtual memory reference
`(KiB)' which is the unsuffixed display mode. Such fields may,
however, be scaled from KiB through PiB. That scaling is
influenced via the `e' interactive command or established for
startup through a build option.
1. %CPU
-- CPU Usage
The task's share of the elapsed CPU time since the last
screen update, expressed as a percentage of total CPU time.
In a true SMP environment, if a process is multi-threaded and
top is not operating in Threads mode, amounts greater than
100% may be reported. You toggle Threads mode with the `H'
interactive command.
Also for multi-processor environments, if Irix mode is Off,
top will operate in Solaris mode where a task's cpu usage
will be divided by the total number of CPUs. You toggle
Irix/Solaris modes with the `I' interactive command.
Note
: When running in forest view mode (`V') with children
collapsed (`v'), this field will also include the CPU time of
those unseen children. See topic 4c. TASK AREA Commands,
CONTENT for more information regarding the `V' and `v'
toggles.
2. %MEM
-- Memory Usage (RES)
A task's currently resident share of available physical
memory.
See `OVERVIEW, Linux Memory Types' for additional details.
3. CGNAME
-- Control Group Name
The name of the control group to which a process belongs, or
`-' if not applicable for that process.
This will typically be the last entry in the full list of
control groups as shown under the next heading (CGROUPS).
And as is true there, this field is also variable width.
4. CGROUPS
-- Control Groups
The names of the control group(s) to which a process belongs,
or `-' if not applicable for that process.
Control Groups provide for allocating resources (cpu, memory,
network bandwidth, etc.) among installation-defined groups of
processes. They enable fine-grained control over allocating,
denying, prioritizing, managing and monitoring those
resources.
Many different hierarchies of cgroups can exist
simultaneously on a system and each hierarchy is attached to
one or more subsystems. A subsystem represents a single
resource.
Note
: The CGROUPS field, unlike most columns, is not fixed-
width. When displayed, it plus any other variable width
columns will be allocated all remaining screen width (up to
the maximum 512 characters). Even so, such variable width
fields could still suffer truncation. See topic 5c.
SCROLLING a Window for additional information on accessing
any truncated data.
5. CODE
-- Code Size (KiB)
The amount of physical memory currently devoted to executable
code, also known as the Text Resident Set size or TRS.
See `OVERVIEW, Linux Memory Types' for additional details.
6. COMMAND
-- Command Name
or Command Line
Display the command line used to start a task or the name of
the associated program. You toggle between command line and
name with `c', which is both a command-line option and an
interactive command.
When you've chosen to display command lines, processes
without a command line (like kernel threads) will be shown
with only the program name in brackets, as in this example:
[kthreadd]
This field may also be impacted by the forest view display
mode. See the `V' interactive command for additional
information regarding that mode.
Note
: The COMMAND field, unlike most columns, is not fixed-
width. When displayed, it plus any other variable width
columns will be allocated all remaining screen width (up to
the maximum 512 characters). Even so, such variable width
fields could still suffer truncation. This is especially
true for this field when command lines are being displayed
(the `c' interactive command.) See topic 5c. SCROLLING a
Window for additional information on accessing any truncated
data.
7. DATA
-- Data + Stack Size (KiB)
The amount of private memory reserved by a process. It is
also known as the Data Resident Set or DRS. Such memory may
not yet be mapped to physical memory (RES) but will always be
included in the virtual memory (VIRT) amount.
See `OVERVIEW, Linux Memory Types' for additional details.
8. ENVIRON
-- Environment variables
Display all of the environment variables, if any, as seen by
the respective processes. These variables will be displayed
in their raw native order, not the sorted order you are
accustomed to seeing with an unqualified `set'.
Note
: The ENVIRON field, unlike most columns, is not fixed-
width. When displayed, it plus any other variable width
columns will be allocated all remaining screen width (up to
the maximum 512 characters). Even so, such variable width
fields could still suffer truncation. This is especially
true for this field. See topic 5c. SCROLLING a Window for
additional information on accessing any truncated data.
9. Flags
-- Task Flags
This column represents the task's current scheduling flags
which are expressed in hexadecimal notation and with zeros
suppressed. These flags are officially documented in
<linux/sched.h>.
10. GID
-- Group Id
The effective group ID.
11. GROUP
-- Group Name
The effective group name.
12. LXC
-- Lxc Container Name
The name of the lxc container within which a task is running.
If a process is not running inside a container, a dash (`-')
will be shown.
13. NI
-- Nice Value
The nice value of the task. A negative nice value means
higher priority, whereas a positive nice value means lower
priority. Zero in this field simply means priority will not
be adjusted in determining a task's dispatch-ability.
14. NU
-- Last known NUMA node
A number representing the NUMA node associated with the last
used processor (`P'). When -1 is displayed it means that
NUMA information is not available.
See the `'2' and `3' interactive commands for additional NUMA
provisions affecting the summary area.
15. OOMa
-- Out of Memory Adjustment Factor
The value, ranging from -1000 to +1000, added to the current
out of memory score (OOMs) which is then used to determine
which task to kill when memory is exhausted.
16. OOMs
-- Out of Memory Score
The value, ranging from 0 to +1000, used to select task(s) to
kill when memory is exhausted. Zero translates to `never
kill' whereas 1000 means `always kill'.
17. P
-- Last used CPU (SMP)
A number representing the last used processor. In a true SMP
environment this will likely change frequently since the
kernel intentionally uses weak affinity. Also, the very act
of running top may break this weak affinity and cause more
processes to change CPUs more often (because of the extra
demand for cpu time).
18. PGRP
-- Process Group Id
Every process is member of a unique process group which is
used for distribution of signals and by terminals to
arbitrate requests for their input and output. When a
process is created (forked), it becomes a member of the
process group of its parent. By convention, this value
equals the process ID (see PID) of the first member of a
process group, called the process group leader.
19. PID
-- Process Id
The task's unique process ID, which periodically wraps,
though never restarting at zero. In kernel terms, it is a
dispatchable entity defined by a task_struct.
This value may also be used as: a process group ID (see
PGRP); a session ID for the session leader (see SID); a
thread group ID for the thread group leader (see TGID); and a
TTY process group ID for the process group leader (see
TPGID).
20. PPID
-- Parent Process Id
The process ID (pid) of a task's parent.
21. PR
-- Priority
The scheduling priority of the task. If you see `rt' in this
field, it means the task is running under real time
scheduling priority.
Under linux, real time priority is somewhat misleading since
traditionally the operating itself was not preemptible. And
while the 2.6 kernel can be made mostly preemptible, it is
not always so.
22. RES
-- Resident Memory Size (KiB)
A subset of the virtual address space (VIRT) representing the
non-swapped physical memory 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
swap file represented separately under SWAP.
Lastly, this field may also include shared file-backed pages
which, when modified, act as a dedicated swap file and thus
will never impact SWAP.
See `OVERVIEW, Linux Memory Types' for additional details.
23. RSan
-- Resident Anonymous Memory Size (KiB)
A subset of resident memory (RES) representing private pages
not mapped to a file.
24. RSfd
-- Resident File-Backed Memory Size (KiB)
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.
25. RSlk
-- Resident Locked Memory Size (KiB)
A subset of resident memory (RES) which cannot be swapped
out.
26. RSsh
-- Resident Shared Memory Size (KiB)
A subset of resident memory (RES) representing the explicitly
shared anonymous shm*/mmap pages.
27. RUID
-- Real User Id
The real user ID.
28. RUSER
-- Real User Name
The real user name.
29. S
-- Process Status
The status of the task which can be one of:
D
= uninterruptible sleep
I
= idle
R
= running
S
= sleeping
T
= stopped by job control signal
t
= stopped by debugger during trace
Z
= zombie
Tasks shown as running should be more properly thought of as
ready to run -- their task_struct is simply represented on
the Linux run-queue. Even without a true SMP machine, you
may see numerous tasks in this state depending on top's delay
interval and nice value.
30. SHR
-- Shared Memory Size (KiB)
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 private pages mapped to
files representing program images and shared libraries.
See `OVERVIEW, Linux Memory Types' for additional details.
31. SID
-- Session Id
A session is a collection of process groups (see PGRP),
usually established by the login shell. A newly forked
process joins the session of its creator. By convention,
this value equals the process ID (see PID) of the first
member of the session, called the session leader, which is
usually the login shell.
32. SUID
-- Saved User Id
The saved user ID.
33. SUPGIDS
-- Supplementary Group IDs
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.
Note
: The SUPGIDS field, unlike most columns, is not fixed-
width. When displayed, it plus any other variable width
columns will be allocated all remaining screen width (up to
the maximum 512 characters). Even so, such variable width
fields could still suffer truncation. See topic 5c.
SCROLLING a Window for additional information on accessing
any truncated data.
34. SUPGRPS
-- Supplementary Group Names
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.
Note
: The SUPGRPS field, unlike most columns, is not fixed-
width. When displayed, it plus any other variable width
columns will be allocated all remaining screen width (up to
the maximum 512 characters). Even so, such variable width
fields could still suffer truncation. See topic 5c.
SCROLLING a Window for additional information on accessing
any truncated data.
35. SUSER
-- Saved User Name
The saved user name.
36. SWAP
-- Swapped Size (KiB)
The formerly resident portion of a task's address space
written to the swap file when physical memory becomes over
committed.
See `OVERVIEW, Linux Memory Types' for additional details.
37. TGID
-- Thread Group Id
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.
38. TIME
-- CPU Time
Total CPU time the task has used since it started. When
Cumulative mode is On, each process is listed with the cpu
time that it and its dead children have used. You toggle
Cumulative mode with `S', which is both a command-line option
and an interactive command. See the `S' interactive command
for additional information regarding this mode.
39. TIME+
-- CPU Time, hundredths
The same as TIME, but reflecting more granularity through
hundredths of a second.
40. TPGID
-- Tty Process Group Id
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
(see PID) of the process group leader (see PGRP).
41. TTY
-- Controlling Tty
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. However, a
task need not be associated with a terminal, in which case
you'll see `?' displayed.
42. UID
-- User Id
The effective user ID of the task's owner.
43. USED
-- Memory in Use (KiB)
This field represents the non-swapped physical memory a task
is using (RES) plus the swapped out portion of its address
space (SWAP).
See `OVERVIEW, Linux Memory Types' for additional details.
44. USER
-- User Name
The effective user name of the task's owner.
45. VIRT
-- Virtual Memory Size (KiB)
The total amount of virtual memory 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.
See `OVERVIEW, Linux Memory Types' for additional details.
46. WCHAN
-- Sleeping in Function
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.
47. nDRT
-- Dirty Pages Count
The number of pages that have been modified since they were
last written to auxiliary storage. Dirty pages must be
written to auxiliary storage before the corresponding
physical memory location can be used for some other virtual
page.
This field was deprecated with linux 2.6 and is always zero.
48. nMaj
-- Major Page Fault Count
The number of major
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. A major page fault is when auxiliary
storage access is involved in making that page available.
49. nMin
-- Minor Page Fault count
The number of minor
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. A minor page fault does not involve
auxiliary storage access in making that page available.
50. nTH
-- Number of Threads
The number of threads associated with a process.
51. nsIPC
-- IPC namespace
The Inode of the namespace used to isolate interprocess
communication (IPC) resources such as System V IPC objects
and POSIX message queues.
52. nsMNT
-- MNT namespace
The Inode of the namespace used to isolate filesystem mount
points thus offering different views of the filesystem
hierarchy.
53. nsNET
-- NET namespace
The Inode of the namespace used to isolate resources such as
network devices, IP addresses, IP routing, port numbers, etc.
54. nsPID
-- PID namespace
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.
55. nsUSER
-- USER namespace
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.
56. nsUTS
-- UTS namespace
The Inode of the namespace used to isolate hostname and NIS
domain name. UTS simply means "UNIX Time-sharing System".
57. vMj
-- Major Page Fault Count Delta
The number of major
page faults that have occurred since the
last update (see nMaj).
58. vMn
-- Minor Page Fault Count Delta
The number of minor
page faults that have occurred since the
last update (see nMin).
3b. MANAGING Fields
After pressing the interactive command `f' (Fields Management)
you will be presented with a screen showing: 1) the `current'
window name; 2) the designated sort field; 3) all fields in their
current order along with descriptions. Entries marked with an
asterisk are the currently displayed fields, screen width
permitting.
• As the on screen instructions indicate, you navigate among
the fields with the Up
and Down
arrow keys. The PgUp,
PgDn, Home and End keys can also be used to quickly reach
the first or last available field.
• The Right
arrow key selects a field for repositioning and
the Left
arrow key or the <Enter
> key commits that field's
placement.
• The `d
' key or the <Space
> bar toggles a field's display
status, and thus the presence or absence of the asterisk.
• The `s
' key designates a field as the sort field. See
topic 4c. TASK AREA Commands, SORTING for additional
information regarding your selection of a sort field.
• The `a
' and `w
' keys can be used to cycle through all
available windows and the `q
' or <Esc
> keys exit Fields
Management.
The Fields Management screen can also be used to change the
`current' window/field group in either full-screen mode or
alternate-display mode. Whatever was targeted when `q' or <Esc>
was pressed will be made current as you return to the top
display. See topic 5. ALTERNATE-DISPLAY Provisions and the `g'
interactive command for insight into `current' windows and field
groups.
Note
: Any window that has been scrolled horizontally will be
reset if any field changes are made via the Fields Management
screen. Any vertical scrolled position, however, will not be
affected. See topic 5c. SCROLLING a Window for additional
information regarding vertical and horizontal scrolling.