summaryrefslogtreecommitdiffstats
path: root/man5/proc.5
diff options
context:
space:
mode:
Diffstat (limited to 'man5/proc.5')
-rw-r--r--man5/proc.56962
1 files changed, 0 insertions, 6962 deletions
diff --git a/man5/proc.5 b/man5/proc.5
deleted file mode 100644
index 723154edb..000000000
--- a/man5/proc.5
+++ /dev/null
@@ -1,6962 +0,0 @@
-'\" t
-.\" Copyright (C) 1994, 1995 by Daniel Quinlan (quinlan@yggdrasil.com)
-.\" and Copyright (C) 2002-2008,2017 Michael Kerrisk <mtk.manpages@gmail.com>
-.\" with networking additions from Alan Cox (A.Cox@swansea.ac.uk)
-.\" and scsi additions from Michael Neuffer (neuffer@mail.uni-mainz.de)
-.\" and sysctl additions from Andries Brouwer (aeb@cwi.nl)
-.\" and System V IPC (as well as various other) additions from
-.\" Michael Kerrisk <mtk.manpages@gmail.com>
-.\"
-.\" SPDX-License-Identifier: GPL-2.0-or-later
-.\"
-.\" Modified 1995-05-17 by faith@cs.unc.edu
-.\" Minor changes by aeb and Marty Leisner (leisner@sdsp.mc.xerox.com).
-.\" Modified 1996-04-13, 1996-07-22 by aeb@cwi.nl
-.\" Modified 2001-12-16 by rwhron@earthlink.net
-.\" Modified 2002-07-13 by jbelton@shaw.ca
-.\" Modified 2002-07-22, 2003-05-27, 2004-04-06, 2004-05-25
-.\" by Michael Kerrisk <mtk.manpages@gmail.com>
-.\" 2004-11-17, mtk -- updated notes on /proc/loadavg
-.\" 2004-12-01, mtk, rtsig-max and rtsig-nr went away in Linux 2.6.8
-.\" 2004-12-14, mtk, updated 'statm', and fixed error in order of list
-.\" 2005-05-12, mtk, updated 'stat'
-.\" 2005-07-13, mtk, added /proc/sys/fs/mqueue/*
-.\" 2005-09-16, mtk, Added /proc/sys/fs/suid_dumpable
-.\" 2005-09-19, mtk, added /proc/zoneinfo
-.\" 2005-03-01, mtk, moved /proc/sys/fs/mqueue/* material to mq_overview.7.
-.\" 2008-06-05, mtk, Added /proc/[pid]/oom_score, /proc/[pid]/oom_adj,
-.\" /proc/[pid]/limits, /proc/[pid]/mountinfo, /proc/[pid]/mountstats,
-.\" and /proc/[pid]/fdinfo/*.
-.\" 2008-06-19, mtk, Documented /proc/[pid]/status.
-.\" 2008-07-15, mtk, added /proc/config.gz
-.\"
-.\" FIXME cross check against Documentation/filesystems/proc.txt
-.\" to see what information could be imported from that file
-.\" into this file.
-.\"
-.TH proc 5 (date) "Linux man-pages (unreleased)"
-.SH NAME
-proc \- process information, system information, and sysctl pseudo-filesystem
-.SH DESCRIPTION
-The
-.B proc
-filesystem is a pseudo-filesystem which provides an interface to
-kernel data structures.
-It is commonly mounted at
-.IR /proc .
-Typically, it is mounted automatically by the system,
-but it can also be mounted manually using a command such as:
-.PP
-.in +4n
-.EX
-mount \-t proc proc /proc
-.EE
-.in
-.PP
-Most of the files in the
-.B proc
-filesystem are read-only,
-but some files are writable, allowing kernel variables to be changed.
-.\"
-.SS Mount options
-The
-.B proc
-filesystem supports the following mount options:
-.TP
-.BR hidepid "=\fIn\fP (since Linux 3.3)"
-.\" commit 0499680a42141d86417a8fbaa8c8db806bea1201
-This option controls who can access the information in
-.IR /proc/ pid
-directories.
-The argument,
-.IR n ,
-is one of the following values:
-.RS
-.TP 4
-0
-Everybody may access all
-.IR /proc/ pid
-directories.
-This is the traditional behavior,
-and the default if this mount option is not specified.
-.TP
-1
-Users may not access files and subdirectories inside any
-.IR /proc/ pid
-directories but their own (the
-.IR /proc/ pid
-directories themselves remain visible).
-Sensitive files such as
-.IR /proc/ pid /cmdline
-and
-.IR /proc/ pid /status
-are now protected against other users.
-This makes it impossible to learn whether any user is running a
-specific program
-(so long as the program doesn't otherwise reveal itself by its behavior).
-.\" As an additional bonus, since
-.\" .IR /proc/[pid]/cmdline
-.\" is inaccessible for other users,
-.\" poorly written programs passing sensitive information via
-.\" program arguments are now protected against local eavesdroppers.
-.TP
-2
-As for mode 1, but in addition the
-.IR /proc/ pid
-directories belonging to other users become invisible.
-This means that
-.IR /proc/ pid
-entries can no longer be used to discover the PIDs on the system.
-This doesn't hide the fact that a process with a specific PID value exists
-(it can be learned by other means, for example, by "kill \-0 $PID"),
-but it hides a process's UID and GID,
-which could otherwise be learned by employing
-.BR stat (2)
-on a
-.IR /proc/ pid
-directory.
-This greatly complicates an attacker's task of gathering
-information about running processes (e.g., discovering whether
-some daemon is running with elevated privileges,
-whether another user is running some sensitive program,
-whether other users are running any program at all, and so on).
-.RE
-.TP
-.BR gid "=\fIgid\fP (since Linux 3.3)"
-.\" commit 0499680a42141d86417a8fbaa8c8db806bea1201
-Specifies the ID of a group whose members are authorized to
-learn process information otherwise prohibited by
-.B hidepid
-(i.e., users in this group behave as though
-.I /proc
-was mounted with
-.IR hidepid=0 ).
-This group should be used instead of approaches such as putting
-nonroot users into the
-.BR sudoers (5)
-file.
-.\"
-.SS Overview
-Underneath
-.IR /proc ,
-there are the following general groups of files and subdirectories:
-.TP
-.IR /proc/ "pid subdirectories"
-Each one of these subdirectories contains files and subdirectories
-exposing information about the process with the corresponding process ID.
-.IP
-Underneath each of the
-.IR /proc/ pid
-directories, a
-.I task
-subdirectory contains subdirectories of the form
-.IR task/ tid,
-which contain corresponding information about each of the threads
-in the process, where
-.I tid
-is the kernel thread ID of the thread.
-.IP
-The
-.IR /proc/ pid
-subdirectories are visible when iterating through
-.I /proc
-with
-.BR getdents (2)
-(and thus are visible when one uses
-.BR ls (1)
-to view the contents of
-.IR /proc ).
-.TP
-.IR /proc/ "tid subdirectories"
-Each one of these subdirectories contains files and subdirectories
-exposing information about the thread with the corresponding thread ID.
-The contents of these directories are the same as the corresponding
-.IR /proc/ pid /task/ tid
-directories.
-.IP
-The
-.IR /proc/ tid
-subdirectories are
-.I not
-visible when iterating through
-.I /proc
-with
-.BR getdents (2)
-(and thus are
-.I not
-visible when one uses
-.BR ls (1)
-to view the contents of
-.IR /proc ).
-.TP
-.I /proc/self
-When a process accesses this magic symbolic link,
-it resolves to the process's own
-.IR /proc/ pid
-directory.
-.TP
-.I /proc/thread\-self
-When a thread accesses this magic symbolic link,
-it resolves to the process's own
-.IR /proc/self/task/ tid
-directory.
-.TP
-.I /proc/[a\-z]*
-Various other files and subdirectories under
-.I /proc
-expose system-wide information.
-.PP
-All of the above are described in more detail below.
-.\"
-.SS Files and directories
-The following list provides details of many of the files and directories
-under the
-.I /proc
-hierarchy.
-.TP
-.IR /proc/ pid
-There is a numerical subdirectory for each running process; the
-subdirectory is named by the process ID.
-Each
-.IR /proc/ pid
-subdirectory contains the pseudo-files and directories described below.
-.IP
-The files inside each
-.IR /proc/ pid
-directory are normally owned by the effective user and
-effective group ID of the process.
-However, as a security measure, the ownership is made
-.I root:root
-if the process's "dumpable" attribute is set to a value other than 1.
-.IP
-Before Linux 4.11,
-.\" commit 68eb94f16227336a5773b83ecfa8290f1d6b78ce
-.I root:root
-meant the "global" root user ID and group ID
-(i.e., UID 0 and GID 0 in the initial user namespace).
-Since Linux 4.11,
-if the process is in a noninitial user namespace that has a
-valid mapping for user (group) ID 0 inside the namespace, then
-the user (group) ownership of the files under
-.IR /proc/ pid
-is instead made the same as the root user (group) ID of the namespace.
-This means that inside a container,
-things work as expected for the container "root" user.
-.IP
-The process's "dumpable" attribute may change for the following reasons:
-.RS
-.IP \[bu] 3
-The attribute was explicitly set via the
-.BR prctl (2)
-.B PR_SET_DUMPABLE
-operation.
-.IP \[bu]
-The attribute was reset to the value in the file
-.I /proc/sys/fs/suid_dumpable
-(described below), for the reasons described in
-.BR prctl (2).
-.RE
-.IP
-Resetting the "dumpable" attribute to 1 reverts the ownership of the
-.IR /proc/ pid /*
-files to the process's effective UID and GID.
-Note, however, that if the effective UID or GID is subsequently modified,
-then the "dumpable" attribute may be reset, as described in
-.BR prctl (2).
-Therefore, it may be desirable to reset the "dumpable" attribute
-.I after
-making any desired changes to the process's effective UID or GID.
-.TP
-.IR /proc/ pid /attr
-.\" https://lwn.net/Articles/28222/
-.\" From: Stephen Smalley <sds@epoch.ncsc.mil>
-.\" To: LKML and others
-.\" Subject: [RFC][PATCH] Process Attribute API for Security Modules
-.\" Date: 08 Apr 2003 16:17:52 -0400
-.\"
-.\" http://www.nsa.gov/research/_files/selinux/papers/module/x362.shtml
-.\"
-The files in this directory provide an API for security modules.
-The contents of this directory are files that can be read and written
-in order to set security-related attributes.
-This directory was added to support SELinux,
-but the intention was that the API be general enough to support
-other security modules.
-For the purpose of explanation,
-examples of how SELinux uses these files are provided below.
-.IP
-This directory is present only if the kernel was configured with
-.BR CONFIG_SECURITY .
-.TP
-.IR /proc/ pid /attr/current " (since Linux 2.6.0)"
-The contents of this file represent the current
-security attributes of the process.
-.IP
-In SELinux, this file is used to get the security context of a process.
-Prior to Linux 2.6.11, this file could not be used to set the security
-context (a write was always denied), since SELinux limited process security
-transitions to
-.BR execve (2)
-(see the description of
-.IR /proc/ pid /attr/exec ,
-below).
-Since Linux 2.6.11, SELinux lifted this restriction and began supporting
-"set" operations via writes to this node if authorized by policy,
-although use of this operation is only suitable for applications that are
-trusted to maintain any desired separation between the old and new security
-contexts.
-.IP
-Prior to Linux 2.6.28, SELinux did not allow threads within a
-multithreaded process to set their security context via this node
-as it would yield an inconsistency among the security contexts of the
-threads sharing the same memory space.
-Since Linux 2.6.28, SELinux lifted
-this restriction and began supporting "set" operations for threads within
-a multithreaded process if the new security context is bounded by the old
-security context, where the bounded relation is defined in policy and
-guarantees that the new security context has a subset of the permissions
-of the old security context.
-.IP
-Other security modules may choose to support "set" operations via
-writes to this node.
-.TP
-.IR /proc/ pid /attr/exec " (since Linux 2.6.0)"
-This file represents the attributes to assign to the
-process upon a subsequent
-.BR execve (2).
-.IP
-In SELinux,
-this is needed to support role/domain transitions, and
-.BR execve (2)
-is the preferred point to make such transitions because it offers better
-control over the initialization of the process in the new security label
-and the inheritance of state.
-In SELinux, this attribute is reset on
-.BR execve (2)
-so that the new program reverts to the default behavior for any
-.BR execve (2)
-calls that it may make.
-In SELinux, a process can set
-only its own
-.IR /proc/ pid /attr/exec
-attribute.
-.TP
-.IR /proc/ pid /attr/fscreate " (since Linux 2.6.0)"
-This file represents the attributes to assign to files
-created by subsequent calls to
-.BR open (2),
-.BR mkdir (2),
-.BR symlink (2),
-and
-.BR mknod (2)
-.IP
-SELinux employs this file to support creation of a file
-(using the aforementioned system calls)
-in a secure state,
-so that there is no risk of inappropriate access being obtained
-between the time of creation and the time that attributes are set.
-In SELinux, this attribute is reset on
-.BR execve (2),
-so that the new program reverts to the default behavior for
-any file creation calls it may make, but the attribute will persist
-across multiple file creation calls within a program unless it is
-explicitly reset.
-In SELinux, a process can set only its own
-.IR /proc/ pid /attr/fscreate
-attribute.
-.TP
-.IR /proc/ pid /attr/keycreate " (since Linux 2.6.18)"
-.\" commit 4eb582cf1fbd7b9e5f466e3718a59c957e75254e
-If a process writes a security context into this file,
-all subsequently created keys
-.RB ( add_key (2))
-will be labeled with this context.
-For further information, see the kernel source file
-.I Documentation/security/keys/core.rst
-(or file
-.\" commit b68101a1e8f0263dbc7b8375d2a7c57c6216fb76
-.I Documentation/security/keys.txt
-between Linux 3.0 and Linux 4.13, or
-.\" commit d410fa4ef99112386de5f218dd7df7b4fca910b4
-.I Documentation/keys.txt
-before Linux 3.0).
-.TP
-.IR /proc/ pid /attr/prev " (since Linux 2.6.0)"
-This file contains the security context of the process before the last
-.BR execve (2);
-that is, the previous value of
-.IR /proc/ pid /attr/current .
-.TP
-.IR /proc/ pid /attr/socketcreate " (since Linux 2.6.18)"
-.\" commit 42c3e03ef6b298813557cdb997bd6db619cd65a2
-If a process writes a security context into this file,
-all subsequently created sockets will be labeled with this context.
-.TP
-.IR /proc/ pid /autogroup " (since Linux 2.6.38)"
-.\" commit 5091faa449ee0b7d73bc296a93bca9540fc51d0a
-See
-.BR sched (7).
-.TP
-.IR /proc/ pid /auxv " (since Linux 2.6.0)"
-.\" Precisely: Linux 2.6.0-test7
-This contains the contents of the ELF interpreter information passed
-to the process at exec time.
-The format is one \fIunsigned long\fP ID
-plus one \fIunsigned long\fP value for each entry.
-The last entry contains two zeros.
-See also
-.BR getauxval (3).
-.IP
-Permission to access this file is governed by a ptrace access mode
-.B PTRACE_MODE_READ_FSCREDS
-check; see
-.BR ptrace (2).
-.TP
-.IR /proc/ pid /cgroup " (since Linux 2.6.24)"
-See
-.BR cgroups (7).
-.TP
-.IR /proc/ pid /clear_refs " (since Linux 2.6.22)"
-.\" commit b813e931b4c8235bb42e301096ea97dbdee3e8fe (2.6.22)
-.\" commit 398499d5f3613c47f2143b8c54a04efb5d7a6da9 (2.6.32)
-.\" commit 040fa02077de01c7e08fa75be6125e4ca5636011 (3.11)
-.\"
-.\" "Clears page referenced bits shown in smaps output"
-.\" write-only, writable only by the owner of the process
-.IP
-This is a write-only file, writable only by owner of the process.
-.IP
-The following values may be written to the file:
-.RS
-.TP
-1 (since Linux 2.6.22)
-.\" Internally: CLEAR_REFS_ALL
-Reset the PG_Referenced and ACCESSED/YOUNG
-bits for all the pages associated with the process.
-(Before Linux 2.6.32, writing any nonzero value to this file
-had this effect.)
-.TP
-2 (since Linux 2.6.32)
-.\" Internally: CLEAR_REFS_ANON
-Reset the PG_Referenced and ACCESSED/YOUNG
-bits for all anonymous pages associated with the process.
-.TP
-3 (since Linux 2.6.32)
-.\" Internally: CLEAR_REFS_MAPPED
-Reset the PG_Referenced and ACCESSED/YOUNG
-bits for all file-mapped pages associated with the process.
-.RE
-.IP
-Clearing the PG_Referenced and ACCESSED/YOUNG bits provides a method
-to measure approximately how much memory a process is using.
-One first inspects the values in the "Referenced" fields
-for the VMAs shown in
-.IR /proc/ pid /smaps
-to get an idea of the memory footprint of the
-process.
-One then clears the PG_Referenced and ACCESSED/YOUNG bits
-and, after some measured time interval,
-once again inspects the values in the "Referenced" fields
-to get an idea of the change in memory footprint of the
-process during the measured interval.
-If one is interested only in inspecting the selected mapping types,
-then the value 2 or 3 can be used instead of 1.
-.IP
-Further values can be written to affect different properties:
-.RS
-.TP
-4 (since Linux 3.11)
-Clear the soft-dirty bit for all the pages associated with the process.
-.\" Internally: CLEAR_REFS_SOFT_DIRTY
-This is used (in conjunction with
-.IR /proc/ pid /pagemap )
-by the check-point restore system to discover which pages of a process
-have been dirtied since the file
-.IR /proc/ pid /clear_refs
-was written to.
-.TP
-5 (since Linux 4.0)
-.\" Internally: CLEAR_REFS_MM_HIWATER_RSS
-Reset the peak resident set size ("high water mark") to the process's
-current resident set size value.
-.RE
-.IP
-Writing any value to
-.IR /proc/ pid /clear_refs
-other than those listed above has no effect.
-.IP
-The
-.IR /proc/ pid /clear_refs
-file is present only if the
-.B CONFIG_PROC_PAGE_MONITOR
-kernel configuration option is enabled.
-.TP
-.IR /proc/ pid /cmdline
-This read-only file holds the complete command line for the process,
-unless the process is a zombie.
-.\" In Linux 2.3.26, this also used to be true if the process was swapped out.
-In the latter case, there is nothing in this file:
-that is, a read on this file will return 0 characters.
-.IP
-For processes which are still running,
-the command-line arguments appear in this file
-in the same layout as they do in process memory:
-If the process is well-behaved,
-it is a set of strings separated by null bytes (\[aq]\e0\[aq]),
-with a further null byte after the last string.
-.IP
-This is the common case,
-but processes have the freedom to
-override the memory region and
-break assumptions about the contents or format of the
-.IR /proc/ pid /cmdline
-file.
-.IP
-If, after an
-.BR execve (2),
-the process modifies its
-.I argv
-strings, those changes will show up here.
-This is not the same thing as modifying the
-.I argv
-array.
-.IP
-Furthermore, a process may change the memory location that this file refers via
-.BR prctl (2)
-operations such as
-.BR PR_SET_MM_ARG_START .
-.IP
-Think of this file as the command line that the process wants you to see.
-.TP
-.IR /proc/ pid /comm " (since Linux 2.6.33)"
-.\" commit 4614a696bd1c3a9af3a08f0e5874830a85b889d4
-This file exposes the process's
-.I comm
-value\[em]that is, the command name associated with the process.
-Different threads in the same process may have different
-.I comm
-values, accessible via
-.IR /proc/ pid /task/ tid /comm .
-A thread may modify its
-.I comm
-value, or that of any of other thread in the same thread group (see
-the discussion of
-.B CLONE_THREAD
-in
-.BR clone (2)),
-by writing to the file
-.IR /proc/self/task/ tid /comm .
-Strings longer than
-.B TASK_COMM_LEN
-(16) characters (including the terminating null byte) are silently truncated.
-.IP
-This file provides a superset of the
-.BR prctl (2)
-.B PR_SET_NAME
-and
-.B PR_GET_NAME
-operations, and is employed by
-.BR pthread_setname_np (3)
-when used to rename threads other than the caller.
-The value in this file is used for the
-.I %e
-specifier in
-.IR /proc/sys/kernel/core_pattern ;
-see
-.BR core (5).
-.TP
-.IR /proc/ pid /coredump_filter " (since Linux 2.6.23)"
-See
-.BR core (5).
-.TP
-.IR /proc/ pid /cpuset " (since Linux 2.6.12)"
-.\" and/proc/[pid]/task/[tid]/cpuset
-See
-.BR cpuset (7).
-.TP
-.IR /proc/ pid /cwd
-This is a symbolic link to the current working directory of the process.
-To find out the current working directory of process 20,
-for instance, you can do this:
-.IP
-.in +4n
-.EX
-.RB "$" " cd /proc/20/cwd; pwd \-P"
-.EE
-.in
-.IP
-.\" The following was still true as at kernel 2.6.13
-In a multithreaded process, the contents of this symbolic link
-are not available if the main thread has already terminated
-(typically by calling
-.BR pthread_exit (3)).
-.IP
-Permission to dereference or read
-.RB ( readlink (2))
-this symbolic link is governed by a ptrace access mode
-.B PTRACE_MODE_READ_FSCREDS
-check; see
-.BR ptrace (2).
-.TP
-.IR /proc/ pid /environ
-This file contains the initial environment that was set
-when the currently executing program was started via
-.BR execve (2).
-The entries are separated by null bytes (\[aq]\e0\[aq]),
-and there may be a null byte at the end.
-Thus, to print out the environment of process 1, you would do:
-.IP
-.in +4n
-.EX
-.RB "$" " cat /proc/1/environ | tr \[aq]\e000\[aq] \[aq]\en\[aq]"
-.EE
-.in
-.IP
-If, after an
-.BR execve (2),
-the process modifies its environment
-(e.g., by calling functions such as
-.BR putenv (3)
-or modifying the
-.BR environ (7)
-variable directly),
-this file will
-.I not
-reflect those changes.
-.IP
-Furthermore, a process may change the memory location that this file refers via
-.BR prctl (2)
-operations such as
-.BR PR_SET_MM_ENV_START .
-.IP
-Permission to access this file is governed by a ptrace access mode
-.B PTRACE_MODE_READ_FSCREDS
-check; see
-.BR ptrace (2).
-.TP
-.IR /proc/ pid /exe
-Under Linux 2.2 and later, this file is a symbolic link
-containing the actual pathname of the executed command.
-This symbolic link can be dereferenced normally; attempting to open
-it will open the executable.
-You can even type
-.IR /proc/ pid /exe
-to run another copy of the same executable that is being run by
-process
-.IR pid .
-If the pathname has been unlinked, the symbolic link will contain the
-string \[aq]\ (deleted)\[aq] appended to the original pathname.
-.\" The following was still true as at kernel 2.6.13
-In a multithreaded process, the contents of this symbolic link
-are not available if the main thread has already terminated
-(typically by calling
-.BR pthread_exit (3)).
-.IP
-Permission to dereference or read
-.RB ( readlink (2))
-this symbolic link is governed by a ptrace access mode
-.B PTRACE_MODE_READ_FSCREDS
-check; see
-.BR ptrace (2).
-.IP
-Under Linux 2.0 and earlier,
-.IR /proc/ pid /exe
-is a pointer to the binary which was executed,
-and appears as a symbolic link.
-A
-.BR readlink (2)
-call on this file under Linux 2.0 returns a string in the format:
-.IP
-.in +4n
-.EX
-[device]:inode
-.EE
-.in
-.IP
-For example, [0301]:1502 would be inode 1502 on device major 03 (IDE,
-MFM, etc. drives) minor 01 (first partition on the first drive).
-.IP
-.BR find (1)
-with the
-.I \-inum
-option can be used to locate the file.
-.TP
-.IR /proc/ pid /fd/
-This is a subdirectory containing one entry for each file which the
-process has open, named by its file descriptor, and which is a
-symbolic link to the actual file.
-Thus, 0 is standard input, 1 standard output, 2 standard error, and so on.
-.IP
-For file descriptors for pipes and sockets,
-the entries will be symbolic links whose content is the
-file type with the inode.
-A
-.BR readlink (2)
-call on this file returns a string in the format:
-.IP
-.in +4n
-.EX
-type:[inode]
-.EE
-.in
-.IP
-For example,
-.I socket:[2248868]
-will be a socket and its inode is 2248868.
-For sockets, that inode can be used to find more information
-in one of the files under
-.IR /proc/net/ .
-.IP
-For file descriptors that have no corresponding inode
-(e.g., file descriptors produced by
-.BR bpf (2),
-.BR epoll_create (2),
-.BR eventfd (2),
-.BR inotify_init (2),
-.BR perf_event_open (2),
-.BR signalfd (2),
-.BR timerfd_create (2),
-and
-.BR userfaultfd (2)),
-the entry will be a symbolic link with contents of the form
-.IP
-.in +4n
-.EX
-.RI anon_inode: file-type
-.EE
-.in
-.IP
-In many cases (but not all), the
-.I file-type
-is surrounded by square brackets.
-.IP
-For example, an epoll file descriptor will have a symbolic link
-whose content is the string
-.IR "anon_inode:[eventpoll]" .
-.IP
-.\"The following was still true as at kernel 2.6.13
-In a multithreaded process, the contents of this directory
-are not available if the main thread has already terminated
-(typically by calling
-.BR pthread_exit (3)).
-.IP
-Programs that take a filename as a command-line argument,
-but don't take input from standard input if no argument is supplied,
-and programs that write to a file named as a command-line argument,
-but don't send their output to standard output
-if no argument is supplied, can nevertheless be made to use
-standard input or standard output by using
-.IR /proc/ pid /fd
-files as command-line arguments.
-For example, assuming that
-.I \-i
-is the flag designating an input file and
-.I \-o
-is the flag designating an output file:
-.IP
-.in +4n
-.EX
-.RB "$" " foobar \-i /proc/self/fd/0 \-o /proc/self/fd/1 ..."
-.EE
-.in
-.IP
-and you have a working filter.
-.\" The following is not true in my tests (MTK):
-.\" Note that this will not work for
-.\" programs that seek on their files, as the files in the fd directory
-.\" are not seekable.
-.IP
-.I /proc/self/fd/N
-is approximately the same as
-.I /dev/fd/N
-in some UNIX and UNIX-like systems.
-Most Linux MAKEDEV scripts symbolically link
-.I /dev/fd
-to
-.IR /proc/self/fd ,
-in fact.
-.IP
-Most systems provide symbolic links
-.IR /dev/stdin ,
-.IR /dev/stdout ,
-and
-.IR /dev/stderr ,
-which respectively link to the files
-.IR 0 ,
-.IR 1 ,
-and
-.I 2
-in
-.IR /proc/self/fd .
-Thus the example command above could be written as:
-.IP
-.in +4n
-.EX
-.RB "$" " foobar \-i /dev/stdin \-o /dev/stdout ..."
-.EE
-.in
-.IP
-Permission to dereference or read
-.RB ( readlink (2))
-the symbolic links in this directory is governed by a ptrace access mode
-.B PTRACE_MODE_READ_FSCREDS
-check; see
-.BR ptrace (2).
-.IP
-Note that for file descriptors referring to inodes
-(pipes and sockets, see above),
-those inodes still have permission bits and ownership information
-distinct from those of the
-.IR /proc/ pid /fd
-entry,
-and that the owner may differ from the user and group IDs of the process.
-An unprivileged process may lack permissions to open them, as in this example:
-.IP
-.in +4n
-.EX
-.RB "$" " echo test | sudo \-u nobody cat"
-test
-.RB "$" " echo test | sudo \-u nobody cat /proc/self/fd/0"
-cat: /proc/self/fd/0: Permission denied
-.EE
-.in
-.IP
-File descriptor 0 refers to the pipe created by the shell
-and owned by that shell's user, which is not
-.IR nobody ,
-so
-.B cat
-does not have permission
-to create a new file descriptor to read from that inode,
-even though it can still read from its existing file descriptor 0.
-.TP
-.IR /proc/ pid /fdinfo/ " (since Linux 2.6.22)"
-This is a subdirectory containing one entry for each file which the
-process has open, named by its file descriptor.
-The files in this directory are readable only by the owner of the process.
-The contents of each file can be read to obtain information
-about the corresponding file descriptor.
-The content depends on the type of file referred to by the
-corresponding file descriptor.
-.IP
-For regular files and directories, we see something like:
-.IP
-.in +4n
-.EX
-.RB "$" " cat /proc/12015/fdinfo/4"
-pos: 1000
-flags: 01002002
-mnt_id: 21
-.EE
-.in
-.IP
-The fields are as follows:
-.RS
-.TP
-.I pos
-This is a decimal number showing the file offset.
-.TP
-.I flags
-This is an octal number that displays the
-file access mode and file status flags (see
-.BR open (2)).
-If the close-on-exec file descriptor flag is set, then
-.I flags
-will also include the value
-.BR O_CLOEXEC .
-.IP
-Before Linux 3.1,
-.\" commit 1117f72ea0217ba0cc19f05adbbd8b9a397f5ab7
-this field incorrectly displayed the setting of
-.B O_CLOEXEC
-at the time the file was opened,
-rather than the current setting of the close-on-exec flag.
-.TP
-.I
-.I mnt_id
-This field, present since Linux 3.15,
-.\" commit 49d063cb353265c3af701bab215ac438ca7df36d
-is the ID of the mount containing this file.
-See the description of
-.IR /proc/ pid /mountinfo .
-.RE
-.IP
-For eventfd file descriptors (see
-.BR eventfd (2)),
-we see (since Linux 3.8)
-.\" commit cbac5542d48127b546a23d816380a7926eee1c25
-the following fields:
-.IP
-.in +4n
-.EX
-pos: 0
-flags: 02
-mnt_id: 10
-eventfd\-count: 40
-.EE
-.in
-.IP
-.I eventfd\-count
-is the current value of the eventfd counter, in hexadecimal.
-.IP
-For epoll file descriptors (see
-.BR epoll (7)),
-we see (since Linux 3.8)
-.\" commit 138d22b58696c506799f8de759804083ff9effae
-the following fields:
-.IP
-.in +4n
-.EX
-pos: 0
-flags: 02
-mnt_id: 10
-tfd: 9 events: 19 data: 74253d2500000009
-tfd: 7 events: 19 data: 74253d2500000007
-.EE
-.in
-.IP
-Each of the lines beginning
-.I tfd
-describes one of the file descriptors being monitored via
-the epoll file descriptor (see
-.BR epoll_ctl (2)
-for some details).
-The
-.I tfd
-field is the number of the file descriptor.
-The
-.I events
-field is a hexadecimal mask of the events being monitored for this file
-descriptor.
-The
-.I data
-field is the data value associated with this file descriptor.
-.IP
-For signalfd file descriptors (see
-.BR signalfd (2)),
-we see (since Linux 3.8)
-.\" commit 138d22b58696c506799f8de759804083ff9effae
-the following fields:
-.IP
-.in +4n
-.EX
-pos: 0
-flags: 02
-mnt_id: 10
-sigmask: 0000000000000006
-.EE
-.in
-.IP
-.I sigmask
-is the hexadecimal mask of signals that are accepted via this
-signalfd file descriptor.
-(In this example, bits 2 and 3 are set, corresponding to the signals
-.B SIGINT
-and
-.BR SIGQUIT ;
-see
-.BR signal (7).)
-.IP
-For inotify file descriptors (see
-.BR inotify (7)),
-we see (since Linux 3.8)
-the following fields:
-.IP
-.in +4n
-.EX
-pos: 0
-flags: 00
-mnt_id: 11
-inotify wd:2 ino:7ef82a sdev:800001 mask:800afff ignored_mask:0 fhandle\-bytes:8 fhandle\-type:1 f_handle:2af87e00220ffd73
-inotify wd:1 ino:192627 sdev:800001 mask:800afff ignored_mask:0 fhandle\-bytes:8 fhandle\-type:1 f_handle:27261900802dfd73
-.EE
-.in
-.IP
-Each of the lines beginning with "inotify" displays information about
-one file or directory that is being monitored.
-The fields in this line are as follows:
-.RS
-.TP
-.I wd
-A watch descriptor number (in decimal).
-.TP
-.I ino
-The inode number of the target file (in hexadecimal).
-.TP
-.I sdev
-The ID of the device where the target file resides (in hexadecimal).
-.TP
-.I mask
-The mask of events being monitored for the target file (in hexadecimal).
-.RE
-.IP
-If the kernel was built with exportfs support, the path to the target
-file is exposed as a file handle, via three hexadecimal fields:
-.IR fhandle\-bytes ,
-.IR fhandle\-type ,
-and
-.IR f_handle .
-.IP
-For fanotify file descriptors (see
-.BR fanotify (7)),
-we see (since Linux 3.8)
-the following fields:
-.IP
-.in +4n
-.EX
-pos: 0
-flags: 02
-mnt_id: 11
-fanotify flags:0 event\-flags:88002
-fanotify ino:19264f sdev:800001 mflags:0 mask:1 ignored_mask:0 fhandle\-bytes:8 fhandle\-type:1 f_handle:4f261900a82dfd73
-.EE
-.in
-.IP
-The fourth line displays information defined when the fanotify group
-was created via
-.BR fanotify_init (2):
-.RS
-.TP
-.I flags
-The
-.I flags
-argument given to
-.BR fanotify_init (2)
-(expressed in hexadecimal).
-.TP
-.I event\-flags
-The
-.I event_f_flags
-argument given to
-.BR fanotify_init (2)
-(expressed in hexadecimal).
-.RE
-.IP
-Each additional line shown in the file contains information
-about one of the marks in the fanotify group.
-Most of these fields are as for inotify, except:
-.RS
-.TP
-.I mflags
-The flags associated with the mark
-(expressed in hexadecimal).
-.TP
-.I mask
-The events mask for this mark
-(expressed in hexadecimal).
-.TP
-.I ignored_mask
-The mask of events that are ignored for this mark
-(expressed in hexadecimal).
-.RE
-.IP
-For details on these fields, see
-.BR fanotify_mark (2).
-.IP
-For timerfd file descriptors (see
-.BR timerfd (2)),
-we see (since Linux 3.17)
-.\" commit af9c4957cf212ad9cf0bee34c95cb11de5426e85
-the following fields:
-.IP
-.in +4n
-.EX
-pos: 0
-flags: 02004002
-mnt_id: 13
-clockid: 0
-ticks: 0
-settime flags: 03
-it_value: (7695568592, 640020877)
-it_interval: (0, 0)
-.EE
-.in
-.RS
-.TP
-.I clockid
-This is the numeric value of the clock ID
-(corresponding to one of the
-.B CLOCK_*
-constants defined via
-.IR <time.h> )
-that is used to mark the progress of the timer (in this example, 0 is
-.BR CLOCK_REALTIME ).
-.TP
-.I ticks
-This is the number of timer expirations that have occurred,
-(i.e., the value that
-.BR read (2)
-on it would return).
-.TP
-.I settime flags
-This field lists the flags with which the timerfd was last armed (see
-.BR timerfd_settime (2)),
-in octal
-(in this example, both
-.B TFD_TIMER_ABSTIME
-and
-.B TFD_TIMER_CANCEL_ON_SET
-are set).
-.TP
-.I it_value
-This field contains the amount of time until the timer will next expire,
-expressed in seconds and nanoseconds.
-This is always expressed as a relative value,
-regardless of whether the timer was created using the
-.B TFD_TIMER_ABSTIME
-flag.
-.TP
-.I it_interval
-This field contains the interval of the timer,
-in seconds and nanoseconds.
-(The
-.I it_value
-and
-.I it_interval
-fields contain the values that
-.BR timerfd_gettime (2)
-on this file descriptor would return.)
-.RE
-.TP
-.IR /proc/ pid /gid_map " (since Linux 3.5)"
-See
-.BR user_namespaces (7).
-.TP
-.IR /proc/ pid /io " (since Linux 2.6.20)"
-.\" commit 7c3ab7381e79dfc7db14a67c6f4f3285664e1ec2
-This file contains I/O statistics for the process, for example:
-.IP
-.in +4n
-.EX
-.RB "#" " cat /proc/3828/io"
-rchar: 323934931
-wchar: 323929600
-syscr: 632687
-syscw: 632675
-read_bytes: 0
-write_bytes: 323932160
-cancelled_write_bytes: 0
-.EE
-.in
-.IP
-The fields are as follows:
-.RS
-.TP
-.IR rchar ": characters read"
-The number of bytes which this task has caused to be read from storage.
-This is simply the sum of bytes which this process passed to
-.BR read (2)
-and similar system calls.
-It includes things such as terminal I/O and
-is unaffected by whether or not actual
-physical disk I/O was required (the read might have been satisfied from
-pagecache).
-.TP
-.IR wchar ": characters written"
-The number of bytes which this task has caused, or shall cause to be written
-to disk.
-Similar caveats apply here as with
-.IR rchar .
-.TP
-.IR syscr ": read syscalls"
-Attempt to count the number of read I/O operations\[em]that is,
-system calls such as
-.BR read (2)
-and
-.BR pread (2).
-.TP
-.IR syscw ": write syscalls"
-Attempt to count the number of write I/O operations\[em]that is,
-system calls such as
-.BR write (2)
-and
-.BR pwrite (2).
-.TP
-.IR read_bytes ": bytes read"
-Attempt to count the number of bytes which this process really did cause to
-be fetched from the storage layer.
-This is accurate for block-backed filesystems.
-.TP
-.IR write_bytes ": bytes written"
-Attempt to count the number of bytes which this process caused to be sent to
-the storage layer.
-.TP
-.IR cancelled_write_bytes :
-The big inaccuracy here is truncate.
-If a process writes 1 MB to a file and then deletes the file,
-it will in fact perform no writeout.
-But it will have been accounted as having caused 1 MB of write.
-In other words: this field represents the number of bytes which this process
-caused to not happen, by truncating pagecache.
-A task can cause "negative" I/O too.
-If this task truncates some dirty pagecache,
-some I/O which another task has been accounted for
-(in its
-.IR write_bytes )
-will not be happening.
-.RE
-.IP
-.IR Note :
-In the current implementation, things are a bit racy on 32-bit systems:
-if process A reads process B's
-.IR /proc/ pid /io
-while process B is updating one of these 64-bit counters,
-process A could see an intermediate result.
-.IP
-Permission to access this file is governed by a ptrace access mode
-.B PTRACE_MODE_READ_FSCREDS
-check; see
-.BR ptrace (2).
-.TP
-.IR /proc/ pid /limits " (since Linux 2.6.24)"
-This file displays the soft limit, hard limit, and units of measurement
-for each of the process's resource limits (see
-.BR getrlimit (2)).
-Up to and including Linux 2.6.35,
-this file is protected to allow reading only by the real UID of the process.
-Since Linux 2.6.36,
-.\" commit 3036e7b490bf7878c6dae952eec5fb87b1106589
-this file is readable by all users on the system.
-.\" FIXME Describe /proc/[pid]/loginuid
-.\" Added in Linux 2.6.11; updating requires CAP_AUDIT_CONTROL
-.\" CONFIG_AUDITSYSCALL
-.TP
-.IR /proc/ pid /map_files/ " (since Linux 3.3)"
-.\" commit 640708a2cff7f81e246243b0073c66e6ece7e53e
-This subdirectory contains entries corresponding to memory-mapped
-files (see
-.BR mmap (2)).
-Entries are named by memory region start and end
-address pair (expressed as hexadecimal numbers),
-and are symbolic links to the mapped files themselves.
-Here is an example,
-with the output wrapped and reformatted to fit on an 80-column display:
-.IP
-.in +4n
-.EX
-.RB "#" " ls \-l /proc/self/map_files/"
-lr\-\-\-\-\-\-\-\-. 1 root root 64 Apr 16 21:31
- 3252e00000\-3252e20000 \-> /usr/lib64/ld\-2.15.so
-\&...
-.EE
-.in
-.IP
-Although these entries are present for memory regions that were
-mapped with the
-.B MAP_FILE
-flag, the way anonymous shared memory (regions created with the
-.B MAP_ANON | MAP_SHARED
-flags)
-is implemented in Linux
-means that such regions also appear on this directory.
-Here is an example where the target file is the deleted
-.I /dev/zero
-one:
-.IP
-.in +4n
-.EX
-lrw\-\-\-\-\-\-\-. 1 root root 64 Apr 16 21:33
- 7fc075d2f000\-7fc075e6f000 \-> /dev/zero (deleted)
-.EE
-.in
-.IP
-Permission to access this file is governed by a ptrace access mode
-.B PTRACE_MODE_READ_FSCREDS
-check; see
-.BR ptrace (2).
-.IP
-Until Linux 4.3,
-.\" commit bdb4d100afe9818aebd1d98ced575c5ef143456c
-this directory appeared only if the
-.B CONFIG_CHECKPOINT_RESTORE
-kernel configuration option was enabled.
-.IP
-Capabilities are required to read the contents of the symbolic links in
-this directory: before Linux 5.9, the reading process requires
-.B CAP_SYS_ADMIN
-in the initial user namespace;
-since Linux 5.9, the reading process must have either
-.B CAP_SYS_ADMIN
-or
-.B CAP_CHECKPOINT_RESTORE
-in the initial (i.e. root) user namespace.
-.TP
-.IR /proc/ pid /maps
-A file containing the currently mapped memory regions and their access
-permissions.
-See
-.BR mmap (2)
-for some further information about memory mappings.
-.IP
-Permission to access this file is governed by a ptrace access mode
-.B PTRACE_MODE_READ_FSCREDS
-check; see
-.BR ptrace (2).
-.IP
-The format of the file is:
-.IP
-.in +4n
-.EX
-.I "address perms offset dev inode pathname"
-00400000\-00452000 r\-xp 00000000 08:02 173521 /usr/bin/dbus\-daemon
-00651000\-00652000 r\-\-p 00051000 08:02 173521 /usr/bin/dbus\-daemon
-00652000\-00655000 rw\-p 00052000 08:02 173521 /usr/bin/dbus\-daemon
-00e03000\-00e24000 rw\-p 00000000 00:00 0 [heap]
-00e24000\-011f7000 rw\-p 00000000 00:00 0 [heap]
-\&...
-35b1800000\-35b1820000 r\-xp 00000000 08:02 135522 /usr/lib64/ld\-2.15.so
-35b1a1f000\-35b1a20000 r\-\-p 0001f000 08:02 135522 /usr/lib64/ld\-2.15.so
-35b1a20000\-35b1a21000 rw\-p 00020000 08:02 135522 /usr/lib64/ld\-2.15.so
-35b1a21000\-35b1a22000 rw\-p 00000000 00:00 0
-35b1c00000\-35b1dac000 r\-xp 00000000 08:02 135870 /usr/lib64/libc\-2.15.so
-35b1dac000\-35b1fac000 \-\-\-p 001ac000 08:02 135870 /usr/lib64/libc\-2.15.so
-35b1fac000\-35b1fb0000 r\-\-p 001ac000 08:02 135870 /usr/lib64/libc\-2.15.so
-35b1fb0000\-35b1fb2000 rw\-p 001b0000 08:02 135870 /usr/lib64/libc\-2.15.so
-\&...
-f2c6ff8c000\-7f2c7078c000 rw\-p 00000000 00:00 0 [stack:986]
-\&...
-7fffb2c0d000\-7fffb2c2e000 rw\-p 00000000 00:00 0 [stack]
-7fffb2d48000\-7fffb2d49000 r\-xp 00000000 00:00 0 [vdso]
-.EE
-.in
-.IP
-The
-.I address
-field is the address space in the process that the mapping occupies.
-The
-.I perms
-field is a set of permissions:
-.IP
-.in +4n
-.EX
-r = read
-w = write
-x = execute
-s = shared
-p = private (copy on write)
-.EE
-.in
-.IP
-The
-.I offset
-field is the offset into the file/whatever;
-.I dev
-is the device
-(major:minor);
-.I inode
-is the inode on that device.
-0 indicates that no inode is associated with the memory region,
-as would be the case with BSS (uninitialized data).
-.IP
-The
-.I pathname
-field will usually be the file that is backing the mapping.
-For ELF files,
-you can easily coordinate with the
-.I offset
-field by looking at the
-Offset field in the ELF program headers
-.RI ( "readelf\ \-l" ).
-.IP
-There are additional helpful pseudo-paths:
-.RS
-.TP
-.I [stack]
-The initial process's (also known as the main thread's) stack.
-.TP
-.IR [stack: tid ] " (from Linux 3.4 to Linux 4.4)"
-.\" commit b76437579d1344b612cf1851ae610c636cec7db0 (added)
-.\" commit 65376df582174ffcec9e6471bf5b0dd79ba05e4a (removed)
-A thread's stack (where the
-.I tid
-is a thread ID).
-It corresponds to the
-.IR /proc/ pid /task/ tid /
-path.
-This field was removed in Linux 4.5, since providing this information
-for a process with large numbers of threads is expensive.
-.TP
-.I [vdso]
-The virtual dynamically linked shared object.
-See
-.BR vdso (7).
-.TP
-.I [heap]
-The process's heap.
-.TP
-.IR [anon: name ] " (since Linux 5.17)"
-.\" Commit 9a10064f5625d5572c3626c1516e0bebc6c9fe9b
-A named private anonymous mapping.
-Set with
-.BR prctl (2)
-.BR PR_SET_VMA_ANON_NAME .
-.TP
-.IR [anon_shmem: name ] " (since Linux 6.2)"
-.\" Commit d09e8ca6cb93bb4b97517a18fbbf7eccb0e9ff43
-A named shared anonymous mapping.
-Set with
-.BR prctl (2)
-.BR PR_SET_VMA_ANON_NAME .
-.in
-.RE
-.IP
-If the
-.I pathname
-field is blank,
-this is an anonymous mapping as obtained via
-.BR mmap (2).
-There is no easy way to coordinate this back to a process's source,
-short of running it through
-.BR gdb (1),
-.BR strace (1),
-or similar.
-.IP
-.I pathname
-is shown unescaped except for newline characters, which are replaced
-with an octal escape sequence.
-As a result, it is not possible to determine whether the original
-pathname contained a newline character or the literal
-.I \e012
-character sequence.
-.IP
-If the mapping is file-backed and the file has been deleted, the string
-" (deleted)" is appended to the pathname.
-Note that this is ambiguous too.
-.IP
-Under Linux 2.0, there is no field giving pathname.
-.TP
-.IR /proc/ pid /mem
-This file can be used to access the pages of a process's memory through
-.BR open (2),
-.BR read (2),
-and
-.BR lseek (2).
-.IP
-Permission to access this file is governed by a ptrace access mode
-.B PTRACE_MODE_ATTACH_FSCREDS
-check; see
-.BR ptrace (2).
-.TP
-.IR /proc/ pid /mountinfo " (since Linux 2.6.26)"
-.\" This info adapted from Documentation/filesystems/proc.txt
-.\" commit 2d4d4864ac08caff5c204a752bd004eed4f08760
-This file contains information about mounts
-in the process's mount namespace (see
-.BR mount_namespaces (7)).
-It supplies various information
-(e.g., propagation state, root of mount for bind mounts,
-identifier for each mount and its parent) that is missing from the (older)
-.IR /proc/ pid /mounts
-file, and fixes various other problems with that file
-(e.g., nonextensibility,
-failure to distinguish per-mount versus per-superblock options).
-.IP
-The file contains lines of the form:
-.IP
-.EX
-36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 \- ext3 /dev/root rw,errors=continue
-(1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
-.EE
-.IP
-The numbers in parentheses are labels for the descriptions below:
-.RS 7
-.TP 5
-(1)
-mount ID: a unique ID for the mount (may be reused after
-.BR umount (2)).
-.TP
-(2)
-parent ID: the ID of the parent mount
-(or of self for the root of this mount namespace's mount tree).
-.IP
-If a new mount is stacked on top of a previous existing mount
-(so that it hides the existing mount) at pathname P,
-then the parent of the new mount is the previous mount at that location.
-Thus, when looking at all the mounts stacked at a particular location,
-the top-most mount is the one that is not the parent
-of any other mount at the same location.
-(Note, however, that this top-most mount will be accessible only if
-the longest path subprefix of P that is a mount point
-is not itself hidden by a stacked mount.)
-.IP
-If the parent mount lies outside the process's root directory (see
-.BR chroot (2)),
-the ID shown here won't have a corresponding record in
-.I mountinfo
-whose mount ID (field 1) matches this parent mount ID
-(because mounts that lie outside the process's root directory
-are not shown in
-.IR mountinfo ).
-As a special case of this point,
-the process's root mount may have a parent mount
-(for the initramfs filesystem) that lies
-.\" Miklos Szeredi, Nov 2017: The hidden one is the initramfs, I believe
-.\" mtk: In the initial mount namespace, this hidden ID has the value 0
-outside the process's root directory,
-and an entry for that mount will not appear in
-.IR mountinfo .
-.TP
-(3)
-major:minor: the value of
-.I st_dev
-for files on this filesystem (see
-.BR stat (2)).
-.TP
-(4)
-root: the pathname of the directory in the filesystem
-which forms the root of this mount.
-.TP
-(5)
-mount point: the pathname of the mount point relative
-to the process's root directory.
-.TP
-(6)
-mount options: per-mount options (see
-.BR mount (2)).
-.TP
-(7)
-optional fields: zero or more fields of the form "tag[:value]"; see below.
-.TP
-(8)
-separator: the end of the optional fields is marked by a single hyphen.
-.TP
-(9)
-filesystem type: the filesystem type in the form "type[.subtype]".
-.TP
-(10)
-mount source: filesystem-specific information or "none".
-.TP
-(11)
-super options: per-superblock options (see
-.BR mount (2)).
-.RE
-.IP
-Currently, the possible optional fields are
-.IR shared ,
-.IR master ,
-.IR propagate_from ,
-and
-.IR unbindable .
-See
-.BR mount_namespaces (7)
-for a description of these fields.
-Parsers should ignore all unrecognized optional fields.
-.IP
-For more information on mount propagation see
-.I Documentation/filesystems/sharedsubtree.rst
-(or
-.I Documentation/filesystems/sharedsubtree.txt
-before Linux 5.8)
-in the Linux kernel source tree.
-.TP
-.IR /proc/ pid /mounts " (since Linux 2.4.19)"
-This file lists all the filesystems currently mounted in the
-process's mount namespace (see
-.BR mount_namespaces (7)).
-The format of this file is documented in
-.BR fstab (5).
-.IP
-Since Linux 2.6.15, this file is pollable:
-after opening the file for reading, a change in this file
-(i.e., a filesystem mount or unmount) causes
-.BR select (2)
-to mark the file descriptor as having an exceptional condition, and
-.BR poll (2)
-and
-.BR epoll_wait (2)
-mark the file as having a priority event
-.RB ( POLLPRI ).
-(Before Linux 2.6.30,
-a change in this file was indicated by the file descriptor
-being marked as readable for
-.BR select (2),
-and being marked as having an error condition for
-.BR poll (2)
-and
-.BR epoll_wait (2).)
-.TP
-.IR /proc/ pid /mountstats " (since Linux 2.6.17)"
-This file exports information (statistics, configuration information)
-about the mounts in the process's mount namespace (see
-.BR mount_namespaces (7)).
-Lines in this file have the form:
-.IP
-.in +4n
-.EX
-device /dev/sda7 mounted on /home with fstype ext3 [stats]
-( 1 ) ( 2 ) (3 ) ( 4 )
-.EE
-.in
-.IP
-The fields in each line are:
-.RS 7
-.TP 5
-(1)
-The name of the mounted device
-(or "nodevice" if there is no corresponding device).
-.TP
-(2)
-The mount point within the filesystem tree.
-.TP
-(3)
-The filesystem type.
-.TP
-(4)
-Optional statistics and configuration information.
-Currently (as at Linux 2.6.26), only NFS filesystems export
-information via this field.
-.RE
-.IP
-This file is readable only by the owner of the process.
-.TP
-.IR /proc/ pid /net " (since Linux 2.6.25)"
-See the description of
-.IR /proc/net .
-.TP
-.IR /proc/ pid /ns/ " (since Linux 3.0)"
-.\" See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f
-This is a subdirectory containing one entry for each namespace that
-supports being manipulated by
-.BR setns (2).
-For more information, see
-.BR namespaces (7).
-.TP
-.IR /proc/ pid /numa_maps " (since Linux 2.6.14)"
-See
-.BR numa (7).
-.TP
-.IR /proc/ pid /oom_adj " (since Linux 2.6.11)"
-This file can be used to adjust the score used to select which process
-should be killed in an out-of-memory (OOM) situation.
-The kernel uses this value for a bit-shift operation of the process's
-.I oom_score
-value:
-valid values are in the range \-16 to +15,
-plus the special value \-17,
-which disables OOM-killing altogether for this process.
-A positive score increases the likelihood of this
-process being killed by the OOM-killer;
-a negative score decreases the likelihood.
-.IP
-The default value for this file is 0;
-a new process inherits its parent's
-.I oom_adj
-setting.
-A process must be privileged
-.RB ( CAP_SYS_RESOURCE )
-to update this file,
-although a process can always increase its own
-.I oom_adj
-setting (since Linux 2.6.20).
-.IP
-Since Linux 2.6.36, use of this file is deprecated in favor of
-.IR /proc/ pid /oom_score_adj ,
-and finally removed in Linux 3.7.
-.TP
-.IR /proc/ pid /oom_score " (since Linux 2.6.11)"
-.\" See mm/oom_kill.c::badness() before Linux 2.6.36 sources
-.\" See mm/oom_kill.c::oom_badness() after Linux 2.6.36
-.\" commit a63d83f427fbce97a6cea0db2e64b0eb8435cd10
-This file displays the current score that the kernel gives to
-this process for the purpose of selecting a process
-for the OOM-killer.
-A higher score means that the process is more likely to be
-selected by the OOM-killer.
-The basis for this score is the amount of memory used by the process,
-with increases (+) or decreases (\-) for factors including:
-.\" See mm/oom_kill.c::badness() before Linux 2.6.36 sources
-.\" See mm/oom_kill.c::oom_badness() after Linux 2.6.36
-.\" commit a63d83f427fbce97a6cea0db2e64b0eb8435cd10
-.RS
-.IP \[bu] 3
-whether the process is privileged (\-).
-.\" More precisely, if it has CAP_SYS_ADMIN or (pre 2.6.36) CAP_SYS_RESOURCE
-.RE
-.IP
-Before Linux 2.6.36
-the following factors were also used in the calculation of oom_score:
-.RS
-.IP \[bu] 3
-whether the process creates a lot of children using
-.BR fork (2)
-(+);
-.IP \[bu]
-whether the process has been running a long time,
-or has used a lot of CPU time (\-);
-.IP \[bu]
-whether the process has a low nice value (i.e., > 0) (+); and
-.IP \[bu]
-whether the process is making direct hardware access (\-).
-.\" More precisely, if it has CAP_SYS_RAWIO
-.RE
-.IP
-The
-.I oom_score
-also reflects the adjustment specified by the
-.I oom_score_adj
-or
-.I oom_adj
-setting for the process.
-.TP
-.IR /proc/ pid /oom_score_adj " (since Linux 2.6.36)"
-.\" Text taken from Linux 3.7 Documentation/filesystems/proc.txt
-This file can be used to adjust the badness heuristic used to select which
-process gets killed in out-of-memory conditions.
-.IP
-The badness heuristic assigns a value to each candidate task ranging from 0
-(never kill) to 1000 (always kill) to determine which process is targeted.
-The units are roughly a proportion along that range of
-allowed memory the process may allocate from,
-based on an estimation of its current memory and swap use.
-For example, if a task is using all allowed memory,
-its badness score will be 1000.
-If it is using half of its allowed memory, its score will be 500.
-.IP
-There is an additional factor included in the badness score: root
-processes are given 3% extra memory over other tasks.
-.IP
-The amount of "allowed" memory depends on the context
-in which the OOM-killer was called.
-If it is due to the memory assigned to the allocating task's cpuset
-being exhausted,
-the allowed memory represents the set of mems assigned to that
-cpuset (see
-.BR cpuset (7)).
-If it is due to a mempolicy's node(s) being exhausted,
-the allowed memory represents the set of mempolicy nodes.
-If it is due to a memory limit (or swap limit) being reached,
-the allowed memory is that configured limit.
-Finally, if it is due to the entire system being out of memory, the
-allowed memory represents all allocatable resources.
-.IP
-The value of
-.I oom_score_adj
-is added to the badness score before it
-is used to determine which task to kill.
-Acceptable values range from \-1000
-(OOM_SCORE_ADJ_MIN) to +1000 (OOM_SCORE_ADJ_MAX).
-This allows user space to control the preference for OOM-killing,
-ranging from always preferring a certain
-task or completely disabling it from OOM-killing.
-The lowest possible value, \-1000, is
-equivalent to disabling OOM-killing entirely for that task,
-since it will always report a badness score of 0.
-.IP
-Consequently, it is very simple for user space to define
-the amount of memory to consider for each task.
-Setting an
-.I oom_score_adj
-value of +500, for example,
-is roughly equivalent to allowing the remainder of tasks sharing the
-same system, cpuset, mempolicy, or memory controller resources
-to use at least 50% more memory.
-A value of \-500, on the other hand, would be roughly
-equivalent to discounting 50% of the task's
-allowed memory from being considered as scoring against the task.
-.IP
-For backward compatibility with previous kernels,
-.IR /proc/ pid /oom_adj
-can still be used to tune the badness score.
-Its value is
-scaled linearly with
-.IR oom_score_adj .
-.IP
-Writing to
-.IR /proc/ pid /oom_score_adj
-or
-.IR /proc/ pid /oom_adj
-will change the other with its scaled value.
-.IP
-The
-.BR choom (1)
-program provides a command-line interface for adjusting the
-.I oom_score_adj
-value of a running process or a newly executed command.
-.TP
-.IR /proc/ pid /pagemap " (since Linux 2.6.25)"
-This file shows the mapping of each of the process's virtual pages
-into physical page frames or swap area.
-It contains one 64-bit value for each virtual page,
-with the bits set as follows:
-.RS
-.TP
-63
-If set, the page is present in RAM.
-.TP
-62
-If set, the page is in swap space
-.TP
-61 (since Linux 3.5)
-The page is a file-mapped page or a shared anonymous page.
-.TP
-60\[en]58 (since Linux 3.11)
-Zero
-.\" Not quite true; see commit 541c237c0923f567c9c4cabb8a81635baadc713f
-.TP
-57 (since Linux 5.14)
-If set, the page is write-protected through
-.BR userfaultfd (2).
-.TP
-56 (since Linux 4.2)
-.\" commit 77bb499bb60f4b79cca7d139c8041662860fcf87
-.\" commit 83b4b0bb635eee2b8e075062e4e008d1bc110ed7
-The page is exclusively mapped.
-.TP
-55 (since Linux 3.11)
-PTE is soft-dirty
-(see the kernel source file
-.IR Documentation/admin\-guide/mm/soft\-dirty.rst ).
-.TP
-54\[en]0
-If the page is present in RAM (bit 63), then these bits
-provide the page frame number, which can be used to index
-.I /proc/kpageflags
-and
-.IR /proc/kpagecount .
-If the page is present in swap (bit 62),
-then bits 4\[en]0 give the swap type, and bits 54\[en]5 encode the swap offset.
-.RE
-.IP
-Before Linux 3.11, bits 60\[en]55 were
-used to encode the base-2 log of the page size.
-.IP
-To employ
-.IR /proc/ pid /pagemap
-efficiently, use
-.IR /proc/ pid /maps
-to determine which areas of memory are actually mapped and seek
-to skip over unmapped regions.
-.IP
-The
-.IR /proc/ pid /pagemap
-file is present only if the
-.B CONFIG_PROC_PAGE_MONITOR
-kernel configuration option is enabled.
-.IP
-Permission to access this file is governed by a ptrace access mode
-.B PTRACE_MODE_READ_FSCREDS
-check; see
-.BR ptrace (2).
-.TP
-.IR /proc/ pid /personality " (since Linux 2.6.28)"
-.\" commit 478307230810d7e2a753ed220db9066dfdf88718
-This read-only file exposes the process's execution domain, as set by
-.BR personality (2).
-The value is displayed in hexadecimal notation.
-.IP
-Permission to access this file is governed by a ptrace access mode
-.B PTRACE_MODE_ATTACH_FSCREDS
-check; see
-.BR ptrace (2).
-.TP
-.IR /proc/ pid /root
-UNIX and Linux support the idea of a per-process root of the
-filesystem, set by the
-.BR chroot (2)
-system call.
-This file is a symbolic link that points to the process's
-root directory, and behaves in the same way as
-.IR exe ,
-and
-.IR fd/* .
-.IP
-Note however that this file is not merely a symbolic link.
-It provides the same view of the filesystem (including namespaces and the
-set of per-process mounts) as the process itself.
-An example illustrates this point.
-In one terminal, we start a shell in new user and mount namespaces,
-and in that shell we create some new mounts:
-.IP
-.in +4n
-.EX
-$ \fBPS1=\[aq]sh1# \[aq] unshare \-Urnm\fP
-sh1# \fBmount \-t tmpfs tmpfs /etc\fP # Mount empty tmpfs at /etc
-sh1# \fBmount \-\-bind /usr /dev\fP # Mount /usr at /dev
-sh1# \fBecho $$\fP
-27123
-.EE
-.in
-.IP
-In a second terminal window, in the initial mount namespace,
-we look at the contents of the corresponding mounts in
-the initial and new namespaces:
-.IP
-.in +4n
-.EX
-$ \fBPS1=\[aq]sh2# \[aq] sudo sh\fP
-sh2# \fBls /etc | wc \-l\fP # In initial NS
-309
-sh2# \fBls /proc/27123/root/etc | wc \-l\fP # /etc in other NS
-0 # The empty tmpfs dir
-sh2# \fBls /dev | wc \-l\fP # In initial NS
-205
-sh2# \fBls /proc/27123/root/dev | wc \-l\fP # /dev in other NS
-11 # Actually bind
- # mounted to /usr
-sh2# \fBls /usr | wc \-l\fP # /usr in initial NS
-11
-.EE
-.in
-.IP
-.\" The following was still true as at kernel 2.6.13
-In a multithreaded process, the contents of the
-.IR /proc/ pid /root
-symbolic link are not available if the main thread has already terminated
-(typically by calling
-.BR pthread_exit (3)).
-.IP
-Permission to dereference or read
-.RB ( readlink (2))
-this symbolic link is governed by a ptrace access mode
-.B PTRACE_MODE_READ_FSCREDS
-check; see
-.BR ptrace (2).
-.TP
-.IR /proc/ pid /projid_map " (since Linux 3.7)"
-.\" commit f76d207a66c3a53defea67e7d36c3eb1b7d6d61d
-See
-.BR user_namespaces (7).
-.TP
-.IR /proc/ pid /seccomp " (Linux 2.6.12 to Linux 2.6.22)"
-This file can be used to read and change the process's
-secure computing (seccomp) mode setting.
-It contains the value 0 if the process is not in seccomp mode,
-and 1 if the process is in strict seccomp mode (see
-.BR seccomp (2)).
-Writing 1 to this file places the process irreversibly in strict seccomp mode.
-(Further attempts to write to the file fail with the
-.B EPERM
-error.)
-.IP
-In Linux 2.6.23,
-this file went away, to be replaced by the
-.BR prctl (2)
-.B PR_GET_SECCOMP
-and
-.B PR_SET_SECCOMP
-operations (and later by
-.BR seccomp (2)
-and the
-.I Seccomp
-field in
-.IR /proc/ pid /status ).
-.\" FIXME Describe /proc/[pid]/sessionid
-.\" commit 1e0bd7550ea9cf474b1ad4c6ff5729a507f75fdc
-.\" CONFIG_AUDITSYSCALL
-.\" Added in Linux 2.6.25; read-only; only readable by real UID
-.\"
-.\" FIXME Describe /proc/[pid]/sched
-.\" Added in Linux 2.6.23
-.\" CONFIG_SCHED_DEBUG, and additional fields if CONFIG_SCHEDSTATS
-.\" Displays various scheduling parameters
-.\" This file can be written, to reset stats
-.\" The set of fields exposed by this file have changed
-.\" significantly over time.
-.\" commit 43ae34cb4cd650d1eb4460a8253a8e747ba052ac
-.\"
-.\" FIXME Describe /proc/[pid]/schedstats and
-.\" /proc/[pid]/task/[tid]/schedstats
-.\" Added in Linux 2.6.9
-.\" CONFIG_SCHEDSTATS
-.TP
-.IR /proc/ pid /setgroups " (since Linux 3.19)"
-See
-.BR user_namespaces (7).
-.TP
-.IR /proc/ pid /smaps " (since Linux 2.6.14)"
-This file shows memory consumption for each of the process's mappings.
-(The
-.BR 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:
-.IP
-.in +4n
-.EX
-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
-.EE
-.in
-.IP
-The first of these lines shows the same information as is displayed
-for the mapping in
-.IR /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.
-.IP
-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.
-.IP
-The "Locked" indicates whether the mapping is locked in memory
-or not.
-.IP
-The "ProtectionKey" line (available since Linux 4.9, on x86 only)
-contains the memory protection key (see
-.BR pkeys (7))
-associated with the virtual memory area.
-This entry is present only if the kernel was built with the
-.B CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
-configuration option (since Linux 4.6).
-.IP
-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:
-.RS
-.IP
-.TS
-l l l.
-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)
-.TE
-.RE
-.IP
-The
-.IR /proc/ pid /smaps
-file is present only if the
-.B CONFIG_PROC_PAGE_MONITOR
-kernel configuration option is enabled.
-.TP
-.IR /proc/ pid /stack " (since Linux 2.6.29)"
-.\" 2ec220e27f5040aec1e88901c1b6ea3d135787ad
-This file provides a symbolic trace of the function calls in this
-process's kernel stack.
-This file is provided only if the kernel was built with the
-.B CONFIG_STACKTRACE
-configuration option.
-.IP
-Permission to access this file is governed by a ptrace access mode
-.B PTRACE_MODE_ATTACH_FSCREDS
-check; see
-.BR ptrace (2).
-.TP
-.IR /proc/ pid /stat
-Status information about the process.
-This is used by
-.BR ps (1).
-It is defined in the kernel source file
-.IR fs/proc/array.c "."
-.IP
-The fields, in order, with their proper
-.BR scanf (3)
-format specifiers, are listed below.
-Whether or not certain of these fields display valid information is governed by
-a ptrace access mode
-.BR PTRACE_MODE_READ_FSCREDS " | " PTRACE_MODE_NOAUDIT
-check (refer to
-.BR ptrace (2)).
-If the check denies access, then the field value is displayed as 0.
-The affected fields are indicated with the marking [PT].
-.RS
-.TP
-(1) \fIpid\fP \ %d
-.br
-The process ID.
-.TP
-(2) \fIcomm\fP \ %s
-The filename of the executable, in parentheses.
-Strings longer than
-.B TASK_COMM_LEN
-(16) characters (including the terminating null byte) are silently truncated.
-This is visible whether or not the executable is swapped out.
-.TP
-(3) \fIstate\fP \ %c
-One of the following characters, indicating process state:
-.RS
-.TP
-R
-Running
-.TP
-S
-Sleeping in an interruptible wait
-.TP
-D
-Waiting in uninterruptible
-disk sleep
-.TP
-Z
-Zombie
-.TP
-T
-Stopped (on a signal) or (before Linux 2.6.33) trace stopped
-.TP
-t
-.\" commit 44d90df6b757c59651ddd55f1a84f28132b50d29
-Tracing stop (Linux 2.6.33 onward)
-.TP
-W
-Paging (only before Linux 2.6.0)
-.TP
-X
-Dead (from Linux 2.6.0 onward)
-.TP
-x
-.\" commit 44d90df6b757c59651ddd55f1a84f28132b50d29
-Dead (Linux 2.6.33 to
-.\" commit 74e37200de8e9c4e09b70c21c3f13c2071e77457
-3.13 only)
-.TP
-K
-.\" commit 44d90df6b757c59651ddd55f1a84f28132b50d29
-Wakekill (Linux 2.6.33 to
-.\" commit 74e37200de8e9c4e09b70c21c3f13c2071e77457
-3.13 only)
-.TP
-W
-.\" commit 44d90df6b757c59651ddd55f1a84f28132b50d29
-Waking (Linux 2.6.33 to
-.\" commit 74e37200de8e9c4e09b70c21c3f13c2071e77457
-3.13 only)
-.TP
-P
-.\" commit f2530dc71cf0822f90bb63ea4600caaef33a66bb
-Parked (Linux 3.9 to
-.\" commit 74e37200de8e9c4e09b70c21c3f13c2071e77457
-3.13 only)
-.TP
-I
-.\" commit 06eb61844d841d0032a9950ce7f8e783ee49c0d0
-Idle (Linux 4.14 onward)
-.RE
-.TP
-(4) \fIppid\fP \ %d
-The PID of the parent of this process.
-.TP
-(5) \fIpgrp\fP \ %d
-The process group ID of the process.
-.TP
-(6) \fIsession\fP \ %d
-The session ID of the process.
-.TP
-(7) \fItty_nr\fP \ %d
-The controlling terminal of the process.
-(The minor device number is contained in the combination of bits
-31 to 20 and 7 to 0;
-the major device number is in bits 15 to 8.)
-.TP
-(8) \fItpgid\fP \ %d
-.\" This field and following, up to and including wchan added 0.99.1
-The ID of the foreground process group of the controlling
-terminal of the process.
-.TP
-(9) \fIflags\fP \ %u
-The kernel flags word of the process.
-For bit meanings,
-see the PF_* defines in the Linux kernel source file
-.IR include/linux/sched.h .
-Details depend on the kernel version.
-.IP
-The format for this field was %lu before Linux 2.6.
-.TP
-(10) \fIminflt\fP \ %lu
-The number of minor faults the process has made which have not
-required loading a memory page from disk.
-.TP
-(11) \fIcminflt\fP \ %lu
-The number of minor faults that the process's
-waited-for children have made.
-.TP
-(12) \fImajflt\fP \ %lu
-The number of major faults the process has made which have
-required loading a memory page from disk.
-.TP
-(13) \fIcmajflt\fP \ %lu
-The number of major faults that the process's
-waited-for children have made.
-.TP
-(14) \fIutime\fP \ %lu
-Amount of time that this process has been scheduled in user mode,
-measured in clock ticks (divide by
-.IR sysconf(_SC_CLK_TCK) ).
-This includes guest time, \fIguest_time\fP
-(time spent running a virtual CPU, see below),
-so that applications that are not aware of the guest time field
-do not lose that time from their calculations.
-.TP
-(15) \fIstime\fP \ %lu
-Amount of time that this process has been scheduled in kernel mode,
-measured in clock ticks (divide by
-.IR sysconf(_SC_CLK_TCK) ).
-.TP
-(16) \fIcutime\fP \ %ld
-Amount of time that this process's
-waited-for children have been scheduled in user mode,
-measured in clock ticks (divide by
-.IR sysconf(_SC_CLK_TCK) ).
-(See also
-.BR times (2).)
-This includes guest time, \fIcguest_time\fP
-(time spent running a virtual CPU, see below).
-.TP
-(17) \fIcstime\fP \ %ld
-Amount of time that this process's
-waited-for children have been scheduled in kernel mode,
-measured in clock ticks (divide by
-.IR sysconf(_SC_CLK_TCK) ).
-.TP
-(18) \fIpriority\fP \ %ld
-(Explanation for Linux 2.6)
-For processes running a real-time scheduling policy
-.RI ( policy
-below; see
-.BR sched_setscheduler (2)),
-this is the negated scheduling priority, minus one;
-that is, a number in the range \-2 to \-100,
-corresponding to real-time priorities 1 to 99.
-For processes running under a non-real-time scheduling policy,
-this is the raw nice value
-.RB ( setpriority (2))
-as represented in the kernel.
-The kernel stores nice values as numbers
-in the range 0 (high) to 39 (low),
-corresponding to the user-visible nice range of \-20 to 19.
-.IP
-Before Linux 2.6, this was a scaled value based on
-the scheduler weighting given to this process.
-.\" And back in Linux 1.2 days things were different again.
-.TP
-(19) \fInice\fP \ %ld
-The nice value (see
-.BR setpriority (2)),
-a value in the range 19 (low priority) to \-20 (high priority).
-.\" Back in Linux 1.2 days things were different.
-.\" .TP
-.\" \fIcounter\fP %ld
-.\" The current maximum size in jiffies of the process's next timeslice,
-.\" or what is currently left of its current timeslice, if it is the
-.\" currently running process.
-.\" .TP
-.\" \fItimeout\fP %u
-.\" The time in jiffies of the process's next timeout.
-.\" timeout was removed sometime around 2.1/2.2
-.TP
-(20) \fInum_threads\fP \ %ld
-Number of threads in this process (since Linux 2.6).
-Before Linux 2.6, this field was hard coded to 0 as a placeholder
-for an earlier removed field.
-.TP
-(21) \fIitrealvalue\fP \ %ld
-The time in jiffies before the next
-.B SIGALRM
-is sent to the process due to an interval timer.
-Since Linux 2.6.17, this field is no longer maintained,
-and is hard coded as 0.
-.TP
-(22) \fIstarttime\fP \ %llu
-The time the process started after system boot.
-Before Linux 2.6, this value was expressed in jiffies.
-Since Linux 2.6, the value is expressed in clock ticks (divide by
-.IR sysconf(_SC_CLK_TCK) ).
-.IP
-The format for this field was %lu before Linux 2.6.
-.TP
-(23) \fIvsize\fP \ %lu
-Virtual memory size in bytes.
-.TP
-(24) \fIrss\fP \ %ld
-Resident Set Size: number of pages the process has in real memory.
-This is just the pages which
-count toward text, data, or stack space.
-This does not include pages
-which have not been demand-loaded in, or which are swapped out.
-This value is inaccurate; see
-.IR /proc/ pid /statm
-below.
-.TP
-(25) \fIrsslim\fP \ %lu
-Current soft limit in bytes on the rss of the process;
-see the description of
-.B RLIMIT_RSS
-in
-.BR getrlimit (2).
-.TP
-(26) \fIstartcode\fP \ %lu \ [PT]
-The address above which program text can run.
-.TP
-(27) \fIendcode\fP \ %lu \ [PT]
-The address below which program text can run.
-.TP
-(28) \fIstartstack\fP \ %lu \ [PT]
-The address of the start (i.e., bottom) of the stack.
-.TP
-(29) \fIkstkesp\fP \ %lu \ [PT]
-The current value of ESP (stack pointer), as found in the
-kernel stack page for the process.
-.TP
-(30) \fIkstkeip\fP \ %lu \ [PT]
-The current EIP (instruction pointer).
-.TP
-(31) \fIsignal\fP \ %lu
-The bitmap of pending signals, displayed as a decimal number.
-Obsolete, because it does not provide information on real-time signals; use
-.IR /proc/ pid /status
-instead.
-.TP
-(32) \fIblocked\fP \ %lu
-The bitmap of blocked signals, displayed as a decimal number.
-Obsolete, because it does not provide information on real-time signals; use
-.IR /proc/ pid /status
-instead.
-.TP
-(33) \fIsigignore\fP \ %lu
-The bitmap of ignored signals, displayed as a decimal number.
-Obsolete, because it does not provide information on real-time signals; use
-.IR /proc/ pid /status
-instead.
-.TP
-(34) \fIsigcatch\fP \ %lu
-The bitmap of caught signals, displayed as a decimal number.
-Obsolete, because it does not provide information on real-time signals; use
-.IR /proc/ pid /status
-instead.
-.TP
-(35) \fIwchan\fP \ %lu \ [PT]
-This is the "channel" in which the process is waiting.
-It is the address of a location in the kernel where the process is sleeping.
-The corresponding symbolic name can be found in
-.IR /proc/ pid /wchan .
-.TP
-(36) \fInswap\fP \ %lu
-.\" nswap was added in Linux 2.0
-Number of pages swapped (not maintained).
-.TP
-(37) \fIcnswap\fP \ %lu
-.\" cnswap was added in Linux 2.0
-Cumulative \fInswap\fP for child processes (not maintained).
-.TP
-(38) \fIexit_signal\fP \ %d \ (since Linux 2.1.22)
-Signal to be sent to parent when we die.
-.TP
-(39) \fIprocessor\fP \ %d \ (since Linux 2.2.8)
-CPU number last executed on.
-.TP
-(40) \fIrt_priority\fP \ %u \ (since Linux 2.5.19)
-Real-time scheduling priority, a number in the range 1 to 99 for
-processes scheduled under a real-time policy,
-or 0, for non-real-time processes (see
-.BR sched_setscheduler (2)).
-.TP
-(41) \fIpolicy\fP \ %u \ (since Linux 2.5.19)
-Scheduling policy (see
-.BR sched_setscheduler (2)).
-Decode using the SCHED_* constants in
-.IR linux/sched.h .
-.IP
-The format for this field was %lu before Linux 2.6.22.
-.TP
-(42) \fIdelayacct_blkio_ticks\fP \ %llu \ (since Linux 2.6.18)
-Aggregated block I/O delays, measured in clock ticks (centiseconds).
-.TP
-(43) \fIguest_time\fP \ %lu \ (since Linux 2.6.24)
-Guest time of the process (time spent running a virtual CPU
-for a guest operating system), measured in clock ticks (divide by
-.IR sysconf(_SC_CLK_TCK) ).
-.TP
-(44) \fIcguest_time\fP \ %ld \ (since Linux 2.6.24)
-Guest time of the process's children, measured in clock ticks (divide by
-.IR sysconf(_SC_CLK_TCK) ).
-.TP
-(45) \fIstart_data\fP \ %lu \ (since Linux 3.3) \ [PT]
-.\" commit b3f7f573a20081910e34e99cbc91831f4f02f1ff
-Address above which program initialized and
-uninitialized (BSS) data are placed.
-.TP
-(46) \fIend_data\fP \ %lu \ (since Linux 3.3) \ [PT]
-.\" commit b3f7f573a20081910e34e99cbc91831f4f02f1ff
-Address below which program initialized and
-uninitialized (BSS) data are placed.
-.TP
-(47) \fIstart_brk\fP \ %lu \ (since Linux 3.3) \ [PT]
-.\" commit b3f7f573a20081910e34e99cbc91831f4f02f1ff
-Address above which program heap can be expanded with
-.BR brk (2).
-.TP
-(48) \fIarg_start\fP \ %lu \ (since Linux 3.5) \ [PT]
-.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3
-Address above which program command-line arguments
-.RI ( argv )
-are placed.
-.TP
-(49) \fIarg_end\fP \ %lu \ (since Linux 3.5) \ [PT]
-.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3
-Address below program command-line arguments
-.RI ( argv )
-are placed.
-.TP
-(50) \fIenv_start\fP \ %lu \ (since Linux 3.5) \ [PT]
-.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3
-Address above which program environment is placed.
-.TP
-(51) \fIenv_end\fP \ %lu \ (since Linux 3.5) \ [PT]
-.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3
-Address below which program environment is placed.
-.TP
-(52) \fIexit_code\fP \ %d \ (since Linux 3.5) \ [PT]
-.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3
-The thread's exit status in the form reported by
-.BR waitpid (2).
-.RE
-.TP
-.IR /proc/ pid /statm
-Provides information about memory usage, measured in pages.
-The columns are:
-.IP
-.in +4n
-.EX
-size (1) total program size
- (same as VmSize in \fI/proc/\fPpid\fI/status\fP)
-resident (2) resident set size
- (inaccurate; same as VmRSS in \fI/proc/\fPpid\fI/status\fP)
-shared (3) number of resident shared pages
- (i.e., backed by a file)
- (inaccurate; same as RssFile+RssShmem in
- \fI/proc/\fPpid\fI/status\fP)
-text (4) text (code)
-.\" (not including libs; broken, includes data segment)
-lib (5) library (unused since Linux 2.6; always 0)
-data (6) data + stack
-.\" (including libs; broken, includes library text)
-dt (7) dirty pages (unused since Linux 2.6; always 0)
-.EE
-.in
-.IP
-.\" See SPLIT_RSS_COUNTING in the kernel.
-.\" Inaccuracy is bounded by TASK_RSS_EVENTS_THRESH.
-Some of these values are inaccurate because
-of a kernel-internal scalability optimization.
-If accurate values are required, use
-.IR /proc/ pid /smaps
-or
-.IR /proc/ pid /smaps_rollup
-instead, which are much slower but provide accurate, detailed information.
-.TP
-.IR /proc/ pid /status
-Provides much of the information in
-.IR /proc/ pid /stat
-and
-.IR /proc/ pid /statm
-in a format that's easier for humans to parse.
-Here's an example:
-.IP
-.in +4n
-.EX
-.RB "$" " cat /proc/$$/status"
-Name: bash
-Umask: 0022
-State: S (sleeping)
-Tgid: 17248
-Ngid: 0
-Pid: 17248
-PPid: 17200
-TracerPid: 0
-Uid: 1000 1000 1000 1000
-Gid: 100 100 100 100
-FDSize: 256
-Groups: 16 33 100
-NStgid: 17248
-NSpid: 17248
-NSpgid: 17248
-NSsid: 17200
-VmPeak: 131168 kB
-VmSize: 131168 kB
-VmLck: 0 kB
-VmPin: 0 kB
-VmHWM: 13484 kB
-VmRSS: 13484 kB
-RssAnon: 10264 kB
-RssFile: 3220 kB
-RssShmem: 0 kB
-VmData: 10332 kB
-VmStk: 136 kB
-VmExe: 992 kB
-VmLib: 2104 kB
-VmPTE: 76 kB
-VmPMD: 12 kB
-VmSwap: 0 kB
-HugetlbPages: 0 kB # 4.4
-CoreDumping: 0 # 4.15
-Threads: 1
-SigQ: 0/3067
-SigPnd: 0000000000000000
-ShdPnd: 0000000000000000
-SigBlk: 0000000000010000
-SigIgn: 0000000000384004
-SigCgt: 000000004b813efb
-CapInh: 0000000000000000
-CapPrm: 0000000000000000
-CapEff: 0000000000000000
-CapBnd: ffffffffffffffff
-CapAmb: 0000000000000000
-NoNewPrivs: 0
-Seccomp: 0
-Speculation_Store_Bypass: vulnerable
-Cpus_allowed: 00000001
-Cpus_allowed_list: 0
-Mems_allowed: 1
-Mems_allowed_list: 0
-voluntary_ctxt_switches: 150
-nonvoluntary_ctxt_switches: 545
-.EE
-.in
-.IP
-The fields are as follows:
-.RS
-.TP
-.I Name
-Command run by this process.
-Strings longer than
-.B TASK_COMM_LEN
-(16) characters (including the terminating null byte) are silently truncated.
-.TP
-.I Umask
-Process umask, expressed in octal with a leading zero; see
-.BR umask (2).
-(Since Linux 4.7.)
-.TP
-.I State
-Current state of the process.
-One of
-"R (running)",
-"S (sleeping)",
-"D (disk sleep)",
-"T (stopped)",
-"t (tracing stop)",
-"Z (zombie)",
-or
-"X (dead)".
-.TP
-.I Tgid
-Thread group ID (i.e., Process ID).
-.TP
-.I Ngid
-NUMA group ID (0 if none; since Linux 3.13).
-.TP
-.I Pid
-Thread ID (see
-.BR gettid (2)).
-.TP
-.I PPid
-PID of parent process.
-.TP
-.I TracerPid
-PID of process tracing this process (0 if not being traced).
-.TP
-.IR Uid ", " Gid
-Real, effective, saved set, and filesystem UIDs (GIDs).
-.TP
-.I FDSize
-Number of file descriptor slots currently allocated.
-.TP
-.I Groups
-Supplementary group list.
-.TP
-.I NStgid
-Thread group ID (i.e., PID) in each of the PID namespaces of which
-.I pid
-is a member.
-The leftmost entry shows the value with respect to the PID namespace
-of the process that mounted this procfs (or the root namespace
-if mounted by the kernel),
-followed by the value in successively nested inner namespaces.
-.\" commit e4bc33245124db69b74a6d853ac76c2976f472d5
-(Since Linux 4.1.)
-.TP
-.I NSpid
-Thread ID in each of the PID namespaces of which
-.I pid
-is a member.
-The fields are ordered as for
-.IR NStgid .
-(Since Linux 4.1.)
-.TP
-.I NSpgid
-Process group ID in each of the PID namespaces of which
-.I pid
-is a member.
-The fields are ordered as for
-.IR NStgid .
-(Since Linux 4.1.)
-.TP
-.I NSsid
-descendant namespace session ID hierarchy
-Session ID in each of the PID namespaces of which
-.I pid
-is a member.
-The fields are ordered as for
-.IR NStgid .
-(Since Linux 4.1.)
-.TP
-.I VmPeak
-Peak virtual memory size.
-.TP
-.I VmSize
-Virtual memory size.
-.TP
-.I VmLck
-Locked memory size (see
-.BR mlock (2)).
-.TP
-.I VmPin
-Pinned memory size
-.\" commit bc3e53f682d93df677dbd5006a404722b3adfe18
-(since Linux 3.2).
-These are pages that can't be moved because something needs to
-directly access physical memory.
-.TP
-.I VmHWM
-Peak resident set size ("high water mark").
-This value is inaccurate; see
-.IR /proc/ pid /statm
-above.
-.TP
-.I VmRSS
-Resident set size.
-Note that the value here is the sum of
-.IR RssAnon ,
-.IR RssFile ,
-and
-.IR RssShmem .
-This value is inaccurate; see
-.IR /proc/ pid /statm
-above.
-.TP
-.I RssAnon
-Size of resident anonymous memory.
-.\" commit bf9683d6990589390b5178dafe8fd06808869293
-(since Linux 4.5).
-This value is inaccurate; see
-.IR /proc/ pid /statm
-above.
-.TP
-.I RssFile
-Size of resident file mappings.
-.\" commit bf9683d6990589390b5178dafe8fd06808869293
-(since Linux 4.5).
-This value is inaccurate; see
-.IR /proc/ pid /statm
-above.
-.TP
-.I RssShmem
-Size of resident shared memory (includes System V shared memory,
-mappings from
-.BR tmpfs (5),
-and shared anonymous mappings).
-.\" commit bf9683d6990589390b5178dafe8fd06808869293
-(since Linux 4.5).
-.TP
-.IR VmData ", " VmStk ", " VmExe
-Size of data, stack, and text segments.
-This value is inaccurate; see
-.IR /proc/ pid /statm
-above.
-.TP
-.I VmLib
-Shared library code size.
-.TP
-.I VmPTE
-Page table entries size (since Linux 2.6.10).
-.TP
-.I VmPMD
-.\" commit dc6c9a35b66b520cf67e05d8ca60ebecad3b0479
-Size of second-level page tables (added in Linux 4.0; removed in Linux 4.15).
-.TP
-.I VmSwap
-.\" commit b084d4353ff99d824d3bc5a5c2c22c70b1fba722
-Swapped-out virtual memory size by anonymous private pages;
-shmem swap usage is not included (since Linux 2.6.34).
-This value is inaccurate; see
-.IR /proc/ pid /statm
-above.
-.TP
-.I HugetlbPages
-Size of hugetlb memory portions
-.\" commit 5d317b2b6536592a9b51fe65faed43d65ca9158e
-(since Linux 4.4).
-.TP
-.I CoreDumping
-Contains the value 1 if the process is currently dumping core,
-and 0 if it is not
-.\" commit c643401218be0f4ab3522e0c0a63016596d6e9ca
-(since Linux 4.15).
-This information can be used by a monitoring process to avoid killing
-a process that is currently dumping core,
-which could result in a corrupted core dump file.
-.TP
-.I Threads
-Number of threads in process containing this thread.
-.TP
-.I SigQ
-This field contains two slash-separated numbers that relate to
-queued signals for the real user ID of this process.
-The first of these is the number of currently queued
-signals for this real user ID, and the second is the
-resource limit on the number of queued signals for this process
-(see the description of
-.B RLIMIT_SIGPENDING
-in
-.BR getrlimit (2)).
-.TP
-.IR SigPnd ", " ShdPnd
-Mask (expressed in hexadecimal)
-of signals pending for thread and for process as a whole (see
-.BR pthreads (7)
-and
-.BR signal (7)).
-.TP
-.IR SigBlk ", " SigIgn ", " SigCgt
-Masks (expressed in hexadecimal)
-indicating signals being blocked, ignored, and caught (see
-.BR signal (7)).
-.TP
-.IR CapInh ", " CapPrm ", " CapEff
-Masks (expressed in hexadecimal)
-of capabilities enabled in inheritable, permitted, and effective sets
-(see
-.BR capabilities (7)).
-.TP
-.I CapBnd
-Capability bounding set, expressed in hexadecimal
-(since Linux 2.6.26, see
-.BR capabilities (7)).
-.TP
-.I CapAmb
-Ambient capability set, expressed in hexadecimal
-(since Linux 4.3, see
-.BR capabilities (7)).
-.TP
-.I NoNewPrivs
-.\" commit af884cd4a5ae62fcf5e321fecf0ec1014730353d
-Value of the
-.I no_new_privs
-bit
-(since Linux 4.10, see
-.BR prctl (2)).
-.TP
-.I Seccomp
-.\" commit 2f4b3bf6b2318cfaa177ec5a802f4d8d6afbd816
-Seccomp mode of the process
-(since Linux 3.8, see
-.BR seccomp (2)).
-0 means
-.BR SECCOMP_MODE_DISABLED ;
-1 means
-.BR SECCOMP_MODE_STRICT ;
-2 means
-.BR SECCOMP_MODE_FILTER .
-This field is provided only if the kernel was built with the
-.B CONFIG_SECCOMP
-kernel configuration option enabled.
-.TP
-.I Speculation_Store_Bypass
-.\" commit fae1fa0fc6cca8beee3ab8ed71d54f9a78fa3f64
-Speculation flaw mitigation state
-(since Linux 4.17, see
-.BR prctl (2)).
-.TP
-.I Cpus_allowed
-Hexadecimal mask of CPUs on which this process may run
-(since Linux 2.6.24, see
-.BR cpuset (7)).
-.TP
-.I Cpus_allowed_list
-Same as previous, but in "list format"
-(since Linux 2.6.26, see
-.BR cpuset (7)).
-.TP
-.I Mems_allowed
-Mask of memory nodes allowed to this process
-(since Linux 2.6.24, see
-.BR cpuset (7)).
-.TP
-.I Mems_allowed_list
-Same as previous, but in "list format"
-(since Linux 2.6.26, see
-.BR cpuset (7)).
-.TP
-.IR voluntary_ctxt_switches ", " nonvoluntary_ctxt_switches
-Number of voluntary and involuntary context switches (since Linux 2.6.23).
-.RE
-.TP
-.IR /proc/ pid /syscall " (since Linux 2.6.27)"
-.\" commit ebcb67341fee34061430f3367f2e507e52ee051b
-This file exposes the system call number and argument registers for the
-system call currently being executed by the process,
-followed by the values of the stack pointer and program counter registers.
-The values of all six argument registers are exposed,
-although most system calls use fewer registers.
-.IP
-If the process is blocked, but not in a system call,
-then the file displays \-1 in place of the system call number,
-followed by just the values of the stack pointer and program counter.
-If process is not blocked, then the file contains just the string "running".
-.IP
-This file is present only if the kernel was configured with
-.BR CONFIG_HAVE_ARCH_TRACEHOOK .
-.IP
-Permission to access this file is governed by a ptrace access mode
-.B PTRACE_MODE_ATTACH_FSCREDS
-check; see
-.BR ptrace (2).
-.TP
-.IR /proc/ pid /task " (since Linux 2.6.0)"
-.\" Precisely: Linux 2.6.0-test6
-This is a directory that contains one subdirectory
-for each thread in the process.
-The name of each subdirectory is the numerical thread ID
-.RI ( tid )
-of the thread (see
-.BR gettid (2)).
-.IP
-Within each of these subdirectories, there is a set of
-files with the same names and contents as under the
-.IR /proc/ pid
-directories.
-For attributes that are shared by all threads, the contents for
-each of the files under the
-.IR task/ tid
-subdirectories will be the same as in the corresponding
-file in the parent
-.IR /proc/ pid
-directory
-(e.g., in a multithreaded process, all of the
-.IR task/ tid /cwd
-files will have the same value as the
-.IR /proc/ pid /cwd
-file in the parent directory, since all of the threads in a process
-share a working directory).
-For attributes that are distinct for each thread,
-the corresponding files under
-.IR task/ tid
-may have different values (e.g., various fields in each of the
-.IR task/ tid /status
-files may be different for each thread),
-.\" in particular: "children" :/
-or they might not exist in
-.IR /proc/ pid
-at all.
-.IP
-.\" The following was still true as at kernel 2.6.13
-In a multithreaded process, the contents of the
-.IR /proc/ pid /task
-directory are not available if the main thread has already terminated
-(typically by calling
-.BR pthread_exit (3)).
-.TP
-.IR /proc/ pid /task/ tid /children " (since Linux 3.5)"
-.\" commit 818411616baf46ceba0cff6f05af3a9b294734f7
-A space-separated list of child tasks of this task.
-Each child task is represented by its TID.
-.IP
-.\" see comments in get_children_pid() in fs/proc/array.c
-This option is intended for use by the checkpoint-restore (CRIU) system,
-and reliably provides a list of children only if all of the child processes
-are stopped or frozen.
-It does not work properly if children of the target task exit while
-the file is being read!
-Exiting children may cause non-exiting children to be omitted from the list.
-This makes this interface even more unreliable than classic PID-based
-approaches if the inspected task and its children aren't frozen,
-and most code should probably not use this interface.
-.IP
-Until Linux 4.2, the presence of this file was governed by the
-.B CONFIG_CHECKPOINT_RESTORE
-kernel configuration option.
-Since Linux 4.2,
-.\" commit 2e13ba54a2682eea24918b87ad3edf70c2cf085b
-it is governed by the
-.B CONFIG_PROC_CHILDREN
-option.
-.TP
-.IR /proc/ pid /timers " (since Linux 3.10)"
-.\" commit 5ed67f05f66c41e39880a6d61358438a25f9fee5
-.\" commit 48f6a7a511ef8823fdff39afee0320092d43a8a0
-A list of the POSIX timers for this process.
-Each timer is listed with a line that starts with the string "ID:".
-For example:
-.IP
-.in +4n
-.EX
-ID: 1
-signal: 60/00007fff86e452a8
-notify: signal/pid.2634
-ClockID: 0
-ID: 0
-signal: 60/00007fff86e452a8
-notify: signal/pid.2634
-ClockID: 1
-.EE
-.in
-.IP
-The lines shown for each timer have the following meanings:
-.RS
-.TP
-.I ID
-The ID for this timer.
-This is not the same as the timer ID returned by
-.BR timer_create (2);
-rather, it is the same kernel-internal ID that is available via the
-.I si_timerid
-field of the
-.I siginfo_t
-structure (see
-.BR sigaction (2)).
-.TP
-.I signal
-This is the signal number that this timer uses to deliver notifications
-followed by a slash, and then the
-.I sigev_value
-value supplied to the signal handler.
-Valid only for timers that notify via a signal.
-.TP
-.I notify
-The part before the slash specifies the mechanism
-that this timer uses to deliver notifications,
-and is one of "thread", "signal", or "none".
-Immediately following the slash is either the string "tid" for timers
-with
-.B SIGEV_THREAD_ID
-notification, or "pid" for timers that notify by other mechanisms.
-Following the "." is the PID of the process
-(or the kernel thread ID of the thread) that will be delivered
-a signal if the timer delivers notifications via a signal.
-.TP
-.I ClockID
-This field identifies the clock that the timer uses for measuring time.
-For most clocks, this is a number that matches one of the user-space
-.B CLOCK_*
-constants exposed via
-.IR <time.h> .
-.B CLOCK_PROCESS_CPUTIME_ID
-timers display with a value of \-6
-in this field.
-.B CLOCK_THREAD_CPUTIME_ID
-timers display with a value of \-2
-in this field.
-.RE
-.IP
-This file is available only when the kernel was configured with
-.BR CONFIG_CHECKPOINT_RESTORE .
-.TP
-.IR /proc/ pid /timerslack_ns " (since Linux 4.6)"
-.\" commit da8b44d5a9f8bf26da637b7336508ca534d6b319
-.\" commit 5de23d435e88996b1efe0e2cebe242074ce67c9e
-This file exposes the process's "current" timer slack value,
-expressed in nanoseconds.
-The file is writable,
-allowing the process's timer slack value to be changed.
-Writing 0 to this file resets the "current" timer slack to the
-"default" timer slack value.
-For further details, see the discussion of
-.B PR_SET_TIMERSLACK
-in
-.BR prctl (2).
-.IP
-Initially,
-permission to access this file was governed by a ptrace access mode
-.B PTRACE_MODE_ATTACH_FSCREDS
-check (see
-.BR ptrace (2)).
-However, this was subsequently deemed too strict a requirement
-(and had the side effect that requiring a process to have the
-.B CAP_SYS_PTRACE
-capability would also allow it to view and change any process's memory).
-Therefore, since Linux 4.9,
-.\" commit 7abbaf94049914f074306d960b0f968ffe52e59f
-only the (weaker)
-.B CAP_SYS_NICE
-capability is required to access this file.
-.TP
-.IR /proc/ pid /uid_map " (since Linux 3.5)"
-See
-.BR user_namespaces (7).
-.TP
-.IR /proc/ pid /wchan " (since Linux 2.6.0)"
-The symbolic name corresponding to the location
-in the kernel where the process is sleeping.
-.IP
-Permission to access this file is governed by a ptrace access mode
-.B PTRACE_MODE_READ_FSCREDS
-check; see
-.BR ptrace (2).
-.TP
-.IR /proc/ tid
-There is a numerical subdirectory for each running thread
-that is not a thread group leader
-(i.e., a thread whose thread ID is not the same as its process ID);
-the subdirectory is named by the thread ID.
-Each one of these subdirectories contains files and subdirectories
-exposing information about the thread with the thread ID
-.IR tid .
-The contents of these directories are the same as the corresponding
-.IR /proc/ pid /task/ tid
-directories.
-.IP
-The
-.IR /proc/ tid
-subdirectories are
-.I not
-visible when iterating through
-.I /proc
-with
-.BR getdents (2)
-(and thus are
-.I not
-visible when one uses
-.BR ls (1)
-to view the contents of
-.IR /proc ).
-However, the pathnames of these directories are visible to
-(i.e., usable as arguments in)
-system calls that operate on pathnames.
-.TP
-.I /proc/apm
-Advanced power management version and battery information when
-.B CONFIG_APM
-is defined at kernel compilation time.
-.TP
-.I /proc/buddyinfo
-This file contains information which is used for diagnosing memory
-fragmentation issues.
-Each line starts with the identification of the node and the name
-of the zone which together identify a memory region.
-This is then
-followed by the count of available chunks of a certain order in
-which these zones are split.
-The size in bytes of a certain order is given by the formula:
-.IP
-.in +4n
-.EX
-(2\[ha]order)\ *\ PAGE_SIZE
-.EE
-.in
-.IP
-The binary buddy allocator algorithm inside the kernel will split
-one chunk into two chunks of a smaller order (thus with half the
-size) or combine two contiguous chunks into one larger chunk of
-a higher order (thus with double the size) to satisfy allocation
-requests and to counter memory fragmentation.
-The order matches the column number, when starting to count at zero.
-.IP
-For example on an x86-64 system:
-.RS -12
-.EX
-Node 0, zone DMA 1 1 1 0 2 1 1 0 1 1 3
-Node 0, zone DMA32 65 47 4 81 52 28 13 10 5 1 404
-Node 0, zone Normal 216 55 189 101 84 38 37 27 5 3 587
-.EE
-.RE
-.IP
-In this example, there is one node containing three zones and there
-are 11 different chunk sizes.
-If the page size is 4 kilobytes, then the first zone called
-.I DMA
-(on x86 the first 16 megabyte of memory) has 1 chunk of 4 kilobytes
-(order 0) available and has 3 chunks of 4 megabytes (order 10) available.
-.IP
-If the memory is heavily fragmented, the counters for higher
-order chunks will be zero and allocation of large contiguous areas
-will fail.
-.IP
-Further information about the zones can be found in
-.IR /proc/zoneinfo .
-.TP
-.I /proc/bus
-Contains subdirectories for installed buses.
-.TP
-.I /proc/bus/pccard
-Subdirectory for PCMCIA devices when
-.B CONFIG_PCMCIA
-is set at kernel compilation time.
-.TP
-.I /proc/bus/pccard/drivers
-.TP
-.I /proc/bus/pci
-Contains various bus subdirectories and pseudo-files containing
-information about PCI buses, installed devices, and device
-drivers.
-Some of these files are not ASCII.
-.TP
-.I /proc/bus/pci/devices
-Information about PCI devices.
-They may be accessed through
-.BR lspci (8)
-and
-.BR setpci (8).
-.TP
-.IR /proc/cgroups " (since Linux 2.6.24)"
-See
-.BR cgroups (7).
-.TP
-.I /proc/cmdline
-Arguments passed to the Linux kernel at boot time.
-Often done via a boot manager such as
-.BR lilo (8)
-or
-.BR grub (8).
-.TP
-.IR /proc/config.gz " (since Linux 2.6)"
-This file exposes the configuration options that were used
-to build the currently running kernel,
-in the same format as they would be shown in the
-.I .config
-file that resulted when configuring the kernel (using
-.IR "make xconfig" ,
-.IR "make config" ,
-or similar).
-The file contents are compressed; view or search them using
-.BR zcat (1)
-and
-.BR zgrep (1).
-As long as no changes have been made to the following file,
-the contents of
-.I /proc/config.gz
-are the same as those provided by:
-.IP
-.in +4n
-.EX
-cat /lib/modules/$(uname \-r)/build/.config
-.EE
-.in
-.IP
-.I /proc/config.gz
-is provided only if the kernel is configured with
-.BR CONFIG_IKCONFIG_PROC .
-.TP
-.I /proc/crypto
-A list of the ciphers provided by the kernel crypto API.
-For details, see the kernel
-.I "Linux Kernel Crypto API"
-documentation available under the kernel source directory
-.I Documentation/crypto/
-.\" commit 3b72c814a8e8cd638e1ba0da4dfce501e9dff5af
-(or
-.I Documentation/DocBook
-before Linux 4.10;
-the documentation can be built using a command such as
-.I make htmldocs
-in the root directory of the kernel source tree).
-.TP
-.I /proc/cpuinfo
-This is a collection of CPU and system architecture dependent items,
-for each supported architecture a different list.
-Two common entries are \fIprocessor\fP which gives CPU number and
-\fIbogomips\fP; a system constant that is calculated
-during kernel initialization.
-SMP machines have information for
-each CPU.
-The
-.BR lscpu (1)
-command gathers its information from this file.
-.TP
-.I /proc/devices
-Text listing of major numbers and device groups.
-This can be used by MAKEDEV scripts for consistency with the kernel.
-.TP
-.IR /proc/diskstats " (since Linux 2.5.69)"
-This file contains disk I/O statistics for each disk device.
-See the Linux kernel source file
-.I Documentation/admin\-guide/iostats.rst
-(or
-.I Documentation/iostats.txt
-before Linux 5.3)
-for further information.
-.TP
-.I /proc/dma
-This is a list of the registered \fIISA\fP DMA (direct memory access)
-channels in use.
-.TP
-.I /proc/driver
-Empty subdirectory.
-.TP
-.I /proc/execdomains
-Used to list ABI personalities before Linux 4.1;
-now contains a constant string for userspace compatibility.
-.TP
-.I /proc/fb
-Frame buffer information when
-.B CONFIG_FB
-is defined during kernel compilation.
-.TP
-.I /proc/filesystems
-A text listing of the filesystems which are supported by the kernel,
-namely filesystems which were compiled into the kernel or whose kernel
-modules are currently loaded.
-(See also
-.BR filesystems (5).)
-If a filesystem is marked with "nodev",
-this means that it does not require a block device to be mounted
-(e.g., virtual filesystem, network filesystem).
-.IP
-Incidentally, this file may be used by
-.BR mount (8)
-when no filesystem is specified and it didn't manage to determine the
-filesystem type.
-Then filesystems contained in this file are tried
-(excepted those that are marked with "nodev").
-.TP
-.I /proc/fs
-.\" FIXME Much more needs to be said about /proc/fs
-.\"
-Contains subdirectories that in turn contain files
-with information about (certain) mounted filesystems.
-.TP
-.I /proc/ide
-This directory
-exists on systems with the IDE bus.
-There are directories for each IDE channel and attached device.
-Files include:
-.IP
-.in +4n
-.EX
-cache buffer size in KB
-capacity number of sectors
-driver driver version
-geometry physical and logical geometry
-identify in hexadecimal
-media media type
-model manufacturer\[aq]s model number
-settings drive settings
-smart_thresholds IDE disk management thresholds (in hex)
-smart_values IDE disk management values (in hex)
-.EE
-.in
-.IP
-The
-.BR hdparm (8)
-utility provides access to this information in a friendly format.
-.TP
-.I /proc/interrupts
-This is used to record the number of interrupts per CPU per IO device.
-Since Linux 2.6.24,
-for the i386 and x86-64 architectures, at least, this also includes
-interrupts internal to the system (that is, not associated with a device
-as such), such as NMI (nonmaskable interrupt), LOC (local timer interrupt),
-and for SMP systems, TLB (TLB flush interrupt), RES (rescheduling
-interrupt), CAL (remote function call interrupt), and possibly others.
-Very easy to read formatting, done in ASCII.
-.TP
-.I /proc/iomem
-I/O memory map in Linux 2.4.
-.TP
-.I /proc/ioports
-This is a list of currently registered Input-Output port regions that
-are in use.
-.TP
-.IR /proc/kallsyms " (since Linux 2.5.71)"
-This holds the kernel exported symbol definitions used by the
-.BR modules (X)
-tools to dynamically link and bind loadable modules.
-In Linux 2.5.47 and earlier, a similar file with slightly different syntax
-was named
-.IR ksyms .
-.TP
-.I /proc/kcore
-This file represents the physical memory of the system and is stored
-in the ELF core file format.
-With this pseudo-file, and an unstripped
-kernel
-.RI ( /usr/src/linux/vmlinux )
-binary, GDB can be used to
-examine the current state of any kernel data structures.
-.IP
-The total length of the file is the size of physical memory (RAM) plus
-4\ KiB.
-.TP
-.IR /proc/keys " (since Linux 2.6.10)"
-See
-.BR keyrings (7).
-.TP
-.IR /proc/key\-users " (since Linux 2.6.10)"
-See
-.BR keyrings (7).
-.TP
-.I /proc/kmsg
-This file can be used instead of the
-.BR syslog (2)
-system call to read kernel messages.
-A process must have superuser
-privileges to read this file, and only one process should read this
-file.
-This file should not be read if a syslog process is running
-which uses the
-.BR syslog (2)
-system call facility to log kernel messages.
-.IP
-Information in this file is retrieved with the
-.BR dmesg (1)
-program.
-.TP
-.IR /proc/kpagecgroup " (since Linux 4.3)"
-.\" commit 80ae2fdceba8313b0433f899bdd9c6c463291a17
-This file contains a 64-bit inode number of
-the memory cgroup each page is charged to,
-indexed by page frame number (see the discussion of
-.IR /proc/ pid /pagemap ).
-.IP
-The
-.I /proc/kpagecgroup
-file is present only if the
-.B CONFIG_MEMCG
-kernel configuration option is enabled.
-.TP
-.IR /proc/kpagecount " (since Linux 2.6.25)"
-This file contains a 64-bit count of the number of
-times each physical page frame is mapped,
-indexed by page frame number (see the discussion of
-.IR /proc/ pid /pagemap ).
-.IP
-The
-.I /proc/kpagecount
-file is present only if the
-.B CONFIG_PROC_PAGE_MONITOR
-kernel configuration option is enabled.
-.TP
-.IR /proc/kpageflags " (since Linux 2.6.25)"
-This file contains 64-bit masks corresponding to each physical page frame;
-it is indexed by page frame number (see the discussion of
-.IR /proc/ pid /pagemap ).
-The bits are as follows:
-.RS
-.IP
-.TS
-r l l l.
-0 - KPF_LOCKED
-1 - KPF_ERROR
-2 - KPF_REFERENCED
-3 - KPF_UPTODATE
-4 - KPF_DIRTY
-5 - KPF_LRU
-6 - KPF_ACTIVE
-7 - KPF_SLAB
-8 - KPF_WRITEBACK
-9 - KPF_RECLAIM
-10 - KPF_BUDDY
-11 - KPF_MMAP (since Linux 2.6.31)
-12 - KPF_ANON (since Linux 2.6.31)
-13 - KPF_SWAPCACHE (since Linux 2.6.31)
-14 - KPF_SWAPBACKED (since Linux 2.6.31)
-15 - KPF_COMPOUND_HEAD (since Linux 2.6.31)
-16 - KPF_COMPOUND_TAIL (since Linux 2.6.31)
-17 - KPF_HUGE (since Linux 2.6.31)
-18 - KPF_UNEVICTABLE (since Linux 2.6.31)
-19 - KPF_HWPOISON (since Linux 2.6.31)
-20 - KPF_NOPAGE (since Linux 2.6.31)
-21 - KPF_KSM (since Linux 2.6.32)
-22 - KPF_THP (since Linux 3.4)
-23 - KPF_BALLOON (since Linux 3.18)
-.\" KPF_BALLOON: commit 09316c09dde33aae14f34489d9e3d243ec0d5938
-24 - KPF_ZERO_PAGE (since Linux 4.0)
-.\" KPF_ZERO_PAGE: commit 56873f43abdcd574b25105867a990f067747b2f4
-25 - KPF_IDLE (since Linux 4.3)
-.\" KPF_IDLE: commit f074a8f49eb87cde95ac9d040ad5e7ea4f029738
-26 - KPF_PGTABLE (since Linux 4.18)
-.\" KPF_PGTABLE: commit 1d40a5ea01d53251c23c7be541d3f4a656cfc537
-.TE
-.RE
-.IP
-For further details on the meanings of these bits,
-see the kernel source file
-.IR Documentation/admin\-guide/mm/pagemap.rst .
-Before Linux 2.6.29,
-.\" commit ad3bdefe877afb47480418fdb05ecd42842de65e
-.\" commit e07a4b9217d1e97d2f3a62b6b070efdc61212110
-.BR KPF_WRITEBACK ,
-.BR KPF_RECLAIM ,
-.BR KPF_BUDDY ,
-and
-.B KPF_LOCKED
-did not report correctly.
-.IP
-The
-.I /proc/kpageflags
-file is present only if the
-.B CONFIG_PROC_PAGE_MONITOR
-kernel configuration option is enabled.
-.TP
-.IR /proc/ksyms " (Linux 1.1.23\[en]2.5.47)"
-See
-.IR /proc/kallsyms .
-.TP
-.I /proc/loadavg
-The first three fields in this file are load average figures
-giving the number of jobs in the run queue (state R)
-or waiting for disk I/O (state D) averaged over 1, 5, and 15 minutes.
-They are the same as the load average numbers given by
-.BR uptime (1)
-and other programs.
-The fourth field consists of two numbers separated by a slash (/).
-The first of these is the number of currently runnable kernel
-scheduling entities (processes, threads).
-The value after the slash is the number of kernel scheduling entities
-that currently exist on the system.
-The fifth field is the PID of the process that was most
-recently created on the system.
-.TP
-.I /proc/locks
-This file shows current file locks
-.RB ( flock "(2) and " fcntl (2))
-and leases
-.RB ( fcntl (2)).
-.IP
-An example of the content shown in this file is the following:
-.IP
-.in +4n
-.EX
-1: POSIX ADVISORY READ 5433 08:01:7864448 128 128
-2: FLOCK ADVISORY WRITE 2001 08:01:7864554 0 EOF
-3: FLOCK ADVISORY WRITE 1568 00:2f:32388 0 EOF
-4: POSIX ADVISORY WRITE 699 00:16:28457 0 EOF
-5: POSIX ADVISORY WRITE 764 00:16:21448 0 0
-6: POSIX ADVISORY READ 3548 08:01:7867240 1 1
-7: POSIX ADVISORY READ 3548 08:01:7865567 1826 2335
-8: OFDLCK ADVISORY WRITE \-1 08:01:8713209 128 191
-.EE
-.in
-.IP
-The fields shown in each line are as follows:
-.RS
-.IP [1] 5
-The ordinal position of the lock in the list.
-.IP [2]
-The lock type.
-Values that may appear here include:
-.RS
-.TP
-.B FLOCK
-This is a BSD file lock created using
-.BR flock (2).
-.TP
-.B OFDLCK
-This is an open file description (OFD) lock created using
-.BR fcntl (2).
-.TP
-.B POSIX
-This is a POSIX byte-range lock created using
-.BR fcntl (2).
-.RE
-.IP [3]
-Among the strings that can appear here are the following:
-.RS
-.TP
-.B ADVISORY
-This is an advisory lock.
-.TP
-.B MANDATORY
-This is a mandatory lock.
-.RE
-.IP [4]
-The type of lock.
-Values that can appear here are:
-.RS
-.TP
-.B READ
-This is a POSIX or OFD read lock, or a BSD shared lock.
-.TP
-.B WRITE
-This is a POSIX or OFD write lock, or a BSD exclusive lock.
-.RE
-.IP [5]
-The PID of the process that owns the lock.
-.IP
-Because OFD locks are not owned by a single process
-(since multiple processes may have file descriptors that
-refer to the same open file description),
-the value \-1 is displayed in this field for OFD locks.
-(Before Linux 4.14,
-.\" commit 9d5b86ac13c573795525ecac6ed2db39ab23e2a8
-a bug meant that the PID of the process that
-initially acquired the lock was displayed instead of the value \-1.)
-.IP [6]
-Three colon-separated subfields that identify the major and minor device
-ID of the device containing the filesystem where the locked file resides,
-followed by the inode number of the locked file.
-.IP [7]
-The byte offset of the first byte of the lock.
-For BSD locks, this value is always 0.
-.IP [8]
-The byte offset of the last byte of the lock.
-.B EOF
-in this field means that the lock extends to the end of the file.
-For BSD locks, the value shown is always
-.IR EOF .
-.RE
-.IP
-Since Linux 4.9,
-.\" commit d67fd44f697dff293d7cdc29af929241b669affe
-the list of locks shown in
-.I /proc/locks
-is filtered to show just the locks for the processes in the PID
-namespace (see
-.BR pid_namespaces (7))
-for which the
-.I /proc
-filesystem was mounted.
-(In the initial PID namespace,
-there is no filtering of the records shown in this file.)
-.IP
-The
-.BR lslocks (8)
-command provides a bit more information about each lock.
-.TP
-.IR /proc/malloc " (only up to and including Linux 2.2)"
-.\" It looks like this only ever did something back in 1.0 days
-This file is present only if
-.B CONFIG_DEBUG_MALLOC
-was defined during compilation.
-.TP
-.I /proc/meminfo
-This file reports statistics about memory usage on the system.
-It is used by
-.BR free (1)
-to report the amount of free and used memory (both physical and swap)
-on the system as well as the shared memory and buffers used by the
-kernel.
-Each line of the file consists of a parameter name, followed by a colon,
-the value of the parameter, and an option unit of measurement (e.g., "kB").
-The list below describes the parameter names and
-the format specifier required to read the field value.
-Except as noted below,
-all of the fields have been present since at least Linux 2.6.0.
-Some fields are displayed only if the kernel was configured
-with various options; those dependencies are noted in the list.
-.RS
-.TP
-.IR MemTotal " %lu"
-Total usable RAM (i.e., physical RAM minus a few reserved
-bits and the kernel binary code).
-.TP
-.IR MemFree " %lu"
-The sum of
-.IR LowFree + HighFree .
-.TP
-.IR MemAvailable " %lu (since Linux 3.14)"
-An estimate of how much memory is available for starting new
-applications, without swapping.
-.TP
-.IR Buffers " %lu"
-Relatively temporary storage for raw disk blocks that
-shouldn't get tremendously large (20 MB or so).
-.TP
-.IR Cached " %lu"
-In-memory cache for files read from the disk (the page cache).
-Doesn't include
-.IR SwapCached .
-.TP
-.IR SwapCached " %lu"
-Memory that once was swapped out, is swapped back in but
-still also is in the swap file.
-(If memory pressure is high, these pages
-don't need to be swapped out again because they are already
-in the swap file.
-This saves I/O.)
-.TP
-.IR Active " %lu"
-Memory that has been used more recently and usually not
-reclaimed unless absolutely necessary.
-.TP
-.IR Inactive " %lu"
-Memory which has been less recently used.
-It is more eligible to be reclaimed for other purposes.
-.TP
-.IR Active(anon) " %lu (since Linux 2.6.28)"
-[To be documented.]
-.TP
-.IR Inactive(anon) " %lu (since Linux 2.6.28)"
-[To be documented.]
-.TP
-.IR Active(file) " %lu (since Linux 2.6.28)"
-[To be documented.]
-.TP
-.IR Inactive(file) " %lu (since Linux 2.6.28)"
-[To be documented.]
-.TP
-.IR Unevictable " %lu (since Linux 2.6.28)"
-(From Linux 2.6.28 to Linux 2.6.30,
-\fBCONFIG_UNEVICTABLE_LRU\fP was required.)
-[To be documented.]
-.TP
-.IR Mlocked " %lu (since Linux 2.6.28)"
-(From Linux 2.6.28 to Linux 2.6.30,
-\fBCONFIG_UNEVICTABLE_LRU\fP was required.)
-[To be documented.]
-.TP
-.IR HighTotal " %lu"
-(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)
-Total amount of highmem.
-Highmem is all memory above \[ti]860 MB of physical memory.
-Highmem areas are for use by user-space programs,
-or for the page cache.
-The kernel must use tricks to access
-this memory, making it slower to access than lowmem.
-.TP
-.IR HighFree " %lu"
-(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)
-Amount of free highmem.
-.TP
-.IR LowTotal " %lu"
-(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)
-Total amount of lowmem.
-Lowmem is memory which can be used for everything that
-highmem can be used for, but it is also available for the
-kernel's use for its own data structures.
-Among many other things,
-it is where everything from
-.I Slab
-is allocated.
-Bad things happen when you're out of lowmem.
-.TP
-.IR LowFree " %lu"
-(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)
-Amount of free lowmem.
-.TP
-.IR MmapCopy " %lu (since Linux 2.6.29)"
-.RB ( CONFIG_MMU
-is required.)
-[To be documented.]
-.TP
-.IR SwapTotal " %lu"
-Total amount of swap space available.
-.TP
-.IR SwapFree " %lu"
-Amount of swap space that is currently unused.
-.TP
-.IR Dirty " %lu"
-Memory which is waiting to get written back to the disk.
-.TP
-.IR Writeback " %lu"
-Memory which is actively being written back to the disk.
-.TP
-.IR AnonPages " %lu (since Linux 2.6.18)"
-Non-file backed pages mapped into user-space page tables.
-.TP
-.IR Mapped " %lu"
-Files which have been mapped into memory (with
-.BR mmap (2)),
-such as libraries.
-.TP
-.IR Shmem " %lu (since Linux 2.6.32)"
-Amount of memory consumed in
-.BR tmpfs (5)
-filesystems.
-.TP
-.IR KReclaimable " %lu (since Linux 4.20)"
-Kernel allocations that the kernel will attempt to reclaim
-under memory pressure.
-Includes
-.I SReclaimable
-(below), and other direct allocations with a shrinker.
-.TP
-.IR Slab " %lu"
-In-kernel data structures cache.
-(See
-.BR slabinfo (5).)
-.TP
-.IR SReclaimable " %lu (since Linux 2.6.19)"
-Part of
-.IR Slab ,
-that might be reclaimed, such as caches.
-.TP
-.IR SUnreclaim " %lu (since Linux 2.6.19)"
-Part of
-.IR Slab ,
-that cannot be reclaimed on memory pressure.
-.TP
-.IR KernelStack " %lu (since Linux 2.6.32)"
-Amount of memory allocated to kernel stacks.
-.TP
-.IR PageTables " %lu (since Linux 2.6.18)"
-Amount of memory dedicated to the lowest level of page tables.
-.TP
-.IR Quicklists " %lu (since Linux 2.6.27)"
-(\fBCONFIG_QUICKLIST\fP is required.)
-[To be documented.]
-.TP
-.IR NFS_Unstable " %lu (since Linux 2.6.18)"
-NFS pages sent to the server, but not yet committed to stable storage.
-.TP
-.IR Bounce " %lu (since Linux 2.6.18)"
-Memory used for block device "bounce buffers".
-.TP
-.IR WritebackTmp " %lu (since Linux 2.6.26)"
-Memory used by FUSE for temporary writeback buffers.
-.TP
-.IR CommitLimit " %lu (since Linux 2.6.10)"
-This is the total amount of memory currently available to
-be allocated on the system, expressed in kilobytes.
-This limit is adhered to
-only if strict overcommit accounting is enabled (mode 2 in
-.IR /proc/sys/vm/overcommit_memory ).
-The limit is calculated according to the formula described under
-.IR /proc/sys/vm/overcommit_memory .
-For further details, see the kernel source file
-.IR Documentation/vm/overcommit\-accounting.rst .
-.TP
-.IR Committed_AS " %lu"
-The amount of memory presently allocated on the system.
-The committed memory is a sum of all of the memory which
-has been allocated by processes, even if it has not been
-"used" by them as of yet.
-A process which allocates 1 GB of memory (using
-.BR malloc (3)
-or similar), but touches only 300 MB of that memory will show up
-as using only 300 MB of memory even if it has the address space
-allocated for the entire 1 GB.
-.IP
-This 1 GB is memory which has been "committed" to by the VM
-and can be used at any time by the allocating application.
-With strict overcommit enabled on the system (mode 2 in
-.IR /proc/sys/vm/overcommit_memory ),
-allocations which would exceed the
-.I CommitLimit
-will not be permitted.
-This is useful if one needs to guarantee that processes will not
-fail due to lack of memory once that memory has been successfully allocated.
-.TP
-.IR VmallocTotal " %lu"
-Total size of vmalloc memory area.
-.TP
-.IR VmallocUsed " %lu"
-Amount of vmalloc area which is used.
-Since Linux 4.4,
-.\" commit a5ad88ce8c7fae7ddc72ee49a11a75aa837788e0
-this field is no longer calculated, and is hard coded as 0.
-See
-.IR /proc/vmallocinfo .
-.TP
-.IR VmallocChunk " %lu"
-Largest contiguous block of vmalloc area which is free.
-Since Linux 4.4,
-.\" commit a5ad88ce8c7fae7ddc72ee49a11a75aa837788e0
-this field is no longer calculated and is hard coded as 0.
-See
-.IR /proc/vmallocinfo .
-.TP
-.IR HardwareCorrupted " %lu (since Linux 2.6.32)"
-(\fBCONFIG_MEMORY_FAILURE\fP is required.)
-[To be documented.]
-.TP
-.IR LazyFree " %lu (since Linux 4.12)"
-Shows the amount of memory marked by
-.BR madvise (2)
-.BR MADV_FREE .
-.TP
-.IR AnonHugePages " %lu (since Linux 2.6.38)"
-(\fBCONFIG_TRANSPARENT_HUGEPAGE\fP is required.)
-Non-file backed huge pages mapped into user-space page tables.
-.TP
-.IR ShmemHugePages " %lu (since Linux 4.8)"
-(\fBCONFIG_TRANSPARENT_HUGEPAGE\fP is required.)
-Memory used by shared memory (shmem) and
-.BR tmpfs (5)
-allocated with huge pages.
-.TP
-.IR ShmemPmdMapped " %lu (since Linux 4.8)"
-(\fBCONFIG_TRANSPARENT_HUGEPAGE\fP is required.)
-Shared memory mapped into user space with huge pages.
-.TP
-.IR CmaTotal " %lu (since Linux 3.1)"
-Total CMA (Contiguous Memory Allocator) pages.
-(\fBCONFIG_CMA\fP is required.)
-.TP
-.IR CmaFree " %lu (since Linux 3.1)"
-Free CMA (Contiguous Memory Allocator) pages.
-(\fBCONFIG_CMA\fP is required.)
-.TP
-.IR HugePages_Total " %lu"
-(\fBCONFIG_HUGETLB_PAGE\fP is required.)
-The size of the pool of huge pages.
-.TP
-.IR HugePages_Free " %lu"
-(\fBCONFIG_HUGETLB_PAGE\fP is required.)
-The number of huge pages in the pool that are not yet allocated.
-.TP
-.IR HugePages_Rsvd " %lu (since Linux 2.6.17)"
-(\fBCONFIG_HUGETLB_PAGE\fP is required.)
-This is the number of huge pages for
-which a commitment to allocate from the pool has been made,
-but no allocation has yet been made.
-These reserved huge pages
-guarantee that an application will be able to allocate a
-huge page from the pool of huge pages at fault time.
-.TP
-.IR HugePages_Surp " %lu (since Linux 2.6.24)"
-(\fBCONFIG_HUGETLB_PAGE\fP is required.)
-This is the number of huge pages in
-the pool above the value in
-.IR /proc/sys/vm/nr_hugepages .
-The maximum number of surplus huge pages is controlled by
-.IR /proc/sys/vm/nr_overcommit_hugepages .
-.TP
-.IR Hugepagesize " %lu"
-(\fBCONFIG_HUGETLB_PAGE\fP is required.)
-The size of huge pages.
-.TP
-.IR DirectMap4k " %lu (since Linux 2.6.27)"
-Number of bytes of RAM linearly mapped by kernel in 4 kB pages.
-(x86.)
-.TP
-.IR DirectMap4M " %lu (since Linux 2.6.27)"
-Number of bytes of RAM linearly mapped by kernel in 4 MB pages.
-(x86 with
-.B CONFIG_X86_64
-or
-.B CONFIG_X86_PAE
-enabled.)
-.TP
-.IR DirectMap2M " %lu (since Linux 2.6.27)"
-Number of bytes of RAM linearly mapped by kernel in 2 MB pages.
-(x86 with neither
-.B CONFIG_X86_64
-nor
-.B CONFIG_X86_PAE
-enabled.)
-.TP
-.IR DirectMap1G " %lu (since Linux 2.6.27)"
-(x86 with
-.B CONFIG_X86_64
-and
-.B CONFIG_X86_DIRECT_GBPAGES
-enabled.)
-.RE
-.TP
-.I /proc/modules
-A text list of the modules that have been loaded by the system.
-See also
-.BR lsmod (8).
-.TP
-.I /proc/mounts
-Before Linux 2.4.19, this file was a list
-of all the filesystems currently mounted on the system.
-With the introduction of per-process mount namespaces in Linux 2.4.19 (see
-.BR mount_namespaces (7)),
-this file became a link to
-.IR /proc/self/mounts ,
-which lists the mounts of the process's own mount namespace.
-The format of this file is documented in
-.BR fstab (5).
-.TP
-.I /proc/mtrr
-Memory Type Range Registers.
-See the Linux kernel source file
-.I Documentation/x86/mtrr.rst
-(or
-.I Documentation/x86/mtrr.txt
-.\" commit 7225e75144b9718cbbe1820d9c011c809d5773fd
-before Linux 5.2, or
-.I Documentation/mtrr.txt
-before Linux 2.6.28)
-for details.
-.TP
-.I /proc/net
-This directory contains various files and subdirectories containing
-information about the networking layer.
-The files contain ASCII structures and are,
-therefore, readable with
-.BR cat (1).
-However, the standard
-.BR netstat (8)
-suite provides much cleaner access to these files.
-.IP
-With the advent of network namespaces,
-various information relating to the network stack is virtualized (see
-.BR network_namespaces (7)).
-Thus, since Linux 2.6.25,
-.\" commit e9720acd728a46cb40daa52c99a979f7c4ff195c
-.I /proc/net
-is a symbolic link to the directory
-.IR /proc/self/net ,
-which contains the same files and directories as listed below.
-However, these files and directories now expose information
-for the network namespace of which the process is a member.
-.TP
-.I /proc/net/arp
-This holds an ASCII readable dump of the kernel ARP table used for
-address resolutions.
-It will show both dynamically learned and preprogrammed ARP entries.
-The format is:
-.IP
-.in +4n
-.EX
-IP address HW type Flags HW address Mask Device
-192.168.0.50 0x1 0x2 00:50:BF:25:68:F3 * eth0
-192.168.0.250 0x1 0xc 00:00:00:00:00:00 * eth0
-.EE
-.in
-.IP
-Here "IP address" is the IPv4 address of the machine and the "HW type"
-is the hardware type of the address from RFC\ 826.
-The flags are the internal
-flags of the ARP structure (as defined in
-.IR /usr/include/linux/if_arp.h )
-and
-the "HW address" is the data link layer mapping for that IP address if
-it is known.
-.TP
-.I /proc/net/dev
-The dev pseudo-file contains network device status information.
-This gives
-the number of received and sent packets, the number of errors and
-collisions
-and other basic statistics.
-These are used by the
-.BR ifconfig (8)
-program to report device status.
-The format is:
-.IP
-.EX
-Inter\-| Receive | Transmit
- face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
- lo: 2776770 11307 0 0 0 0 0 0 2776770 11307 0 0 0 0 0 0
- eth0: 1215645 2751 0 0 0 0 0 0 1782404 4324 0 0 0 427 0 0
- ppp0: 1622270 5552 1 0 0 0 0 0 354130 5669 0 0 0 0 0 0
- tap0: 7714 81 0 0 0 0 0 0 7714 81 0 0 0 0 0 0
-.EE
-.\" .TP
-.\" .I /proc/net/ipx
-.\" No information.
-.\" .TP
-.\" .I /proc/net/ipx_route
-.\" No information.
-.TP
-.I /proc/net/dev_mcast
-Defined in
-.IR /usr/src/linux/net/core/dev_mcast.c :
-.IP
-.in +4n
-.EX
-indx interface_name dmi_u dmi_g dmi_address
-2 eth0 1 0 01005e000001
-3 eth1 1 0 01005e000001
-4 eth2 1 0 01005e000001
-.EE
-.in
-.TP
-.I /proc/net/igmp
-Internet Group Management Protocol.
-Defined in
-.IR /usr/src/linux/net/core/igmp.c .
-.TP
-.I /proc/net/rarp
-This file uses the same format as the
-.I arp
-file and contains the current reverse mapping database used to provide
-.BR rarp (8)
-reverse address lookup services.
-If RARP is not configured into the
-kernel,
-this file will not be present.
-.TP
-.I /proc/net/raw
-Holds a dump of the RAW socket table.
-Much of the information is not of
-use
-apart from debugging.
-The "sl" value is the kernel hash slot for the
-socket,
-the "local_address" is the local address and protocol number pair.
-\&"St" is
-the internal status of the socket.
-The "tx_queue" and "rx_queue" are the
-outgoing and incoming data queue in terms of kernel memory usage.
-The "tr", "tm\->when", and "rexmits" fields are not used by RAW.
-The "uid"
-field holds the effective UID of the creator of the socket.
-.\" .TP
-.\" .I /proc/net/route
-.\" No information, but looks similar to
-.\" .BR route (8).
-.TP
-.I /proc/net/snmp
-This file holds the ASCII data needed for the IP, ICMP, TCP, and UDP
-management
-information bases for an SNMP agent.
-.TP
-.I /proc/net/tcp
-Holds a dump of the TCP socket table.
-Much of the information is not
-of use apart from debugging.
-The "sl" value is the kernel hash slot
-for the socket, the "local_address" is the local address and port number pair.
-The "rem_address" is the remote address and port number pair
-(if connected).
-\&"St" is the internal status of the socket.
-The "tx_queue" and "rx_queue" are the
-outgoing and incoming data queue in terms of kernel memory usage.
-The "tr", "tm\->when", and "rexmits" fields hold internal information of
-the kernel socket state and are useful only for debugging.
-The "uid"
-field holds the effective UID of the creator of the socket.
-.TP
-.I /proc/net/udp
-Holds a dump of the UDP socket table.
-Much of the information is not of
-use apart from debugging.
-The "sl" value is the kernel hash slot for the
-socket, the "local_address" is the local address and port number pair.
-The "rem_address" is the remote address and port number pair
-(if connected).
-"St" is the internal status of the socket.
-The "tx_queue" and "rx_queue" are the outgoing and incoming data queue
-in terms of kernel memory usage.
-The "tr", "tm\->when", and "rexmits" fields
-are not used by UDP.
-The "uid"
-field holds the effective UID of the creator of the socket.
-The format is:
-.IP
-.EX
-sl local_address rem_address st tx_queue rx_queue tr rexmits tm\->when uid
- 1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0
- 1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0
- 1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0
-.EE
-.TP
-.I /proc/net/unix
-Lists the UNIX domain sockets present within the system and their
-status.
-The format is:
-.IP
-.EX
-Num RefCount Protocol Flags Type St Inode Path
- 0: 00000002 00000000 00000000 0001 03 42
- 1: 00000001 00000000 00010000 0001 01 1948 /dev/printer
-.EE
-.IP
-The fields are as follows:
-.RS
-.TP 10
-.IR Num :
-the kernel table slot number.
-.TP
-.IR RefCount :
-the number of users of the socket.
-.TP
-.IR Protocol :
-currently always 0.
-.TP
-.IR Flags :
-the internal kernel flags holding the status of the socket.
-.TP
-.IR Type :
-the socket type.
-For
-.B SOCK_STREAM
-sockets, this is 0001; for
-.B SOCK_DGRAM
-sockets, it is 0002; and for
-.B SOCK_SEQPACKET
-sockets, it is 0005.
-.TP
-.IR St :
-the internal state of the socket.
-.TP
-.IR Inode :
-the inode number of the socket.
-.TP
-.IR Path :
-the bound pathname (if any) of the socket.
-Sockets in the abstract namespace are included in the list,
-and are shown with a
-.I Path
-that commences with the character '@'.
-.RE
-.TP
-.I /proc/net/netfilter/nfnetlink_queue
-This file contains information about netfilter user-space queueing, if used.
-Each line represents a queue.
-Queues that have not been subscribed to
-by user space are not shown.
-.IP
-.in +4n
-.EX
- 1 4207 0 2 65535 0 0 0 1
- (1) (2) (3)(4) (5) (6) (7) (8)
-.EE
-.in
-.IP
-The fields in each line are:
-.RS 7
-.TP 5
-(1)
-The ID of the queue.
-This matches what is specified in the
-.B \-\-queue\-num
-or
-.B \-\-queue\-balance
-options to the
-.BR iptables (8)
-NFQUEUE target.
-See
-.BR iptables\-extensions (8)
-for more information.
-.TP
-(2)
-The netlink port ID subscribed to the queue.
-.TP
-(3)
-The number of packets currently queued and waiting to be processed by
-the application.
-.TP
-(4)
-The copy mode of the queue.
-It is either 1 (metadata only) or 2
-(also copy payload data to user space).
-.TP
-(5)
-Copy range; that is, how many bytes of packet payload should be copied to
-user space at most.
-.TP
-(6)
-queue dropped.
-Number of packets that had to be dropped by the kernel because
-too many packets are already waiting for user space to send back the mandatory
-accept/drop verdicts.
-.TP
-(7)
-queue user dropped.
-Number of packets that were dropped within the netlink
-subsystem.
-Such drops usually happen when the corresponding socket buffer is
-full; that is, user space is not able to read messages fast enough.
-.TP
-(8)
-sequence number.
-Every queued packet is associated with a (32-bit)
-monotonically increasing sequence number.
-This shows the ID of the most recent packet queued.
-.RE
-.IP
-The last number exists only for compatibility reasons and is always 1.
-.TP
-.I /proc/partitions
-Contains the major and minor numbers of each partition as well as the number
-of 1024-byte blocks and the partition name.
-.TP
-.I /proc/pci
-This is a listing of all PCI devices found during kernel initialization
-and their configuration.
-.IP
-This file has been deprecated in favor of a new
-.I /proc
-interface for PCI
-.RI ( /proc/bus/pci ).
-It became optional in Linux 2.2 (available with
-.B CONFIG_PCI_OLD_PROC
-set at kernel compilation).
-It became once more nonoptionally enabled in Linux 2.4.
-Next, it was deprecated in Linux 2.6 (still available with
-.B CONFIG_PCI_LEGACY_PROC
-set), and finally removed altogether since Linux 2.6.17.
-.\" FIXME Document /proc/sched_debug (since Linux 2.6.23)
-.\" See also /proc/[pid]/sched
-.TP
-.IR /proc/profile " (since Linux 2.4)"
-This file is present only if the kernel was booted with the
-.I profile=1
-command-line option.
-It exposes kernel profiling information in a binary format for use by
-.BR readprofile (1).
-Writing (e.g., an empty string) to this file resets the profiling counters;
-on some architectures,
-writing a binary integer "profiling multiplier" of size
-.I sizeof(int)
-sets the profiling interrupt frequency.
-.TP
-.I /proc/scsi
-A directory with the
-.I scsi
-mid-level pseudo-file and various SCSI low-level
-driver directories,
-which contain a file for each SCSI host in this system, all of
-which give the status of some part of the SCSI IO subsystem.
-These files contain ASCII structures and are, therefore, readable with
-.BR cat (1).
-.IP
-You can also write to some of the files to reconfigure the subsystem or
-switch certain features on or off.
-.TP
-.I /proc/scsi/scsi
-This is a listing of all SCSI devices known to the kernel.
-The listing is similar to the one seen during bootup.
-scsi currently supports only the \fIadd\-single\-device\fP command which
-allows root to add a hotplugged device to the list of known devices.
-.IP
-The command
-.IP
-.in +4n
-.EX
-echo \[aq]scsi add\-single\-device 1 0 5 0\[aq] > /proc/scsi/scsi
-.EE
-.in
-.IP
-will cause
-host scsi1 to scan on SCSI channel 0 for a device on ID 5 LUN 0.
-If there
-is already a device known on this address or the address is invalid, an
-error will be returned.
-.TP
-.IR /proc/scsi/ drivername
-\fIdrivername\fP can currently be NCR53c7xx, aha152x, aha1542, aha1740,
-aic7xxx, buslogic, eata_dma, eata_pio, fdomain, in2000, pas16, qlogic,
-scsi_debug, seagate, t128, u15\-24f, ultrastore, or wd7000.
-These directories show up for all drivers that registered at least one
-SCSI HBA.
-Every directory contains one file per registered host.
-Every host-file is named after the number the host was assigned during
-initialization.
-.IP
-Reading these files will usually show driver and host configuration,
-statistics, and so on.
-.IP
-Writing to these files allows different things on different hosts.
-For example, with the \fIlatency\fP and \fInolatency\fP commands,
-root can switch on and off command latency measurement code in the
-eata_dma driver.
-With the \fIlockup\fP and \fIunlock\fP commands,
-root can control bus lockups simulated by the scsi_debug driver.
-.TP
-.I /proc/self
-This directory refers to the process accessing the
-.I /proc
-filesystem,
-and is identical to the
-.I /proc
-directory named by the process ID of the same process.
-.TP
-.I /proc/slabinfo
-Information about kernel caches.
-See
-.BR slabinfo (5)
-for details.
-.TP
-.I /proc/stat
-kernel/system statistics.
-Varies with architecture.
-Common
-entries include:
-.RS
-.TP
-.I cpu 10132153 290696 3084719 46828483 16683 0 25195 0 175628 0
-.TQ
-.I cpu0 1393280 32966 572056 13343292 6130 0 17875 0 23933 0
-The amount of time, measured in units of
-USER_HZ (1/100ths of a second on most architectures, use
-.I sysconf(_SC_CLK_TCK)
-to obtain the right value),
-.\" 1024 on Alpha and ia64
-that the system ("cpu" line) or the specific CPU ("cpu\fIN\fR" line)
-spent in various states:
-.RS
-.TP
-.I user
-(1) Time spent in user mode.
-.TP
-.I nice
-(2) Time spent in user mode with low priority (nice).
-.TP
-.I system
-(3) Time spent in system mode.
-.TP
-.I idle
-(4) Time spent in the idle task.
-.\" FIXME . Actually, the following info about the /proc/stat 'cpu' field
-.\" does not seem to be quite right (at least in Linux 2.6.12 or Linux 3.6):
-.\" the idle time in /proc/uptime does not quite match this value
-This value should be USER_HZ times the
-second entry in the
-.I /proc/uptime
-pseudo-file.
-.TP
-.IR iowait " (since Linux 2.5.41)"
-(5) Time waiting for I/O to complete.
-This value is not reliable, for the following reasons:
-.\" See kernel commit 9c240d757658a3ae9968dd309e674c61f07c7f48
-.RS
-.IP \[bu] 3
-The CPU will not wait for I/O to complete;
-iowait is the time that a task is waiting for I/O to complete.
-When a CPU goes into idle state for outstanding task I/O,
-another task will be scheduled on this CPU.
-.IP \[bu]
-On a multi-core CPU,
-the task waiting for I/O to complete is not running on any CPU,
-so the iowait of each CPU is difficult to calculate.
-.IP \[bu]
-The value in this field may
-.I decrease
-in certain conditions.
-.RE
-.TP
-.IR irq " (since Linux 2.6.0)"
-.\" Precisely: Linux 2.6.0-test4
-(6) Time servicing interrupts.
-.TP
-.IR softirq " (since Linux 2.6.0)"
-.\" Precisely: Linux 2.6.0-test4
-(7) Time servicing softirqs.
-.TP
-.IR steal " (since Linux 2.6.11)"
-(8) Stolen time, which is the time spent in other operating systems when
-running in a virtualized environment
-.TP
-.IR guest " (since Linux 2.6.24)"
-(9) Time spent running a virtual CPU for guest
-operating systems under the control of the Linux kernel.
-.\" See Changelog entry for 5e84cfde51cf303d368fcb48f22059f37b3872de
-.TP
-.IR guest_nice " (since Linux 2.6.33)"
-.\" commit ce0e7b28fb75cb003cfc8d0238613aaf1c55e797
-(10) Time spent running a niced guest (virtual CPU for guest
-operating systems under the control of the Linux kernel).
-.RE
-.TP
-\fIpage 5741 1808\fP
-The number of pages the system paged in and the number that were paged
-out (from disk).
-.TP
-\fIswap 1 0\fP
-The number of swap pages that have been brought in and out.
-.TP
-.\" FIXME . The following is not the full picture for the 'intr' of
-.\" /proc/stat on 2.6:
-\fIintr 1462898\fP
-This line shows counts of interrupts serviced since boot time,
-for each of the possible system interrupts.
-The first column is the total of all interrupts serviced
-including unnumbered architecture specific interrupts;
-each subsequent column is the total for that particular numbered interrupt.
-Unnumbered interrupts are not shown, only summed into the total.
-.TP
-\fIdisk_io: (2,0):(31,30,5764,1,2) (3,0):\fP...
-(major,disk_idx):(noinfo, read_io_ops, blks_read, write_io_ops, blks_written)
-.br
-(Linux 2.4 only)
-.TP
-\fIctxt 115315\fP
-The number of context switches that the system underwent.
-.TP
-\fIbtime 769041601\fP
-boot time, in seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC).
-.TP
-\fIprocesses 86031\fP
-Number of forks since boot.
-.TP
-\fIprocs_running 6\fP
-Number of processes in runnable state.
-(Linux 2.5.45 onward.)
-.TP
-\fIprocs_blocked 2\fP
-Number of processes blocked waiting for I/O to complete.
-(Linux 2.5.45 onward.)
-.TP
-.I softirq 229245889 94 60001584 13619 5175704 2471304 28 51212741 59130143 0 51240672
-.\" commit d3d64df21d3d0de675a0d3ffa7c10514f3644b30
-This line shows the number of softirq for all CPUs.
-The first column is the total of all softirqs and
-each subsequent column is the total for particular softirq.
-(Linux 2.6.31 onward.)
-.RE
-.TP
-.I /proc/swaps
-Swap areas in use.
-See also
-.BR swapon (8).
-.TP
-.I /proc/sys
-This directory (present since Linux 1.3.57) contains a number of files
-and subdirectories corresponding to kernel variables.
-These variables can be read and in some cases modified using
-the \fI/proc\fP filesystem, and the (deprecated)
-.BR sysctl (2)
-system call.
-.IP
-String values may be terminated by either \[aq]\e0\[aq] or \[aq]\en\[aq].
-.IP
-Integer and long values may be written either in decimal or in
-hexadecimal notation (e.g., 0x3FFF).
-When writing multiple integer or long values, these may be separated
-by any of the following whitespace characters:
-\[aq]\ \[aq], \[aq]\et\[aq], or \[aq]\en\[aq].
-Using other separators leads to the error
-.BR EINVAL .
-.TP
-.IR /proc/sys/abi " (since Linux 2.4.10)"
-This directory may contain files with application binary information.
-.\" On some systems, it is not present.
-See the Linux kernel source file
-.I Documentation/sysctl/abi.rst
-(or
-.I Documentation/sysctl/abi.txt
-before Linux 5.3)
-for more information.
-.TP
-.I /proc/sys/debug
-This directory may be empty.
-.TP
-.I /proc/sys/dev
-This directory contains device-specific information (e.g.,
-.IR dev/cdrom/info ).
-On
-some systems, it may be empty.
-.TP
-.I /proc/sys/fs
-This directory contains the files and subdirectories for kernel variables
-related to filesystems.
-.TP
-.IR /proc/sys/fs/aio\-max\-nr " and " /proc/sys/fs/aio\-nr " (since Linux 2.6.4)"
-.I aio\-nr
-is the running total of the number of events specified by
-.BR io_setup (2)
-calls for all currently active AIO contexts.
-If
-.I aio\-nr
-reaches
-.IR aio\-max\-nr ,
-then
-.BR io_setup (2)
-will fail with the error
-.BR EAGAIN .
-Raising
-.I aio\-max\-nr
-does not result in the preallocation or resizing
-of any kernel data structures.
-.TP
-.I /proc/sys/fs/binfmt_misc
-Documentation for files in this directory can be found
-in the Linux kernel source in the file
-.I Documentation/admin\-guide/binfmt\-misc.rst
-(or in
-.I Documentation/binfmt_misc.txt
-on older kernels).
-.TP
-.IR /proc/sys/fs/dentry\-state " (since Linux 2.2)"
-This file contains information about the status of the
-directory cache (dcache).
-The file contains six numbers,
-.IR nr_dentry ,
-.IR nr_unused ,
-.I age_limit
-(age in seconds),
-.I want_pages
-(pages requested by system) and two dummy values.
-.RS
-.IP \[bu] 3
-.I nr_dentry
-is the number of allocated dentries (dcache entries).
-This field is unused in Linux 2.2.
-.IP \[bu]
-.I nr_unused
-is the number of unused dentries.
-.IP \[bu]
-.I age_limit
-.\" looks like this is unused in Linux 2.2 to Linux 2.6
-is the age in seconds after which dcache entries
-can be reclaimed when memory is short.
-.IP \[bu]
-.I want_pages
-.\" looks like this is unused in Linux 2.2 to Linux 2.6
-is nonzero when the kernel has called shrink_dcache_pages() and the
-dcache isn't pruned yet.
-.RE
-.TP
-.I /proc/sys/fs/dir\-notify\-enable
-This file can be used to disable or enable the
-.I dnotify
-interface described in
-.BR fcntl (2)
-on a system-wide basis.
-A value of 0 in this file disables the interface,
-and a value of 1 enables it.
-.TP
-.I /proc/sys/fs/dquot\-max
-This file shows the maximum number of cached disk quota entries.
-On some (2.4) systems, it is not present.
-If the number of free cached disk quota entries is very low and
-you have some awesome number of simultaneous system users,
-you might want to raise the limit.
-.TP
-.I /proc/sys/fs/dquot\-nr
-This file shows the number of allocated disk quota
-entries and the number of free disk quota entries.
-.TP
-.IR /proc/sys/fs/epoll " (since Linux 2.6.28)"
-This directory contains the file
-.IR max_user_watches ,
-which can be used to limit the amount of kernel memory consumed by the
-.I epoll
-interface.
-For further details, see
-.BR epoll (7).
-.TP
-.I /proc/sys/fs/file\-max
-This file defines
-a system-wide limit on the number of open files for all processes.
-System calls that fail when encountering this limit fail with the error
-.BR ENFILE .
-(See also
-.BR setrlimit (2),
-which can be used by a process to set the per-process limit,
-.BR RLIMIT_NOFILE ,
-on the number of files it may open.)
-If you get lots
-of error messages in the kernel log about running out of file handles
-(open file descriptions)
-(look for "VFS: file\-max limit <number> reached"),
-try increasing this value:
-.IP
-.in +4n
-.EX
-echo 100000 > /proc/sys/fs/file\-max
-.EE
-.in
-.IP
-Privileged processes
-.RB ( CAP_SYS_ADMIN )
-can override the
-.I file\-max
-limit.
-.TP
-.I /proc/sys/fs/file\-nr
-This (read-only) file contains three numbers:
-the number of allocated file handles
-(i.e., the number of open file descriptions; see
-.BR open (2));
-the number of free file handles;
-and the maximum number of file handles (i.e., the same value as
-.IR /proc/sys/fs/file\-max ).
-If the number of allocated file handles is close to the
-maximum, you should consider increasing the maximum.
-Before Linux 2.6,
-the kernel allocated file handles dynamically,
-but it didn't free them again.
-Instead the free file handles were kept in a list for reallocation;
-the "free file handles" value indicates the size of that list.
-A large number of free file handles indicates that there was
-a past peak in the usage of open file handles.
-Since Linux 2.6, the kernel does deallocate freed file handles,
-and the "free file handles" value is always zero.
-.TP
-.IR /proc/sys/fs/inode\-max " (only present until Linux 2.2)"
-This file contains the maximum number of in-memory inodes.
-This value should be 3\[en]4 times larger
-than the value in
-.IR file\-max ,
-since \fIstdin\fP, \fIstdout\fP
-and network sockets also need an inode to handle them.
-When you regularly run out of inodes, you need to increase this value.
-.IP
-Starting with Linux 2.4,
-there is no longer a static limit on the number of inodes,
-and this file is removed.
-.TP
-.I /proc/sys/fs/inode\-nr
-This file contains the first two values from
-.IR inode\-state .
-.TP
-.I /proc/sys/fs/inode\-state
-This file
-contains seven numbers:
-.IR nr_inodes ,
-.IR nr_free_inodes ,
-.IR preshrink ,
-and four dummy values (always zero).
-.IP
-.I nr_inodes
-is the number of inodes the system has allocated.
-.\" This can be slightly more than
-.\" .I inode\-max
-.\" because Linux allocates them one page full at a time.
-.I nr_free_inodes
-represents the number of free inodes.
-.IP
-.I preshrink
-is nonzero when the
-.I nr_inodes
->
-.I inode\-max
-and the system needs to prune the inode list instead of allocating more;
-since Linux 2.4, this field is a dummy value (always zero).
-.TP
-.IR /proc/sys/fs/inotify " (since Linux 2.6.13)"
-This directory contains files
-.IR max_queued_events ", " max_user_instances ", and " max_user_watches ,
-that can be used to limit the amount of kernel memory consumed by the
-.I inotify
-interface.
-For further details, see
-.BR inotify (7).
-.TP
-.I /proc/sys/fs/lease\-break\-time
-This file specifies the grace period that the kernel grants to a process
-holding a file lease
-.RB ( fcntl (2))
-after it has sent a signal to that process notifying it
-that another process is waiting to open the file.
-If the lease holder does not remove or downgrade the lease within
-this grace period, the kernel forcibly breaks the lease.
-.TP
-.I /proc/sys/fs/leases\-enable
-This file can be used to enable or disable file leases
-.RB ( fcntl (2))
-on a system-wide basis.
-If this file contains the value 0, leases are disabled.
-A nonzero value enables leases.
-.TP
-.IR /proc/sys/fs/mount\-max " (since Linux 4.9)"
-.\" commit d29216842a85c7970c536108e093963f02714498
-The value in this file specifies the maximum number of mounts that may exist
-in a mount namespace.
-The default value in this file is 100,000.
-.TP
-.IR /proc/sys/fs/mqueue " (since Linux 2.6.6)"
-This directory contains files
-.IR msg_max ", " msgsize_max ", and " queues_max ,
-controlling the resources used by POSIX message queues.
-See
-.BR mq_overview (7)
-for details.
-.TP
-.IR /proc/sys/fs/nr_open " (since Linux 2.6.25)"
-.\" commit 9cfe015aa424b3c003baba3841a60dd9b5ad319b
-This file imposes a ceiling on the value to which the
-.B RLIMIT_NOFILE
-resource limit can be raised (see
-.BR getrlimit (2)).
-This ceiling is enforced for both unprivileged and privileged process.
-The default value in this file is 1048576.
-(Before Linux 2.6.25, the ceiling for
-.B RLIMIT_NOFILE
-was hard-coded to the same value.)
-.TP
-.IR /proc/sys/fs/overflowgid " and " /proc/sys/fs/overflowuid
-These files
-allow you to change the value of the fixed UID and GID.
-The default is 65534.
-Some filesystems support only 16-bit UIDs and GIDs, although in Linux
-UIDs and GIDs are 32 bits.
-When one of these filesystems is mounted
-with writes enabled, any UID or GID that would exceed 65535 is translated
-to the overflow value before being written to disk.
-.TP
-.IR /proc/sys/fs/pipe\-max\-size " (since Linux 2.6.35)"
-See
-.BR pipe (7).
-.TP
-.IR /proc/sys/fs/pipe\-user\-pages\-hard " (since Linux 4.5)"
-See
-.BR pipe (7).
-.TP
-.IR /proc/sys/fs/pipe\-user\-pages\-soft " (since Linux 4.5)"
-See
-.BR pipe (7).
-.TP
-.IR /proc/sys/fs/protected_fifos " (since Linux 4.19)"
-The value in this file is/can be set to one of the following:
-.RS
-.TP 4
-0
-Writing to FIFOs is unrestricted.
-.TP
-1
-Don't allow
-.B O_CREAT
-.BR open (2)
-on FIFOs that the caller doesn't own in world-writable sticky directories,
-unless the FIFO is owned by the owner of the directory.
-.TP
-2
-As for the value 1,
-but the restriction also applies to group-writable sticky directories.
-.RE
-.IP
-The intent of the above protections is to avoid unintentional writes to an
-attacker-controlled FIFO when a program expected to create a regular file.
-.TP
-.IR /proc/sys/fs/protected_hardlinks " (since Linux 3.6)"
-.\" commit 800179c9b8a1e796e441674776d11cd4c05d61d7
-When the value in this file is 0,
-no restrictions are placed on the creation of hard links
-(i.e., this is the historical behavior before Linux 3.6).
-When the value in this file is 1,
-a hard link can be created to a target file
-only if one of the following conditions is true:
-.RS
-.IP \[bu] 3
-The calling process has the
-.B CAP_FOWNER
-capability in its user namespace
-and the file UID has a mapping in the namespace.
-.IP \[bu]
-The filesystem UID of the process creating the link matches
-the owner (UID) of the target file
-(as described in
-.BR credentials (7),
-a process's filesystem UID is normally the same as its effective UID).
-.IP \[bu]
-All of the following conditions are true:
-.RS 4
-.IP \[bu] 3
-the target is a regular file;
-.IP \[bu]
-the target file does not have its set-user-ID mode bit enabled;
-.IP \[bu]
-the target file does not have both its set-group-ID and
-group-executable mode bits enabled; and
-.IP \[bu]
-the caller has permission to read and write the target file
-(either via the file's permissions mask or because it has
-suitable capabilities).
-.RE
-.RE
-.IP
-The default value in this file is 0.
-Setting the value to 1
-prevents a longstanding class of security issues caused by
-hard-link-based time-of-check, time-of-use races,
-most commonly seen in world-writable directories such as
-.IR /tmp .
-The common method of exploiting this flaw
-is to cross privilege boundaries when following a given hard link
-(i.e., a root process follows a hard link created by another user).
-Additionally, on systems without separated partitions,
-this stops unauthorized users from "pinning" vulnerable set-user-ID and
-set-group-ID files against being upgraded by
-the administrator, or linking to special files.
-.TP
-.IR /proc/sys/fs/protected_regular " (since Linux 4.19)"
-The value in this file is/can be set to one of the following:
-.RS
-.TP 4
-0
-Writing to regular files is unrestricted.
-.TP
-1
-Don't allow
-.B O_CREAT
-.BR open (2)
-on regular files that the caller doesn't own in
-world-writable sticky directories,
-unless the regular file is owned by the owner of the directory.
-.TP
-2
-As for the value 1,
-but the restriction also applies to group-writable sticky directories.
-.RE
-.IP
-The intent of the above protections is similar to
-.IR protected_fifos ,
-but allows an application to
-avoid writes to an attacker-controlled regular file,
-where the application expected to create one.
-.TP
-.IR /proc/sys/fs/protected_symlinks " (since Linux 3.6)"
-.\" commit 800179c9b8a1e796e441674776d11cd4c05d61d7
-When the value in this file is 0,
-no restrictions are placed on following symbolic links
-(i.e., this is the historical behavior before Linux 3.6).
-When the value in this file is 1, symbolic links are followed only
-in the following circumstances:
-.RS
-.IP \[bu] 3
-the filesystem UID of the process following the link matches
-the owner (UID) of the symbolic link
-(as described in
-.BR credentials (7),
-a process's filesystem UID is normally the same as its effective UID);
-.IP \[bu]
-the link is not in a sticky world-writable directory; or
-.IP \[bu]
-the symbolic link and its parent directory have the same owner (UID)
-.RE
-.IP
-A system call that fails to follow a symbolic link
-because of the above restrictions returns the error
-.B EACCES
-in
-.IR errno .
-.IP
-The default value in this file is 0.
-Setting the value to 1 avoids a longstanding class of security issues
-based on time-of-check, time-of-use races when accessing symbolic links.
-.TP
-.IR /proc/sys/fs/suid_dumpable " (since Linux 2.6.13)"
-.\" The following is based on text from Documentation/sysctl/kernel.txt
-The value in this file is assigned to a process's "dumpable" flag
-in the circumstances described in
-.BR prctl (2).
-In effect,
-the value in this file determines whether core dump files are
-produced for set-user-ID or otherwise protected/tainted binaries.
-The "dumpable" setting also affects the ownership of files in a process's
-.IR /proc/ pid
-directory, as described above.
-.IP
-Three different integer values can be specified:
-.RS
-.TP
-\fI0\ (default)\fP
-.\" In kernel source: SUID_DUMP_DISABLE
-This provides the traditional (pre-Linux 2.6.13) behavior.
-A core dump will not be produced for a process which has
-changed credentials (by calling
-.BR seteuid (2),
-.BR setgid (2),
-or similar, or by executing a set-user-ID or set-group-ID program)
-or whose binary does not have read permission enabled.
-.TP
-\fI1\ ("debug")\fP
-.\" In kernel source: SUID_DUMP_USER
-All processes dump core when possible.
-(Reasons why a process might nevertheless not dump core are described in
-.BR core (5).)
-The core dump is owned by the filesystem user ID of the dumping process
-and no security is applied.
-This is intended for system debugging situations only:
-this mode is insecure because it allows unprivileged users to
-examine the memory contents of privileged processes.
-.TP
-\fI2\ ("suidsafe")\fP
-.\" In kernel source: SUID_DUMP_ROOT
-Any binary which normally would not be dumped (see "0" above)
-is dumped readable by root only.
-This allows the user to remove the core dump file but not to read it.
-For security reasons core dumps in this mode will not overwrite one
-another or other files.
-This mode is appropriate when administrators are
-attempting to debug problems in a normal environment.
-.IP
-Additionally, since Linux 3.6,
-.\" 9520628e8ceb69fa9a4aee6b57f22675d9e1b709
-.I /proc/sys/kernel/core_pattern
-must either be an absolute pathname
-or a pipe command, as detailed in
-.BR core (5).
-Warnings will be written to the kernel log if
-.I core_pattern
-does not follow these rules, and no core dump will be produced.
-.\" 54b501992dd2a839e94e76aa392c392b55080ce8
-.RE
-.IP
-For details of the effect of a process's "dumpable" setting
-on ptrace access mode checking, see
-.BR ptrace (2).
-.TP
-.I /proc/sys/fs/super\-max
-This file
-controls the maximum number of superblocks, and
-thus the maximum number of mounted filesystems the kernel
-can have.
-You need increase only
-.I super\-max
-if you need to mount more filesystems than the current value in
-.I super\-max
-allows you to.
-.TP
-.I /proc/sys/fs/super\-nr
-This file
-contains the number of filesystems currently mounted.
-.TP
-.I /proc/sys/kernel
-This directory contains files controlling a range of kernel parameters,
-as described below.
-.TP
-.I /proc/sys/kernel/acct
-This file
-contains three numbers:
-.IR highwater ,
-.IR lowwater ,
-and
-.IR frequency .
-If BSD-style process accounting is enabled, these values control
-its behavior.
-If free space on filesystem where the log lives goes below
-.I lowwater
-percent, accounting suspends.
-If free space gets above
-.I highwater
-percent, accounting resumes.
-.I frequency
-determines
-how often the kernel checks the amount of free space (value is in
-seconds).
-Default values are 4, 2, and 30.
-That is, suspend accounting if 2% or less space is free; resume it
-if 4% or more space is free; consider information about amount of free space
-valid for 30 seconds.
-.TP
-.IR /proc/sys/kernel/auto_msgmni " (Linux 2.6.27 to Linux 3.18)"
-.\" commit 9eefe520c814f6f62c5d36a2ddcd3fb99dfdb30e (introduces feature)
-.\" commit 0050ee059f7fc86b1df2527aaa14ed5dc72f9973 (rendered redundant)
-From Linux 2.6.27 to Linux 3.18,
-this file was used to control recomputing of the value in
-.I /proc/sys/kernel/msgmni
-upon the addition or removal of memory or upon IPC namespace creation/removal.
-Echoing "1" into this file enabled
-.I msgmni
-automatic recomputing (and triggered a recomputation of
-.I msgmni
-based on the current amount of available memory and number of IPC namespaces).
-Echoing "0" disabled automatic recomputing.
-(Automatic recomputing was also disabled if a value was explicitly assigned to
-.IR /proc/sys/kernel/msgmni .)
-The default value in
-.I auto_msgmni
-was 1.
-.IP
-Since Linux 3.19, the content of this file has no effect (because
-.I msgmni
-.\" FIXME Must document the 3.19 'msgmni' changes.
-defaults to near the maximum value possible),
-and reads from this file always return the value "0".
-.TP
-.IR /proc/sys/kernel/cap_last_cap " (since Linux 3.2)"
-See
-.BR capabilities (7).
-.TP
-.IR /proc/sys/kernel/cap\-bound " (from Linux 2.2 to Linux 2.6.24)"
-This file holds the value of the kernel
-.I "capability bounding set"
-(expressed as a signed decimal number).
-This set is ANDed against the capabilities permitted to a process
-during
-.BR execve (2).
-Starting with Linux 2.6.25,
-the system-wide capability bounding set disappeared,
-and was replaced by a per-thread bounding set; see
-.BR capabilities (7).
-.TP
-.I /proc/sys/kernel/core_pattern
-See
-.BR core (5).
-.TP
-.I /proc/sys/kernel/core_pipe_limit
-See
-.BR core (5).
-.TP
-.I /proc/sys/kernel/core_uses_pid
-See
-.BR core (5).
-.TP
-.I /proc/sys/kernel/ctrl\-alt\-del
-This file
-controls the handling of Ctrl-Alt-Del from the keyboard.
-When the value in this file is 0, Ctrl-Alt-Del is trapped and
-sent to the
-.BR init (1)
-program to handle a graceful restart.
-When the value is greater than zero, Linux's reaction to a Vulcan
-Nerve Pinch (tm) will be an immediate reboot, without even
-syncing its dirty buffers.
-Note: when a program (like dosemu) has the keyboard in "raw"
-mode, the Ctrl-Alt-Del is intercepted by the program before it
-ever reaches the kernel tty layer, and it's up to the program
-to decide what to do with it.
-.TP
-.IR /proc/sys/kernel/dmesg_restrict " (since Linux 2.6.37)"
-The value in this file determines who can see kernel syslog contents.
-A value of 0 in this file imposes no restrictions.
-If the value is 1, only privileged users can read the kernel syslog.
-(See
-.BR syslog (2)
-for more details.)
-Since Linux 3.4,
-.\" commit 620f6e8e855d6d447688a5f67a4e176944a084e8
-only users with the
-.B CAP_SYS_ADMIN
-capability may change the value in this file.
-.TP
-.IR /proc/sys/kernel/domainname " and " /proc/sys/kernel/hostname
-can be used to set the NIS/YP domainname and the
-hostname of your box in exactly the same way as the commands
-.BR domainname (1)
-and
-.BR hostname (1),
-that is:
-.IP
-.in +4n
-.EX
-.RB "#" " echo \[aq]darkstar\[aq] > /proc/sys/kernel/hostname"
-.RB "#" " echo \[aq]mydomain\[aq] > /proc/sys/kernel/domainname"
-.EE
-.in
-.IP
-has the same effect as
-.IP
-.in +4n
-.EX
-.RB "#" " hostname \[aq]darkstar\[aq]"
-.RB "#" " domainname \[aq]mydomain\[aq]"
-.EE
-.in
-.IP
-Note, however, that the classic darkstar.frop.org has the
-hostname "darkstar" and DNS (Internet Domain Name Server)
-domainname "frop.org", not to be confused with the NIS (Network
-Information Service) or YP (Yellow Pages) domainname.
-These two
-domain names are in general different.
-For a detailed discussion
-see the
-.BR hostname (1)
-man page.
-.TP
-.I /proc/sys/kernel/hotplug
-This file
-contains the pathname for the hotplug policy agent.
-The default value in this file is
-.IR /sbin/hotplug .
-.TP
-.\" Removed in commit 87f504e5c78b910b0c1d6ffb89bc95e492322c84 (tglx/history.git)
-.IR /proc/sys/kernel/htab\-reclaim " (before Linux 2.4.9.2)"
-(PowerPC only) If this file is set to a nonzero value,
-the PowerPC htab
-.\" removed in commit 1b483a6a7b2998e9c98ad985d7494b9b725bd228, before Linux 2.6.28
-(see kernel file
-.IR Documentation/powerpc/ppc_htab.txt )
-is pruned
-each time the system hits the idle loop.
-.TP
-.I /proc/sys/kernel/keys/*
-This directory contains various files that define parameters and limits
-for the key-management facility.
-These files are described in
-.BR keyrings (7).
-.TP
-.IR /proc/sys/kernel/kptr_restrict " (since Linux 2.6.38)"
-.\" 455cd5ab305c90ffc422dd2e0fb634730942b257
-The value in this file determines whether kernel addresses are exposed via
-.I /proc
-files and other interfaces.
-A value of 0 in this file imposes no restrictions.
-If the value is 1, kernel pointers printed using the
-.I %pK
-format specifier will be replaced with zeros unless the user has the
-.B CAP_SYSLOG
-capability.
-If the value is 2, kernel pointers printed using the
-.I %pK
-format specifier will be replaced with zeros regardless
-of the user's capabilities.
-The initial default value for this file was 1,
-but the default was changed
-.\" commit 411f05f123cbd7f8aa1edcae86970755a6e2a9d9
-to 0 in Linux 2.6.39.
-Since Linux 3.4,
-.\" commit 620f6e8e855d6d447688a5f67a4e176944a084e8
-only users with the
-.B CAP_SYS_ADMIN
-capability can change the value in this file.
-.TP
-.I /proc/sys/kernel/l2cr
-(PowerPC only) This file
-contains a flag that controls the L2 cache of G3 processor
-boards.
-If 0, the cache is disabled.
-Enabled if nonzero.
-.TP
-.I /proc/sys/kernel/modprobe
-This file contains the pathname for the kernel module loader.
-The default value is
-.IR /sbin/modprobe .
-The file is present only if the kernel is built with the
-.B CONFIG_MODULES
-.RB ( CONFIG_KMOD
-in Linux 2.6.26 and earlier)
-option enabled.
-It is described by the Linux kernel source file
-.I Documentation/kmod.txt
-(present only in Linux 2.4 and earlier).
-.TP
-.IR /proc/sys/kernel/modules_disabled " (since Linux 2.6.31)"
-.\" 3d43321b7015387cfebbe26436d0e9d299162ea1
-.\" From Documentation/sysctl/kernel.txt
-A toggle value indicating if modules are allowed to be loaded
-in an otherwise modular kernel.
-This toggle defaults to off (0), but can be set true (1).
-Once true, modules can be neither loaded nor unloaded,
-and the toggle cannot be set back to false.
-The file is present only if the kernel is built with the
-.B CONFIG_MODULES
-option enabled.
-.TP
-.IR /proc/sys/kernel/msgmax " (since Linux 2.2)"
-This file defines
-a system-wide limit specifying the maximum number of bytes in
-a single message written on a System V message queue.
-.TP
-.IR /proc/sys/kernel/msgmni " (since Linux 2.4)"
-This file defines the system-wide limit on the number of
-message queue identifiers.
-See also
-.IR /proc/sys/kernel/auto_msgmni .
-.TP
-.IR /proc/sys/kernel/msgmnb " (since Linux 2.2)"
-This file defines a system-wide parameter used to initialize the
-.I msg_qbytes
-setting for subsequently created message queues.
-The
-.I msg_qbytes
-setting specifies the maximum number of bytes that may be written to the
-message queue.
-.TP
-.IR /proc/sys/kernel/ngroups_max " (since Linux 2.6.4)"
-This is a read-only file that displays the upper limit on the
-number of a process's group memberships.
-.TP
-.IR /proc/sys/kernel/ns_last_pid " (since Linux 3.3)"
-See
-.BR pid_namespaces (7).
-.TP
-.IR /proc/sys/kernel/ostype " and " /proc/sys/kernel/osrelease
-These files
-give substrings of
-.IR /proc/version .
-.TP
-.IR /proc/sys/kernel/overflowgid " and " /proc/sys/kernel/overflowuid
-These files duplicate the files
-.I /proc/sys/fs/overflowgid
-and
-.IR /proc/sys/fs/overflowuid .
-.TP
-.I /proc/sys/kernel/panic
-This file gives read/write access to the kernel variable
-.IR panic_timeout .
-If this is zero, the kernel will loop on a panic; if nonzero,
-it indicates that the kernel should autoreboot after this number
-of seconds.
-When you use the
-software watchdog device driver, the recommended setting is 60.
-.TP
-.IR /proc/sys/kernel/panic_on_oops " (since Linux 2.5.68)"
-This file controls the kernel's behavior when an oops
-or BUG is encountered.
-If this file contains 0, then the system
-tries to continue operation.
-If it contains 1, then the system
-delays a few seconds (to give klogd time to record the oops output)
-and then panics.
-If the
-.I /proc/sys/kernel/panic
-file is also nonzero, then the machine will be rebooted.
-.TP
-.IR /proc/sys/kernel/pid_max " (since Linux 2.5.34)"
-This file specifies the value at which PIDs wrap around
-(i.e., the value in this file is one greater than the maximum PID).
-PIDs greater than this value are not allocated;
-thus, the value in this file also acts as a system-wide limit
-on the total number of processes and threads.
-The default value for this file, 32768,
-results in the same range of PIDs as on earlier kernels.
-On 32-bit platforms, 32768 is the maximum value for
-.IR pid_max .
-On 64-bit systems,
-.I pid_max
-can be set to any value up to 2\[ha]22
-.RB ( PID_MAX_LIMIT ,
-approximately 4 million).
-.\" Prior to Linux 2.6.10, pid_max could also be raised above 32768 on 32-bit
-.\" platforms, but this broke /proc/[pid]
-.\" See http://marc.theaimsgroup.com/?l=linux-kernel&m=109513010926152&w=2
-.TP
-.IR /proc/sys/kernel/powersave\-nap " (PowerPC only)"
-This file contains a flag.
-If set, Linux-PPC will use the "nap" mode of
-powersaving,
-otherwise the "doze" mode will be used.
-.TP
-.I /proc/sys/kernel/printk
-See
-.BR syslog (2).
-.TP
-.IR /proc/sys/kernel/pty " (since Linux 2.6.4)"
-This directory contains two files relating to the number of UNIX 98
-pseudoterminals (see
-.BR pts (4))
-on the system.
-.TP
-.I /proc/sys/kernel/pty/max
-This file defines the maximum number of pseudoterminals.
-.\" FIXME Document /proc/sys/kernel/pty/reserve
-.\" New in Linux 3.3
-.\" commit e9aba5158a80098447ff207a452a3418ae7ee386
-.TP
-.I /proc/sys/kernel/pty/nr
-This read-only file
-indicates how many pseudoterminals are currently in use.
-.TP
-.I /proc/sys/kernel/random
-This directory
-contains various parameters controlling the operation of the file
-.IR /dev/random .
-See
-.BR random (4)
-for further information.
-.TP
-.IR /proc/sys/kernel/random/uuid " (since Linux 2.4)"
-Each read from this read-only file returns a randomly generated 128-bit UUID,
-as a string in the standard UUID format.
-.TP
-.IR /proc/sys/kernel/randomize_va_space " (since Linux 2.6.12)"
-.\" Some further details can be found in Documentation/sysctl/kernel.txt
-Select the address space layout randomization (ASLR) policy for the system
-(on architectures that support ASLR).
-Three values are supported for this file:
-.RS
-.TP
-.B 0
-Turn ASLR off.
-This is the default for architectures that don't support ASLR,
-and when the kernel is booted with the
-.I norandmaps
-parameter.
-.TP
-.B 1
-Make the addresses of
-.BR mmap (2)
-allocations, the stack, and the VDSO page randomized.
-Among other things, this means that shared libraries will be
-loaded at randomized addresses.
-The text segment of PIE-linked binaries will also be loaded
-at a randomized address.
-This value is the default if the kernel was configured with
-.BR CONFIG_COMPAT_BRK .
-.TP
-.B 2
-(Since Linux 2.6.25)
-.\" commit c1d171a002942ea2d93b4fbd0c9583c56fce0772
-Also support heap randomization.
-This value is the default if the kernel was not configured with
-.BR CONFIG_COMPAT_BRK .
-.RE
-.TP
-.I /proc/sys/kernel/real\-root\-dev
-This file is documented in the Linux kernel source file
-.I Documentation/admin\-guide/initrd.rst
-.\" commit 9d85025b0418163fae079c9ba8f8445212de8568
-(or
-.I Documentation/initrd.txt
-before Linux 4.10).
-.TP
-.IR /proc/sys/kernel/reboot\-cmd " (Sparc only)"
-This file seems to be a way to give an argument to the SPARC
-ROM/Flash boot loader.
-Maybe to tell it what to do after
-rebooting?
-.TP
-.I /proc/sys/kernel/rtsig\-max
-(Up to and including Linux 2.6.7; see
-.BR setrlimit (2))
-This file can be used to tune the maximum number
-of POSIX real-time (queued) signals that can be outstanding
-in the system.
-.TP
-.I /proc/sys/kernel/rtsig\-nr
-(Up to and including Linux 2.6.7.)
-This file shows the number of POSIX real-time signals currently queued.
-.TP
-.IR /proc/ pid /sched_autogroup_enabled " (since Linux 2.6.38)"
-.\" commit 5091faa449ee0b7d73bc296a93bca9540fc51d0a
-See
-.BR sched (7).
-.TP
-.IR /proc/sys/kernel/sched_child_runs_first " (since Linux 2.6.23)"
-If this file contains the value zero, then, after a
-.BR fork (2),
-the parent is first scheduled on the CPU.
-If the file contains a nonzero value,
-then the child is scheduled first on the CPU.
-(Of course, on a multiprocessor system,
-the parent and the child might both immediately be scheduled on a CPU.)
-.TP
-.IR /proc/sys/kernel/sched_rr_timeslice_ms " (since Linux 3.9)"
-See
-.BR sched_rr_get_interval (2).
-.TP
-.IR /proc/sys/kernel/sched_rt_period_us " (since Linux 2.6.25)"
-See
-.BR sched (7).
-.TP
-.IR /proc/sys/kernel/sched_rt_runtime_us " (since Linux 2.6.25)"
-See
-.BR sched (7).
-.TP
-.IR /proc/sys/kernel/seccomp " (since Linux 4.14)"
-.\" commit 8e5f1ad116df6b0de65eac458d5e7c318d1c05af
-This directory provides additional seccomp information and
-configuration.
-See
-.BR seccomp (2)
-for further details.
-.TP
-.IR /proc/sys/kernel/sem " (since Linux 2.4)"
-This file contains 4 numbers defining limits for System V IPC semaphores.
-These fields are, in order:
-.RS
-.TP
-SEMMSL
-The maximum semaphores per semaphore set.
-.TP
-SEMMNS
-A system-wide limit on the number of semaphores in all semaphore sets.
-.TP
-SEMOPM
-The maximum number of operations that may be specified in a
-.BR semop (2)
-call.
-.TP
-SEMMNI
-A system-wide limit on the maximum number of semaphore identifiers.
-.RE
-.TP
-.I /proc/sys/kernel/sg\-big\-buff
-This file
-shows the size of the generic SCSI device (sg) buffer.
-You can't tune it just yet, but you could change it at
-compile time by editing
-.I include/scsi/sg.h
-and changing
-the value of
-.BR SG_BIG_BUFF .
-However, there shouldn't be any reason to change this value.
-.TP
-.IR /proc/sys/kernel/shm_rmid_forced " (since Linux 3.1)"
-.\" commit b34a6b1da371ed8af1221459a18c67970f7e3d53
-.\" See also Documentation/sysctl/kernel.txt
-If this file is set to 1, all System V shared memory segments will
-be marked for destruction as soon as the number of attached processes
-falls to zero;
-in other words, it is no longer possible to create shared memory segments
-that exist independently of any attached process.
-.IP
-The effect is as though a
-.BR shmctl (2)
-.B IPC_RMID
-is performed on all existing segments as well as all segments
-created in the future (until this file is reset to 0).
-Note that existing segments that are attached to no process will be
-immediately destroyed when this file is set to 1.
-Setting this option will also destroy segments that were created,
-but never attached,
-upon termination of the process that created the segment with
-.BR shmget (2).
-.IP
-Setting this file to 1 provides a way of ensuring that
-all System V shared memory segments are counted against the
-resource usage and resource limits (see the description of
-.B RLIMIT_AS
-in
-.BR getrlimit (2))
-of at least one process.
-.IP
-Because setting this file to 1 produces behavior that is nonstandard
-and could also break existing applications,
-the default value in this file is 0.
-Set this file to 1 only if you have a good understanding
-of the semantics of the applications using
-System V shared memory on your system.
-.TP
-.IR /proc/sys/kernel/shmall " (since Linux 2.2)"
-This file
-contains the system-wide limit on the total number of pages of
-System V shared memory.
-.TP
-.IR /proc/sys/kernel/shmmax " (since Linux 2.2)"
-This file
-can be used to query and set the run-time limit
-on the maximum (System V IPC) shared memory segment size that can be
-created.
-Shared memory segments up to 1 GB are now supported in the
-kernel.
-This value defaults to
-.BR SHMMAX .
-.TP
-.IR /proc/sys/kernel/shmmni " (since Linux 2.4)"
-This file
-specifies the system-wide maximum number of System V shared memory
-segments that can be created.
-.TP
-.IR /proc/sys/kernel/sysctl_writes_strict " (since Linux 3.16)"
-.\" commit f88083005ab319abba5d0b2e4e997558245493c8
-.\" commit 2ca9bb456ada8bcbdc8f77f8fc78207653bbaa92
-.\" commit f4aacea2f5d1a5f7e3154e967d70cf3f711bcd61
-.\" commit 24fe831c17ab8149413874f2fd4e5c8a41fcd294
-The value in this file determines how the file offset affects
-the behavior of updating entries in files under
-.IR /proc/sys .
-The file has three possible values:
-.RS
-.TP 4
-\-1
-This provides legacy handling, with no printk warnings.
-Each
-.BR write (2)
-must fully contain the value to be written,
-and multiple writes on the same file descriptor
-will overwrite the entire value, regardless of the file position.
-.TP
-0
-(default) This provides the same behavior as for \-1,
-but printk warnings are written for processes that
-perform writes when the file offset is not 0.
-.TP
-1
-Respect the file offset when writing strings into
-.I /proc/sys
-files.
-Multiple writes will
-.I append
-to the value buffer.
-Anything written beyond the maximum length
-of the value buffer will be ignored.
-Writes to numeric
-.I /proc/sys
-entries must always be at file offset 0 and the value must be
-fully contained in the buffer provided to
-.BR write (2).
-.\" FIXME .
-.\" With /proc/sys/kernel/sysctl_writes_strict==1, writes at an
-.\" offset other than 0 do not generate an error. Instead, the
-.\" write() succeeds, but the file is left unmodified.
-.\" This is surprising. The behavior may change in the future.
-.\" See thread.gmane.org/gmane.linux.man/9197
-.\" From: Michael Kerrisk (man-pages <mtk.manpages@...>
-.\" Subject: sysctl_writes_strict documentation + an oddity?
-.\" Newsgroups: gmane.linux.man, gmane.linux.kernel
-.\" Date: 2015-05-09 08:54:11 GMT
-.RE
-.TP
-.I /proc/sys/kernel/sysrq
-This file controls the functions allowed to be invoked by the SysRq key.
-By default,
-the file contains 1 meaning that every possible SysRq request is allowed
-(in older kernel versions, SysRq was disabled by default,
-and you were required to specifically enable it at run-time,
-but this is not the case any more).
-Possible values in this file are:
-.RS
-.TP 5
-0
-Disable sysrq completely
-.TP
-1
-Enable all functions of sysrq
-.TP
-> 1
-Bit mask of allowed sysrq functions, as follows:
-.PD 0
-.RS
-.TP 5
-\ \ 2
-Enable control of console logging level
-.TP
-\ \ 4
-Enable control of keyboard (SAK, unraw)
-.TP
-\ \ 8
-Enable debugging dumps of processes etc.
-.TP
-\ 16
-Enable sync command
-.TP
-\ 32
-Enable remount read-only
-.TP
-\ 64
-Enable signaling of processes (term, kill, oom-kill)
-.TP
-128
-Allow reboot/poweroff
-.TP
-256
-Allow nicing of all real-time tasks
-.RE
-.PD
-.RE
-.IP
-This file is present only if the
-.B CONFIG_MAGIC_SYSRQ
-kernel configuration option is enabled.
-For further details see the Linux kernel source file
-.I Documentation/admin\-guide/sysrq.rst
-.\" commit 9d85025b0418163fae079c9ba8f8445212de8568
-(or
-.I Documentation/sysrq.txt
-before Linux 4.10).
-.TP
-.I /proc/sys/kernel/version
-This file contains a string such as:
-.IP
-.in +4n
-.EX
-#5 Wed Feb 25 21:49:24 MET 1998
-.EE
-.in
-.IP
-The "#5" means that
-this is the fifth kernel built from this source base and the
-date following it indicates the time the kernel was built.
-.TP
-.IR /proc/sys/kernel/threads\-max " (since Linux 2.3.11)"
-.\" The following is based on Documentation/sysctl/kernel.txt
-This file specifies the system-wide limit on the number of
-threads (tasks) that can be created on the system.
-.IP
-Since Linux 4.1,
-.\" commit 230633d109e35b0a24277498e773edeb79b4a331
-the value that can be written to
-.I threads\-max
-is bounded.
-The minimum value that can be written is 20.
-The maximum value that can be written is given by the
-constant
-.B FUTEX_TID_MASK
-(0x3fffffff).
-If a value outside of this range is written to
-.IR threads\-max ,
-the error
-.B EINVAL
-occurs.
-.IP
-The value written is checked against the available RAM pages.
-If the thread structures would occupy too much (more than 1/8th)
-of the available RAM pages,
-.I threads\-max
-is reduced accordingly.
-.TP
-.IR /proc/sys/kernel/yama/ptrace_scope " (since Linux 3.5)"
-See
-.BR ptrace (2).
-.TP
-.IR /proc/sys/kernel/zero\-paged " (PowerPC only)"
-This file
-contains a flag.
-When enabled (nonzero), Linux-PPC will pre-zero pages in
-the idle loop, possibly speeding up get_free_pages.
-.TP
-.I /proc/sys/net
-This directory contains networking stuff.
-Explanations for some of the files under this directory can be found in
-.BR tcp (7)
-and
-.BR ip (7).
-.TP
-.I /proc/sys/net/core/bpf_jit_enable
-See
-.BR bpf (2).
-.TP
-.I /proc/sys/net/core/somaxconn
-This file defines a ceiling value for the
-.I backlog
-argument of
-.BR listen (2);
-see the
-.BR listen (2)
-manual page for details.
-.TP
-.I /proc/sys/proc
-This directory may be empty.
-.TP
-.I /proc/sys/sunrpc
-This directory supports Sun remote procedure call for network filesystem
-(NFS).
-On some systems, it is not present.
-.TP
-.IR /proc/sys/user " (since Linux 4.9)"
-See
-.BR namespaces (7).
-.TP
-.I /proc/sys/vm
-This directory contains files for memory management tuning, buffer, and
-cache management.
-.TP
-.IR /proc/sys/vm/admin_reserve_kbytes " (since Linux 3.10)"
-.\" commit 4eeab4f5580d11bffedc697684b91b0bca0d5009
-This file defines the amount of free memory (in KiB) on the system that
-should be reserved for users with the capability
-.BR CAP_SYS_ADMIN .
-.IP
-The default value in this file is the minimum of [3% of free pages, 8MiB]
-expressed as KiB.
-The default is intended to provide enough for the superuser
-to log in and kill a process, if necessary,
-under the default overcommit 'guess' mode (i.e., 0 in
-.IR /proc/sys/vm/overcommit_memory ).
-.IP
-Systems running in "overcommit never" mode (i.e., 2 in
-.IR /proc/sys/vm/overcommit_memory )
-should increase the value in this file to account
-for the full virtual memory size of the programs used to recover (e.g.,
-.BR login (1)
-.BR ssh (1),
-and
-.BR top (1))
-Otherwise, the superuser may not be able to log in to recover the system.
-For example, on x86-64 a suitable value is 131072 (128MiB reserved).
-.IP
-Changing the value in this file takes effect whenever
-an application requests memory.
-.TP
-.IR /proc/sys/vm/compact_memory " (since Linux 2.6.35)"
-When 1 is written to this file, all zones are compacted such that free
-memory is available in contiguous blocks where possible.
-The effect of this action can be seen by examining
-.IR /proc/buddyinfo .
-.IP
-Present only if the kernel was configured with
-.BR CONFIG_COMPACTION .
-.TP
-.IR /proc/sys/vm/drop_caches " (since Linux 2.6.16)"
-Writing to this file causes the kernel to drop clean caches, dentries, and
-inodes from memory, causing that memory to become free.
-This can be useful for memory management testing and
-performing reproducible filesystem benchmarks.
-Because writing to this file causes the benefits of caching to be lost,
-it can degrade overall system performance.
-.IP
-To free pagecache, use:
-.IP
-.in +4n
-.EX
-echo 1 > /proc/sys/vm/drop_caches
-.EE
-.in
-.IP
-To free dentries and inodes, use:
-.IP
-.in +4n
-.EX
-echo 2 > /proc/sys/vm/drop_caches
-.EE
-.in
-.IP
-To free pagecache, dentries, and inodes, use:
-.IP
-.in +4n
-.EX
-echo 3 > /proc/sys/vm/drop_caches
-.EE
-.in
-.IP
-Because writing to this file is a nondestructive operation and dirty objects
-are not freeable, the
-user should run
-.BR sync (1)
-first.
-.TP
-.IR /proc/sys/vm/sysctl_hugetlb_shm_group " (since Linux 2.6.7)"
-This writable file contains a group ID that is allowed
-to allocate memory using huge pages.
-If a process has a filesystem group ID or any supplementary group ID that
-matches this group ID,
-then it can make huge-page allocations without holding the
-.B CAP_IPC_LOCK
-capability; see
-.BR memfd_create (2),
-.BR mmap (2),
-and
-.BR shmget (2).
-.TP
-.IR /proc/sys/vm/legacy_va_layout " (since Linux 2.6.9)"
-.\" The following is from Documentation/filesystems/proc.txt
-If nonzero, this disables the new 32-bit memory-mapping layout;
-the kernel will use the legacy (2.4) layout for all processes.
-.TP
-.IR /proc/sys/vm/memory_failure_early_kill " (since Linux 2.6.32)"
-.\" The following is based on the text in Documentation/sysctl/vm.txt
-Control how to kill processes when an uncorrected memory error
-(typically a 2-bit error in a memory module)
-that cannot be handled by the kernel
-is detected in the background by hardware.
-In some cases (like the page still having a valid copy on disk),
-the kernel will handle the failure
-transparently without affecting any applications.
-But if there is no other up-to-date copy of the data,
-it will kill processes to prevent any data corruptions from propagating.
-.IP
-The file has one of the following values:
-.RS
-.TP
-.B 1
-Kill all processes that have the corrupted-and-not-reloadable page mapped
-as soon as the corruption is detected.
-Note that this is not supported for a few types of pages,
-such as kernel internally
-allocated data or the swap cache, but works for the majority of user pages.
-.TP
-.B 0
-Unmap the corrupted page from all processes and kill a process
-only if it tries to access the page.
-.RE
-.IP
-The kill is performed using a
-.B SIGBUS
-signal with
-.I si_code
-set to
-.BR BUS_MCEERR_AO .
-Processes can handle this if they want to; see
-.BR sigaction (2)
-for more details.
-.IP
-This feature is active only on architectures/platforms with advanced machine
-check handling and depends on the hardware capabilities.
-.IP
-Applications can override the
-.I memory_failure_early_kill
-setting individually with the
-.BR prctl (2)
-.B PR_MCE_KILL
-operation.
-.IP
-Present only if the kernel was configured with
-.BR CONFIG_MEMORY_FAILURE .
-.TP
-.IR /proc/sys/vm/memory_failure_recovery " (since Linux 2.6.32)"
-.\" The following is based on the text in Documentation/sysctl/vm.txt
-Enable memory failure recovery (when supported by the platform).
-.RS
-.TP
-.B 1
-Attempt recovery.
-.TP
-.B 0
-Always panic on a memory failure.
-.RE
-.IP
-Present only if the kernel was configured with
-.BR CONFIG_MEMORY_FAILURE .
-.TP
-.IR /proc/sys/vm/oom_dump_tasks " (since Linux 2.6.25)"
-.\" The following is from Documentation/sysctl/vm.txt
-Enables a system-wide task dump (excluding kernel threads) to be
-produced when the kernel performs an OOM-killing.
-The dump includes the following information
-for each task (thread, process):
-thread ID, real user ID, thread group ID (process ID),
-virtual memory size, resident set size,
-the CPU that the task is scheduled on,
-oom_adj score (see the description of
-.IR /proc/ pid /oom_adj ),
-and command name.
-This is helpful to determine why the OOM-killer was invoked
-and to identify the rogue task that caused it.
-.IP
-If this contains the value zero, this information is suppressed.
-On very large systems with thousands of tasks,
-it may not be feasible to dump the memory state information for each one.
-Such systems should not be forced to incur a performance penalty in
-OOM situations when the information may not be desired.
-.IP
-If this is set to nonzero, this information is shown whenever the
-OOM-killer actually kills a memory-hogging task.
-.IP
-The default value is 0.
-.TP
-.IR /proc/sys/vm/oom_kill_allocating_task " (since Linux 2.6.24)"
-.\" The following is from Documentation/sysctl/vm.txt
-This enables or disables killing the OOM-triggering task in
-out-of-memory situations.
-.IP
-If this is set to zero, the OOM-killer will scan through the entire
-tasklist and select a task based on heuristics to kill.
-This normally selects a rogue memory-hogging task that
-frees up a large amount of memory when killed.
-.IP
-If this is set to nonzero, the OOM-killer simply kills the task that
-triggered the out-of-memory condition.
-This avoids a possibly expensive tasklist scan.
-.IP
-If
-.I /proc/sys/vm/panic_on_oom
-is nonzero, it takes precedence over whatever value is used in
-.IR /proc/sys/vm/oom_kill_allocating_task .
-.IP
-The default value is 0.
-.TP
-.IR /proc/sys/vm/overcommit_kbytes " (since Linux 3.14)"
-.\" commit 49f0ce5f92321cdcf741e35f385669a421013cb7
-This writable file provides an alternative to
-.I /proc/sys/vm/overcommit_ratio
-for controlling the
-.I CommitLimit
-when
-.I /proc/sys/vm/overcommit_memory
-has the value 2.
-It allows the amount of memory overcommitting to be specified as
-an absolute value (in kB),
-rather than as a percentage, as is done with
-.IR overcommit_ratio .
-This allows for finer-grained control of
-.I CommitLimit
-on systems with extremely large memory sizes.
-.IP
-Only one of
-.I overcommit_kbytes
-or
-.I overcommit_ratio
-can have an effect:
-if
-.I overcommit_kbytes
-has a nonzero value, then it is used to calculate
-.IR CommitLimit ,
-otherwise
-.I overcommit_ratio
-is used.
-Writing a value to either of these files causes the
-value in the other file to be set to zero.
-.TP
-.I /proc/sys/vm/overcommit_memory
-This file contains the kernel virtual memory accounting mode.
-Values are:
-.RS
-.IP
-0: heuristic overcommit (this is the default)
-.br
-1: always overcommit, never check
-.br
-2: always check, never overcommit
-.RE
-.IP
-In mode 0, calls of
-.BR mmap (2)
-with
-.B MAP_NORESERVE
-are not checked, and the default check is very weak,
-leading to the risk of getting a process "OOM-killed".
-.IP
-In mode 1, the kernel pretends there is always enough memory,
-until memory actually runs out.
-One use case for this mode is scientific computing applications
-that employ large sparse arrays.
-Before Linux 2.6.0, any nonzero value implies mode 1.
-.IP
-In mode 2 (available since Linux 2.6), the total virtual address space
-that can be allocated
-.RI ( CommitLimit
-in
-.IR /proc/meminfo )
-is calculated as
-.IP
-.in +4n
-.EX
-CommitLimit = (total_RAM \- total_huge_TLB) *
- overcommit_ratio / 100 + total_swap
-.EE
-.in
-.IP
-where:
-.RS
-.IP \[bu] 3
-.I total_RAM
-is the total amount of RAM on the system;
-.IP \[bu]
-.I total_huge_TLB
-is the amount of memory set aside for huge pages;
-.IP \[bu]
-.I overcommit_ratio
-is the value in
-.IR /proc/sys/vm/overcommit_ratio ;
-and
-.IP \[bu]
-.I total_swap
-is the amount of swap space.
-.RE
-.IP
-For example, on a system with 16 GB of physical RAM, 16 GB
-of swap, no space dedicated to huge pages, and an
-.I overcommit_ratio
-of 50, this formula yields a
-.I CommitLimit
-of 24 GB.
-.IP
-Since Linux 3.14, if the value in
-.I /proc/sys/vm/overcommit_kbytes
-is nonzero, then
-.I CommitLimit
-is instead calculated as:
-.IP
-.in +4n
-.EX
-CommitLimit = overcommit_kbytes + total_swap
-.EE
-.in
-.IP
-See also the description of
-.I /proc/sys/vm/admin_reserve_kbytes
-and
-.IR /proc/sys/vm/user_reserve_kbytes .
-.TP
-.IR /proc/sys/vm/overcommit_ratio " (since Linux 2.6.0)"
-This writable file defines a percentage by which memory
-can be overcommitted.
-The default value in the file is 50.
-See the description of
-.IR /proc/sys/vm/overcommit_memory .
-.TP
-.IR /proc/sys/vm/panic_on_oom " (since Linux 2.6.18)"
-.\" The following is adapted from Documentation/sysctl/vm.txt
-This enables or disables a kernel panic in
-an out-of-memory situation.
-.IP
-If this file is set to the value 0,
-the kernel's OOM-killer will kill some rogue process.
-Usually, the OOM-killer is able to kill a rogue process and the
-system will survive.
-.IP
-If this file is set to the value 1,
-then the kernel normally panics when out-of-memory happens.
-However, if a process limits allocations to certain nodes
-using memory policies
-.RB ( mbind (2)
-.BR MPOL_BIND )
-or cpusets
-.RB ( cpuset (7))
-and those nodes reach memory exhaustion status,
-one process may be killed by the OOM-killer.
-No panic occurs in this case:
-because other nodes' memory may be free,
-this means the system as a whole may not have reached
-an out-of-memory situation yet.
-.IP
-If this file is set to the value 2,
-the kernel always panics when an out-of-memory condition occurs.
-.IP
-The default value is 0.
-1 and 2 are for failover of clustering.
-Select either according to your policy of failover.
-.TP
-.I /proc/sys/vm/swappiness
-.\" The following is from Documentation/sysctl/vm.txt
-The value in this file controls how aggressively the kernel will swap
-memory pages.
-Higher values increase aggressiveness, lower values
-decrease aggressiveness.
-The default value is 60.
-.TP
-.IR /proc/sys/vm/user_reserve_kbytes " (since Linux 3.10)"
-.\" commit c9b1d0981fcce3d9976d7b7a56e4e0503bc610dd
-Specifies an amount of memory (in KiB) to reserve for user processes.
-This is intended to prevent a user from starting a single memory hogging
-process, such that they cannot recover (kill the hog).
-The value in this file has an effect only when
-.I /proc/sys/vm/overcommit_memory
-is set to 2 ("overcommit never" mode).
-In this case, the system reserves an amount of memory that is the minimum
-of [3% of current process size,
-.IR user_reserve_kbytes ].
-.IP
-The default value in this file is the minimum of [3% of free pages, 128MiB]
-expressed as KiB.
-.IP
-If the value in this file is set to zero,
-then a user will be allowed to allocate all free memory with a single process
-(minus the amount reserved by
-.IR /proc/sys/vm/admin_reserve_kbytes ).
-Any subsequent attempts to execute a command will result in
-"fork: Cannot allocate memory".
-.IP
-Changing the value in this file takes effect whenever
-an application requests memory.
-.TP
-.IR /proc/sys/vm/unprivileged_userfaultfd " (since Linux 5.2)"
-.\" cefdca0a86be517bc390fc4541e3674b8e7803b0
-This (writable) file exposes a flag that controls whether
-unprivileged processes are allowed to employ
-.BR userfaultfd (2).
-If this file has the value 1, then unprivileged processes may use
-.BR userfaultfd (2).
-If this file has the value 0, then only processes that have the
-.B CAP_SYS_PTRACE
-capability may employ
-.BR userfaultfd (2).
-The default value in this file is 1.
-.TP
-.IR /proc/sysrq\-trigger " (since Linux 2.4.21)"
-Writing a character to this file triggers the same SysRq function as
-typing ALT-SysRq-<character> (see the description of
-.IR /proc/sys/kernel/sysrq ).
-This file is normally writable only by
-.IR root .
-For further details see the Linux kernel source file
-.I Documentation/admin\-guide/sysrq.rst
-.\" commit 9d85025b0418163fae079c9ba8f8445212de8568
-(or
-.I Documentation/sysrq.txt
-before Linux 4.10).
-.TP
-.I /proc/sysvipc
-Subdirectory containing the pseudo-files
-.IR msg ", " sem " and " shm "."
-These files list the System V Interprocess Communication (IPC) objects
-(respectively: message queues, semaphores, and shared memory)
-that currently exist on the system,
-providing similar information to that available via
-.BR ipcs (1).
-These files have headers and are formatted (one IPC object per line)
-for easy understanding.
-.BR sysvipc (7)
-provides further background on the information shown by these files.
-.TP
-.IR /proc/thread\-self " (since Linux 3.17)"
-.\" commit 0097875bd41528922fb3bb5f348c53f17e00e2fd
-This directory refers to the thread accessing the
-.I /proc
-filesystem,
-and is identical to the
-.IR /proc/self/task/ tid
-directory named by the process thread ID
-.RI ( tid )
-of the same thread.
-.TP
-.IR /proc/timer_list " (since Linux 2.6.21)"
-.\" commit 289f480af87e45f7a6de6ba9b4c061c2e259fe98
-This read-only file exposes a list of all currently pending
-(high-resolution) timers,
-all clock-event sources, and their parameters in a human-readable form.
-.TP
-.IR /proc/timer_stats " (from Linux 2.6.21 until Linux 4.10)"
-.\" commit 82f67cd9fca8c8762c15ba7ed0d5747588c1e221
-.\" Date: Fri Feb 16 01:28:13 2007 -0800
-.\" Text largely derived from Documentation/timers/timer_stats.txt
-.\" removed in commit dfb4357da6ddbdf57d583ba64361c9d792b0e0b1
-.\" Date: Wed Feb 8 11:26:59 2017 -0800
-This is a debugging facility to make timer (ab)use in a Linux
-system visible to kernel and user-space developers.
-It can be used by kernel and user-space developers to verify that
-their code does not make undue use of timers.
-The goal is to avoid unnecessary wakeups,
-thereby optimizing power consumption.
-.IP
-If enabled in the kernel
-.RB ( CONFIG_TIMER_STATS ),
-but not used,
-it has almost zero run-time overhead and a relatively small
-data-structure overhead.
-Even if collection is enabled at run time, overhead is low:
-all the locking is per-CPU and lookup is hashed.
-.IP
-The
-.I /proc/timer_stats
-file is used both to control sampling facility and to read out the
-sampled information.
-.IP
-The
-.I timer_stats
-functionality is inactive on bootup.
-A sampling period can be started using the following command:
-.IP
-.in +4n
-.EX
-# echo 1 > /proc/timer_stats
-.EE
-.in
-.IP
-The following command stops a sampling period:
-.IP
-.in +4n
-.EX
-# echo 0 > /proc/timer_stats
-.EE
-.in
-.IP
-The statistics can be retrieved by:
-.IP
-.in +4n
-.EX
-$ cat /proc/timer_stats
-.EE
-.in
-.IP
-While sampling is enabled, each readout from
-.I /proc/timer_stats
-will see
-newly updated statistics.
-Once sampling is disabled, the sampled information
-is kept until a new sample period is started.
-This allows multiple readouts.
-.IP
-Sample output from
-.IR /proc/timer_stats :
-.IP
-.in +4n
-.EX
-.RB $ " cat /proc/timer_stats"
-Timer Stats Version: v0.3
-Sample period: 1.764 s
-Collection: active
- 255, 0 swapper/3 hrtimer_start_range_ns (tick_sched_timer)
- 71, 0 swapper/1 hrtimer_start_range_ns (tick_sched_timer)
- 58, 0 swapper/0 hrtimer_start_range_ns (tick_sched_timer)
- 4, 1694 gnome\-shell mod_delayed_work_on (delayed_work_timer_fn)
- 17, 7 rcu_sched rcu_gp_kthread (process_timeout)
-\&...
- 1, 4911 kworker/u16:0 mod_delayed_work_on (delayed_work_timer_fn)
- 1D, 2522 kworker/0:0 queue_delayed_work_on (delayed_work_timer_fn)
-1029 total events, 583.333 events/sec
-.EE
-.in
-.IP
-The output columns are:
-.RS
-.IP [1] 5
-a count of the number of events,
-optionally (since Linux 2.6.23) followed by the letter \[aq]D\[aq]
-.\" commit c5c061b8f9726bc2c25e19dec227933a13d1e6b7 deferrable timers
-if this is a deferrable timer;
-.IP [2]
-the PID of the process that initialized the timer;
-.IP [3]
-the name of the process that initialized the timer;
-.IP [4]
-the function where the timer was initialized; and
-(in parentheses)
-the callback function that is associated with the timer.
-.RE
-.IP
-During the Linux 4.11 development cycle,
-this file was removed because of security concerns,
-as it exposes information across namespaces.
-Furthermore, it is possible to obtain
-the same information via in-kernel tracing facilities such as ftrace.
-.TP
-.I /proc/tty
-Subdirectory containing the pseudo-files and subdirectories for
-tty drivers and line disciplines.
-.TP
-.I /proc/uptime
-This file contains two numbers (values in seconds): the uptime of the
-system (including time spent in suspend) and the amount of time spent
-in the idle process.
-.TP
-.I /proc/version
-This string identifies the kernel version that is currently running.
-It includes the contents of
-.IR /proc/sys/kernel/ostype ,
-.IR /proc/sys/kernel/osrelease ,
-and
-.IR /proc/sys/kernel/version .
-For example:
-.IP
-.in +4n
-.EX
-Linux version 1.0.9 (quinlan@phaze) #1 Sat May 14 01:51:54 EDT 1994
-.EE
-.in
-.\" FIXME 2.6.13 seems to have /proc/vmcore implemented; document this
-.\" See Documentation/kdump/kdump.txt
-.\" commit 666bfddbe8b8fd4fd44617d6c55193d5ac7edb29
-.\" Needs CONFIG_VMCORE
-.\"
-.TP
-.IR /proc/vmstat " (since Linux 2.6.0)"
-This file displays various virtual memory statistics.
-Each line of this file contains a single name-value pair,
-delimited by white space.
-Some lines are present only if the kernel was configured with
-suitable options.
-(In some cases, the options required for particular files have changed
-across kernel versions, so they are not listed here.
-Details can be found by consulting the kernel source code.)
-The following fields may be present:
-.\" FIXME We need explanations for each of the following fields...
-.RS
-.TP
-.IR nr_free_pages " (since Linux 2.6.31)"
-.\" commit d23ad42324cc4378132e51f2fc5c9ba6cbe75182
-.TP
-.IR nr_alloc_batch " (since Linux 3.12)"
-.\" commit 81c0a2bb515fd4daae8cab64352877480792b515
-.TP
-.IR nr_inactive_anon " (since Linux 2.6.28)"
-.\" commit 4f98a2fee8acdb4ac84545df98cccecfd130f8db
-.TP
-.IR nr_active_anon " (since Linux 2.6.28)"
-.\" commit 4f98a2fee8acdb4ac84545df98cccecfd130f8db
-.TP
-.IR nr_inactive_file " (since Linux 2.6.28)"
-.\" commit 4f98a2fee8acdb4ac84545df98cccecfd130f8db
-.TP
-.IR nr_active_file " (since Linux 2.6.28)"
-.\" commit 4f98a2fee8acdb4ac84545df98cccecfd130f8db
-.TP
-.IR nr_unevictable " (since Linux 2.6.28)"
-.\" commit 7b854121eb3e5ba0241882ff939e2c485228c9c5
-.TP
-.IR nr_mlock " (since Linux 2.6.28)"
-.\" commit 5344b7e648980cc2ca613ec03a56a8222ff48820
-.TP
-.IR nr_anon_pages " (since Linux 2.6.18)"
-.\" commit f3dbd34460ff54962d3e3244b6bcb7f5295356e6
-.TP
-.IR nr_mapped " (since Linux 2.6.0)"
-.TP
-.IR nr_file_pages " (since Linux 2.6.18)"
-.\" commit 347ce434d57da80fd5809c0c836f206a50999c26
-.TP
-.IR nr_dirty " (since Linux 2.6.0)"
-.TP
-.IR nr_writeback " (since Linux 2.6.0)"
-.TP
-.IR nr_slab_reclaimable " (since Linux 2.6.19)"
-.\" commit 972d1a7b140569084439a81265a0f15b74e924e0
-.\" Linux 2.6.0 had nr_slab
-.TP
-.IR nr_slab_unreclaimable " (since Linux 2.6.19)"
-.\" commit 972d1a7b140569084439a81265a0f15b74e924e0
-.TP
-.IR nr_page_table_pages " (since Linux 2.6.0)"
-.TP
-.IR nr_kernel_stack " (since Linux 2.6.32)"
-.\" commit c6a7f5728a1db45d30df55a01adc130b4ab0327c
-Amount of memory allocated to kernel stacks.
-.TP
-.IR nr_unstable " (since Linux 2.6.0)"
-.TP
-.IR nr_bounce " (since Linux 2.6.12)"
-.\" commit edfbe2b0038723e5699ab22695ccd62b5542a5c1
-.TP
-.IR nr_vmscan_write " (since Linux 2.6.19)"
-.\" commit e129b5c23c2b471d47f1c5d2b8b193fc2034af43
-.TP
-.IR nr_vmscan_immediate_reclaim " (since Linux 3.2)"
-.\" commit 49ea7eb65e7c5060807fb9312b1ad4c3eab82e2c
-.TP
-.IR nr_writeback_temp " (since Linux 2.6.26)"
-.\" commit fc3ba692a4d19019387c5acaea63131f9eab05dd
-.TP
-.IR nr_isolated_anon " (since Linux 2.6.32)"
-.\" commit a731286de62294b63d8ceb3c5914ac52cc17e690
-.TP
-.IR nr_isolated_file " (since Linux 2.6.32)"
-.\" commit a731286de62294b63d8ceb3c5914ac52cc17e690
-.TP
-.IR nr_shmem " (since Linux 2.6.32)"
-.\" commit 4b02108ac1b3354a22b0d83c684797692efdc395
-Pages used by shmem and
-.BR tmpfs (5).
-.TP
-.IR nr_dirtied " (since Linux 2.6.37)"
-.\" commit ea941f0e2a8c02ae876cd73deb4e1557248f258c
-.TP
-.IR nr_written " (since Linux 2.6.37)"
-.\" commit ea941f0e2a8c02ae876cd73deb4e1557248f258c
-.TP
-.IR nr_pages_scanned " (since Linux 3.17)"
-.\" commit 0d5d823ab4e608ec7b52ac4410de4cb74bbe0edd
-.TP
-.IR numa_hit " (since Linux 2.6.18)"
-.\" commit ca889e6c45e0b112cb2ca9d35afc66297519b5d5
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_NUMA .
-.TP
-.IR numa_miss " (since Linux 2.6.18)"
-.\" commit ca889e6c45e0b112cb2ca9d35afc66297519b5d5
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_NUMA .
-.TP
-.IR numa_foreign " (since Linux 2.6.18)"
-.\" commit ca889e6c45e0b112cb2ca9d35afc66297519b5d5
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_NUMA .
-.TP
-.IR numa_interleave " (since Linux 2.6.18)"
-.\" commit ca889e6c45e0b112cb2ca9d35afc66297519b5d5
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_NUMA .
-.TP
-.IR numa_local " (since Linux 2.6.18)"
-.\" commit ca889e6c45e0b112cb2ca9d35afc66297519b5d5
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_NUMA .
-.TP
-.IR numa_other " (since Linux 2.6.18)"
-.\" commit ca889e6c45e0b112cb2ca9d35afc66297519b5d5
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_NUMA .
-.TP
-.IR workingset_refault " (since Linux 3.15)"
-.\" commit a528910e12ec7ee203095eb1711468a66b9b60b0
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR workingset_activate " (since Linux 3.15)"
-.\" commit a528910e12ec7ee203095eb1711468a66b9b60b0
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR workingset_nodereclaim " (since Linux 3.15)"
-.\" commit 449dd6984d0e47643c04c807f609dd56d48d5bcc
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR nr_anon_transparent_hugepages " (since Linux 2.6.38)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR nr_free_cma " (since Linux 3.7)"
-.\" commit d1ce749a0db12202b711d1aba1d29e823034648d
-Number of free CMA (Contiguous Memory Allocator) pages.
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR nr_dirty_threshold " (since Linux 2.6.37)"
-.\" commit 79da826aee6a10902ef411bc65864bd02102fa83
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR nr_dirty_background_threshold " (since Linux 2.6.37)"
-.\" commit 79da826aee6a10902ef411bc65864bd02102fa83
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgpgin " (since Linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgpgout " (since Linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pswpin " (since Linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pswpout " (since Linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgalloc_dma " (since Linux 2.6.5)"
-.\" Linux 2.6.0 had pgalloc
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgalloc_dma32 " (since Linux 2.6.16)"
-.\" commit 9328b8faae922e52073785ed6c1eaa8565648a0e
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgalloc_normal " (since Linux 2.6.5)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgalloc_high " (since Linux 2.6.5)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_HIGHMEM .
-.TP
-.IR pgalloc_movable " (since Linux 2.6.23)"
-.\" commit 2a1e274acf0b1c192face19a4be7c12d4503eaaf
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgfree " (since Linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgactivate " (since Linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgdeactivate " (since Linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgfault " (since Linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgmajfault " (since Linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgrefill_dma " (since Linux 2.6.5)"
-.\" Linux 2.6.0 had pgrefill
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgrefill_dma32 " (since Linux 2.6.16)"
-.\" commit 9328b8faae922e52073785ed6c1eaa8565648a0e
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgrefill_normal " (since Linux 2.6.5)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgrefill_high " (since Linux 2.6.5)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_HIGHMEM .
-.TP
-.IR pgrefill_movable " (since Linux 2.6.23)"
-.\" commit 2a1e274acf0b1c192face19a4be7c12d4503eaaf
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.\" Formerly there were
-.\" pgsteal_high
-.\" pgsteal_normal
-.\" pgsteal_dma32
-.\" pgsteal_dma
-.\" These were split out into pgsteal_kswapd* and pgsteal_direct*
-.\" in commit 904249aa68010c8e223263c922fcbb840a3f42e4
-.TP
-.IR pgsteal_kswapd_dma " (since Linux 3.4)"
-.\" commit 904249aa68010c8e223263c922fcbb840a3f42e4
-.\" Linux 2.6.0 had pgsteal
-.\" Present only if the kernel was configured with
-.\" .\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgsteal_kswapd_dma32 " (since Linux 3.4)"
-.\" commit 904249aa68010c8e223263c922fcbb840a3f42e4
-.\" commit 9328b8faae922e52073785ed6c1eaa8565648a0e
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgsteal_kswapd_normal " (since Linux 3.4)"
-.\" commit 904249aa68010c8e223263c922fcbb840a3f42e4
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgsteal_kswapd_high " (since Linux 3.4)"
-.\" commit 904249aa68010c8e223263c922fcbb840a3f42e4
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_HIGHMEM .
-.TP
-.IR pgsteal_kswapd_movable " (since Linux 3.4)"
-.\" commit 904249aa68010c8e223263c922fcbb840a3f42e4
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.I pgsteal_direct_dma
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgsteal_direct_dma32 " (since Linux 3.4)"
-.\" commit 904249aa68010c8e223263c922fcbb840a3f42e4
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgsteal_direct_normal " (since Linux 3.4)"
-.\" commit 904249aa68010c8e223263c922fcbb840a3f42e4
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgsteal_direct_high " (since Linux 3.4)"
-.\" commit 904249aa68010c8e223263c922fcbb840a3f42e4
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_HIGHMEM .
-.TP
-.IR pgsteal_direct_movable " (since Linux 2.6.23)"
-.\" commit 2a1e274acf0b1c192face19a4be7c12d4503eaaf
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.I pgscan_kswapd_dma
-.\" Linux 2.6.0 had pgscan
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgscan_kswapd_dma32 " (since Linux 2.6.16)"
-.\" commit 9328b8faae922e52073785ed6c1eaa8565648a0e
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgscan_kswapd_normal " (since Linux 2.6.5)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.I pgscan_kswapd_high
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_HIGHMEM .
-.TP
-.IR pgscan_kswapd_movable " (since Linux 2.6.23)"
-.\" commit 2a1e274acf0b1c192face19a4be7c12d4503eaaf
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.I pgscan_direct_dma
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgscan_direct_dma32 " (since Linux 2.6.16)"
-.\" commit 9328b8faae922e52073785ed6c1eaa8565648a0e
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.I pgscan_direct_normal
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.I pgscan_direct_high
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_HIGHMEM .
-.TP
-.IR pgscan_direct_movable " (since Linux 2.6.23)"
-.\" commit 2a1e274acf0b1c192face19a4be7c12d4503eaaf
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgscan_direct_throttle " (since Linux 3.6)"
-.\" commit 68243e76ee343d63c6cf76978588a885951e2818
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR zone_reclaim_failed " (since linux 2.6.31)"
-.\" commit 24cf72518c79cdcda486ed26074ff8151291cf65
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_NUMA .
-.TP
-.IR pginodesteal " (since linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR slabs_scanned " (since linux 2.6.5)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR kswapd_inodesteal " (since linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR kswapd_low_wmark_hit_quickly " (since Linux 2.6.33)"
-.\" commit bb3ab596832b920c703d1aea1ce76d69c0f71fb7
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR kswapd_high_wmark_hit_quickly " (since Linux 2.6.33)"
-.\" commit bb3ab596832b920c703d1aea1ce76d69c0f71fb7
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pageoutrun " (since Linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR allocstall " (since Linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR pgrotated " (since Linux 2.6.0)"
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR drop_pagecache " (since Linux 3.15)"
-.\" commit 5509a5d27b971a90b940e148ca9ca53312e4fa7a
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR drop_slab " (since Linux 3.15)"
-.\" commit 5509a5d27b971a90b940e148ca9ca53312e4fa7a
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR numa_pte_updates " (since Linux 3.8)"
-.\" commit 03c5a6e16322c997bf8f264851bfa3f532ad515f
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_NUMA_BALANCING .
-.TP
-.IR numa_huge_pte_updates " (since Linux 3.13)"
-.\" commit 72403b4a0fbdf433c1fe0127e49864658f6f6468
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_NUMA_BALANCING .
-.TP
-.IR numa_hint_faults " (since Linux 3.8)"
-.\" commit 03c5a6e16322c997bf8f264851bfa3f532ad515f
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_NUMA_BALANCING .
-.TP
-.IR numa_hint_faults_local " (since Linux 3.8)"
-.\" commit 03c5a6e16322c997bf8f264851bfa3f532ad515f
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_NUMA_BALANCING .
-.TP
-.IR numa_pages_migrated " (since Linux 3.8)"
-.\" commit 03c5a6e16322c997bf8f264851bfa3f532ad515f
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_NUMA_BALANCING
-.\" and
-.\" .BR CONFIG_NUMA_BALANCING .
-.TP
-.IR pgmigrate_success " (since Linux 3.8)"
-.\" commit 5647bc293ab15f66a7b1cda850c5e9d162a6c7c2
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_MIGRATION .
-.TP
-.IR pgmigrate_fail " (since Linux 3.8)"
-.\" commit 5647bc293ab15f66a7b1cda850c5e9d162a6c7c2
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_MIGRATION .
-.TP
-.IR compact_migrate_scanned " (since Linux 3.8)"
-.\" commit 397487db696cae0b026a474a5cd66f4e372995e6
-.\" Linux 3.8 dropped compact_blocks_moved, compact_pages_moved, and
-.\" compact_pagemigrate_failed
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_COMPACTION .
-.TP
-.IR compact_free_scanned " (since Linux 3.8)"
-.\" commit 397487db696cae0b026a474a5cd66f4e372995e6
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_COMPACTION .
-.TP
-.IR compact_isolated " (since Linux 3.8)"
-.\" commit 397487db696cae0b026a474a5cd66f4e372995e6
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_COMPACTION .
-.TP
-.IR compact_stall " (since Linux 2.6.35)"
-.\" commit 56de7263fcf3eb10c8dcdf8d59a9cec831795f3f
-See the kernel source file
-.IR Documentation/admin\-guide/mm/transhuge.rst .
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_COMPACTION .
-.TP
-.IR compact_fail " (since Linux 2.6.35)"
-.\" commit 56de7263fcf3eb10c8dcdf8d59a9cec831795f3f
-See the kernel source file
-.IR Documentation/admin\-guide/mm/transhuge.rst .
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_COMPACTION .
-.TP
-.IR compact_success " (since Linux 2.6.35)"
-.\" commit 56de7263fcf3eb10c8dcdf8d59a9cec831795f3f
-See the kernel source file
-.IR Documentation/admin\-guide/mm/transhuge.rst .
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_COMPACTION .
-.TP
-.IR htlb_buddy_alloc_success " (since Linux 2.6.26)"
-.\" commit 3b1163006332302117b1b2acf226d4014ff46525
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_HUGETLB_PAGE .
-.TP
-.IR htlb_buddy_alloc_fail " (since Linux 2.6.26)"
-.\" commit 3b1163006332302117b1b2acf226d4014ff46525
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_HUGETLB_PAGE .
-.TP
-.IR unevictable_pgs_culled " (since Linux 2.6.28)"
-.\" commit bbfd28eee9fbd73e780b19beb3dc562befbb94fa
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR unevictable_pgs_scanned " (since Linux 2.6.28)"
-.\" commit bbfd28eee9fbd73e780b19beb3dc562befbb94fa
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR unevictable_pgs_rescued " (since Linux 2.6.28)"
-.\" commit bbfd28eee9fbd73e780b19beb3dc562befbb94fa
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR unevictable_pgs_mlocked " (since Linux 2.6.28)"
-.\" commit 5344b7e648980cc2ca613ec03a56a8222ff48820
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR unevictable_pgs_munlocked " (since Linux 2.6.28)"
-.\" commit 5344b7e648980cc2ca613ec03a56a8222ff48820
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR unevictable_pgs_cleared " (since Linux 2.6.28)"
-.\" commit 5344b7e648980cc2ca613ec03a56a8222ff48820
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.TP
-.IR unevictable_pgs_stranded " (since Linux 2.6.28)"
-.\" commit 5344b7e648980cc2ca613ec03a56a8222ff48820
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS .
-.\" Linux 3.7 removed unevictable_pgs_mlockfreed
-.TP
-.IR thp_fault_alloc " (since Linux 2.6.39)"
-.\" commit 81ab4201fb7d91d6b0cd9ad5b4b16776e4bed145
-See the kernel source file
-.IR Documentation/admin\-guide/mm/transhuge.rst .
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_TRANSPARENT_HUGEPAGE .
-.TP
-.IR thp_fault_fallback " (since Linux 2.6.39)"
-.\" commit 81ab4201fb7d91d6b0cd9ad5b4b16776e4bed145
-See the kernel source file
-.IR Documentation/admin\-guide/mm/transhuge.rst .
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_TRANSPARENT_HUGEPAGE .
-.TP
-.IR thp_collapse_alloc " (since Linux 2.6.39)"
-.\" commit 81ab4201fb7d91d6b0cd9ad5b4b16776e4bed145
-See the kernel source file
-.IR Documentation/admin\-guide/mm/transhuge.rst .
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_TRANSPARENT_HUGEPAGE .
-.TP
-.IR thp_collapse_alloc_failed " (since Linux 2.6.39)"
-.\" commit 81ab4201fb7d91d6b0cd9ad5b4b16776e4bed145
-See the kernel source file
-.IR Documentation/admin\-guide/mm/transhuge.rst .
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_TRANSPARENT_HUGEPAGE .
-.TP
-.IR thp_split " (since Linux 2.6.39)"
-.\" commit 81ab4201fb7d91d6b0cd9ad5b4b16776e4bed145
-See the kernel source file
-.IR Documentation/admin\-guide/mm/transhuge.rst .
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_TRANSPARENT_HUGEPAGE .
-.TP
-.IR thp_zero_page_alloc " (since Linux 3.8)"
-.\" commit d8a8e1f0da3d29d7268b3300c96a059d63901b76
-See the kernel source file
-.IR Documentation/admin\-guide/mm/transhuge.rst .
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_TRANSPARENT_HUGEPAGE .
-.TP
-.IR thp_zero_page_alloc_failed " (since Linux 3.8)"
-.\" commit d8a8e1f0da3d29d7268b3300c96a059d63901b76
-See the kernel source file
-.IR Documentation/admin\-guide/mm/transhuge.rst .
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_TRANSPARENT_HUGEPAGE .
-.TP
-.IR balloon_inflate " (since Linux 3.18)"
-.\" commit 09316c09dde33aae14f34489d9e3d243ec0d5938
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_MEMORY_BALLOON .
-.TP
-.IR balloon_deflate " (since Linux 3.18)"
-.\" commit 09316c09dde33aae14f34489d9e3d243ec0d5938
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS
-.\" and
-.\" .BR CONFIG_MEMORY_BALLOON .
-.TP
-.IR balloon_migrate " (since Linux 3.18)"
-.\" commit 09316c09dde33aae14f34489d9e3d243ec0d5938
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_VM_EVENT_COUNTERS ,
-.\" .BR CONFIG_MEMORY_BALLOON ,
-.\" and
-.\" .BR CONFIG_BALLOON_COMPACTION .
-.TP
-.IR nr_tlb_remote_flush " (since Linux 3.12)"
-.\" commit 9824cf9753ecbe8f5b47aa9b2f218207defea211
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_DEBUG_TLBFLUSH
-.\" and
-.\" .BR CONFIG_SMP .
-.TP
-.IR nr_tlb_remote_flush_received " (since Linux 3.12)"
-.\" commit 9824cf9753ecbe8f5b47aa9b2f218207defea211
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_DEBUG_TLBFLUSH
-.\" and
-.\" .BR CONFIG_SMP .
-.TP
-.IR nr_tlb_local_flush_all " (since Linux 3.12)"
-.\" commit 9824cf9753ecbe8f5b47aa9b2f218207defea211
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_DEBUG_TLBFLUSH .
-.TP
-.IR nr_tlb_local_flush_one " (since Linux 3.12)"
-.\" commit 9824cf9753ecbe8f5b47aa9b2f218207defea211
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_DEBUG_TLBFLUSH .
-.TP
-.IR vmacache_find_calls " (since Linux 3.16)"
-.\" commit 4f115147ff802267d0aa41e361c5aa5bd933d896
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_DEBUG_VM_VMACACHE .
-.TP
-.IR vmacache_find_hits " (since Linux 3.16)"
-.\" commit 4f115147ff802267d0aa41e361c5aa5bd933d896
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_DEBUG_VM_VMACACHE .
-.TP
-.IR vmacache_full_flushes " (since Linux 3.19)"
-.\" commit f5f302e21257ebb0c074bbafc37606c26d28cc3d
-.\" Present only if the kernel was configured with
-.\" .BR CONFIG_DEBUG_VM_VMACACHE .
-.RE
-.TP
-.IR /proc/zoneinfo " (since Linux 2.6.13)"
-This file displays information about memory zones.
-This is useful for analyzing virtual memory behavior.
-.\" FIXME more should be said about /proc/zoneinfo
-.SH NOTES
-Many files contain strings (e.g., the environment and command line)
-that are in the internal format,
-with subfields terminated by null bytes (\[aq]\e0\[aq]).
-When inspecting such files, you may find that the results are more readable
-if you use a command of the following form to display them:
-.PP
-.in +4n
-.EX
-.RB "$" " cat \fIfile\fP | tr \[aq]\e000\[aq] \[aq]\en\[aq]"
-.EE
-.in
-.PP
-This manual page is incomplete, possibly inaccurate, and is the kind
-of thing that needs to be updated very often.
-.\" .SH ACKNOWLEDGEMENTS
-.\" The material on /proc/sys/fs and /proc/sys/kernel is closely based on
-.\" kernel source documentation files written by Rik van Riel.
-.SH SEE ALSO
-.BR cat (1),
-.BR dmesg (1),
-.BR find (1),
-.BR free (1),
-.BR htop (1),
-.BR init (1),
-.BR ps (1),
-.BR pstree (1),
-.BR tr (1),
-.BR uptime (1),
-.BR chroot (2),
-.BR mmap (2),
-.BR readlink (2),
-.BR syslog (2),
-.BR slabinfo (5),
-.BR sysfs (5),
-.BR hier (7),
-.BR namespaces (7),
-.BR time (7),
-.BR arp (8),
-.BR hdparm (8),
-.BR ifconfig (8),
-.BR lsmod (8),
-.BR lspci (8),
-.BR mount (8),
-.BR netstat (8),
-.BR procinfo (8),
-.BR route (8),
-.BR sysctl (8)
-.PP
-The Linux kernel source files:
-.IR Documentation/filesystems/proc.rst ,
-.IR Documentation/admin\-guide/sysctl/fs.rst ,
-.IR Documentation/admin\-guide/sysctl/kernel.rst ,
-.IR Documentation/admin\-guide/sysctl/net.rst ,
-and
-.IR Documentation/admin\-guide/sysctl/vm.rst .