^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) .. SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) The /proc Filesystem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) ===================== ======================================= ================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) /proc/sys Terrehon Bowden <terrehon@pacbell.net>, October 7 1999
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) Bodo Bauer <bb@ricochet.net>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 2.4.x update Jorge Nerin <comandante@zaralinux.com> November 14 2000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) move /proc/sys Shen Feng <shen@cn.fujitsu.com> April 1 2009
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) fixes/update part 1.1 Stefani Seibold <stefani@seibold.net> June 9 2009
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) ===================== ======================================= ================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) .. Table of Contents
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 0 Preface
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 0.1 Introduction/Credits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 0.2 Legal Stuff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 1 Collecting System Information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 1.1 Process-Specific Subdirectories
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 1.2 Kernel data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 1.3 IDE devices in /proc/ide
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 1.4 Networking info in /proc/net
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 1.5 SCSI info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 1.6 Parallel port info in /proc/parport
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 1.7 TTY info in /proc/tty
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 1.8 Miscellaneous kernel statistics in /proc/stat
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 1.9 Ext4 file system parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 2 Modifying System Parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 3 Per-Process Parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 3.1 /proc/<pid>/oom_adj & /proc/<pid>/oom_score_adj - Adjust the oom-killer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) score
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 3.2 /proc/<pid>/oom_score - Display current oom-killer score
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 3.3 /proc/<pid>/io - Display the IO accounting fields
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 3.4 /proc/<pid>/coredump_filter - Core dump filtering settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 3.5 /proc/<pid>/mountinfo - Information about mounts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 3.7 /proc/<pid>/task/<tid>/children - Information about task children
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 3.8 /proc/<pid>/fdinfo/<fd> - Information about opened file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 3.9 /proc/<pid>/map_files - Information about memory mapped files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 3.10 /proc/<pid>/timerslack_ns - Task timerslack value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 3.11 /proc/<pid>/patch_state - Livepatch patch operation state
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 3.12 /proc/<pid>/arch_status - Task architecture specific information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 4 Configuring procfs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 4.1 Mount options
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 5 Filesystem behavior
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) Preface
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) =======
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 0.1 Introduction/Credits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) ------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) This documentation is part of a soon (or so we hope) to be released book on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) the SuSE Linux distribution. As there is no complete documentation for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) /proc file system and we've used many freely available sources to write these
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) chapters, it seems only fair to give the work back to the Linux community.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) This work is based on the 2.2.* kernel version and the upcoming 2.4.*. I'm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) afraid it's still far from complete, but we hope it will be useful. As far as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) we know, it is the first 'all-in-one' document about the /proc file system. It
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) is focused on the Intel x86 hardware, so if you are looking for PPC, ARM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) SPARC, AXP, etc., features, you probably won't find what you are looking for.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) It also only covers IPv4 networking, not IPv6 nor other protocols - sorry. But
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) additions and patches are welcome and will be added to this document if you
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) mail them to Bodo.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) We'd like to thank Alan Cox, Rik van Riel, and Alexey Kuznetsov and a lot of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) other people for help compiling this documentation. We'd also like to extend a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) special thank you to Andi Kleen for documentation, which we relied on heavily
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) to create this document, as well as the additional information he provided.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) Thanks to everybody else who contributed source or docs to the Linux kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) and helped create a great piece of software... :)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) If you have any comments, corrections or additions, please don't hesitate to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) contact Bodo Bauer at bb@ricochet.net. We'll be happy to add them to this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) document.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) The latest version of this document is available online at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) If the above direction does not works for you, you could try the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) mailing list at linux-kernel@vger.kernel.org and/or try to reach me at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) comandante@zaralinux.com.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) 0.2 Legal Stuff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) ---------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) We don't guarantee the correctness of this document, and if you come to us
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) complaining about how you screwed up your system because of incorrect
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) documentation, we won't feel responsible...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) Chapter 1: Collecting System Information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) ========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) In This Chapter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) ---------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) * Investigating the properties of the pseudo file system /proc and its
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) ability to provide information on the running Linux system
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) * Examining /proc's structure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) * Uncovering various information about the kernel and the processes running
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) on the system
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) ------------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) The proc file system acts as an interface to internal data structures in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) kernel. It can be used to obtain information about the system and to change
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) certain kernel parameters at runtime (sysctl).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) First, we'll take a look at the read-only parts of /proc. In Chapter 2, we
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) show you how you can use /proc/sys to change settings.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 1.1 Process-Specific Subdirectories
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) -----------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) The directory /proc contains (among other things) one subdirectory for each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) process running on the system, which is named after the process ID (PID).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) The link 'self' points to the process reading the file system. Each process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) subdirectory has the entries listed in Table 1-1.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) Note that an open file descriptor to /proc/<pid> or to any of its
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) contained files or subdirectories does not prevent <pid> being reused
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) for some other process in the event that <pid> exits. Operations on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) open /proc/<pid> file descriptors corresponding to dead processes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) never act on any new process that the kernel may, through chance, have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) also assigned the process ID <pid>. Instead, operations on these FDs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) usually fail with ESRCH.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) .. table:: Table 1-1: Process specific entries in /proc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) ============= ===============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) File Content
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) ============= ===============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) clear_refs Clears page referenced bits shown in smaps output
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) cmdline Command line arguments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) cpu Current and last cpu in which it was executed (2.4)(smp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) cwd Link to the current working directory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) environ Values of environment variables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) exe Link to the executable of this process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) fd Directory, which contains all file descriptors
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) maps Memory maps to executables and library files (2.4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) mem Memory held by this process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) root Link to the root directory of this process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) stat Process status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) statm Process memory status information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) status Process status in human readable form
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) wchan Present with CONFIG_KALLSYMS=y: it shows the kernel function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) symbol the task is blocked in - or "0" if not blocked.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) pagemap Page table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) stack Report full stack trace, enable via CONFIG_STACKTRACE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) smaps An extension based on maps, showing the memory consumption of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) each mapping and flags associated with it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) smaps_rollup Accumulated smaps stats for all mappings of the process. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) can be derived from smaps, but is faster and more convenient
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) numa_maps An extension based on maps, showing the memory locality and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) binding policy as well as mem usage (in pages) of each mapping.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) ============= ===============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) For example, to get the status information of a process, all you have to do is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) read the file /proc/PID/status::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) >cat /proc/self/status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) Name: cat
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) State: R (running)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) Tgid: 5452
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) Pid: 5452
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) PPid: 743
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) TracerPid: 0 (2.4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) Uid: 501 501 501 501
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) Gid: 100 100 100 100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) FDSize: 256
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) Groups: 100 14 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) VmPeak: 5004 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) VmSize: 5004 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) VmLck: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) VmHWM: 476 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) VmRSS: 476 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) RssAnon: 352 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) RssFile: 120 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) RssShmem: 4 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) VmData: 156 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) VmStk: 88 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) VmExe: 68 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) VmLib: 1412 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) VmPTE: 20 kb
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) VmSwap: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) HugetlbPages: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) CoreDumping: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) THP_enabled: 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) Threads: 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) SigQ: 0/28578
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) SigPnd: 0000000000000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) ShdPnd: 0000000000000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) SigBlk: 0000000000000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) SigIgn: 0000000000000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) SigCgt: 0000000000000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) CapInh: 00000000fffffeff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) CapPrm: 0000000000000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) CapEff: 0000000000000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) CapBnd: ffffffffffffffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) CapAmb: 0000000000000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) NoNewPrivs: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) Seccomp: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) Speculation_Store_Bypass: thread vulnerable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) voluntary_ctxt_switches: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) nonvoluntary_ctxt_switches: 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) This shows you nearly the same information you would get if you viewed it with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) the ps command. In fact, ps uses the proc file system to obtain its
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) information. But you get a more detailed view of the process by reading the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) file /proc/PID/status. It fields are described in table 1-2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) The statm file contains more detailed information about the process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) memory usage. Its seven fields are explained in Table 1-3. The stat file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) contains detailed information about the process itself. Its fields are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) explained in Table 1-4.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) (for SMP CONFIG users)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) For making accounting scalable, RSS related information are handled in an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) asynchronous manner and the value may not be very precise. To see a precise
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) snapshot of a moment, you can see /proc/<pid>/smaps file and scan page table.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) It's slow but very precise.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) .. table:: Table 1-2: Contents of the status files (as of 4.19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) ========================== ===================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) Field Content
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) ========================== ===================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) Name filename of the executable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) Umask file mode creation mask
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) State state (R is running, S is sleeping, D is sleeping
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) in an uninterruptible wait, Z is zombie,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) T is traced or stopped)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) Tgid thread group ID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) Ngid NUMA group ID (0 if none)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) Pid process id
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) PPid process id of the parent process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) TracerPid PID of process tracing this process (0 if not)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) Uid Real, effective, saved set, and file system UIDs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) Gid Real, effective, saved set, and file system GIDs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) FDSize number of file descriptor slots currently allocated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) Groups supplementary group list
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) NStgid descendant namespace thread group ID hierarchy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) NSpid descendant namespace process ID hierarchy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) NSpgid descendant namespace process group ID hierarchy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) NSsid descendant namespace session ID hierarchy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) VmPeak peak virtual memory size
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) VmSize total program size
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) VmLck locked memory size
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) VmPin pinned memory size
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) VmHWM peak resident set size ("high water mark")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) VmRSS size of memory portions. It contains the three
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) following parts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) (VmRSS = RssAnon + RssFile + RssShmem)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) RssAnon size of resident anonymous memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) RssFile size of resident file mappings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) RssShmem size of resident shmem memory (includes SysV shm,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) mapping of tmpfs and shared anonymous mappings)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) VmData size of private data segments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) VmStk size of stack segments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) VmExe size of text segment
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) VmLib size of shared library code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) VmPTE size of page table entries
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) VmSwap amount of swap used by anonymous private data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) (shmem swap usage is not included)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) HugetlbPages size of hugetlb memory portions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) CoreDumping process's memory is currently being dumped
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) (killing the process may lead to a corrupted core)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) THP_enabled process is allowed to use THP (returns 0 when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) PR_SET_THP_DISABLE is set on the process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) Threads number of threads
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) SigQ number of signals queued/max. number for queue
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) SigPnd bitmap of pending signals for the thread
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) ShdPnd bitmap of shared pending signals for the process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) SigBlk bitmap of blocked signals
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) SigIgn bitmap of ignored signals
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) SigCgt bitmap of caught signals
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) CapInh bitmap of inheritable capabilities
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) CapPrm bitmap of permitted capabilities
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) CapEff bitmap of effective capabilities
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) CapBnd bitmap of capabilities bounding set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) CapAmb bitmap of ambient capabilities
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) NoNewPrivs no_new_privs, like prctl(PR_GET_NO_NEW_PRIV, ...)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) Seccomp seccomp mode, like prctl(PR_GET_SECCOMP, ...)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) Speculation_Store_Bypass speculative store bypass mitigation status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) Cpus_allowed mask of CPUs on which this process may run
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) Cpus_allowed_list Same as previous, but in "list format"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) Mems_allowed mask of memory nodes allowed to this process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) Mems_allowed_list Same as previous, but in "list format"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) voluntary_ctxt_switches number of voluntary context switches
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) nonvoluntary_ctxt_switches number of non voluntary context switches
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) ========================== ===================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) .. table:: Table 1-3: Contents of the statm files (as of 2.6.8-rc3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) ======== =============================== ==============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) Field Content
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) ======== =============================== ==============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) size total program size (pages) (same as VmSize in status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) resident size of memory portions (pages) (same as VmRSS in status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) shared number of pages that are shared (i.e. backed by a file, same
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) as RssFile+RssShmem in status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) trs number of pages that are 'code' (not including libs; broken,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) includes data segment)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) lrs number of pages of library (always 0 on 2.6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) drs number of pages of data/stack (including libs; broken,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) includes library text)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) dt number of dirty pages (always 0 on 2.6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) ======== =============================== ==============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) .. table:: Table 1-4: Contents of the stat files (as of 2.6.30-rc7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) ============= ===============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) Field Content
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) ============= ===============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) pid process id
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) tcomm filename of the executable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) state state (R is running, S is sleeping, D is sleeping in an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) uninterruptible wait, Z is zombie, T is traced or stopped)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) ppid process id of the parent process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) pgrp pgrp of the process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) sid session id
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) tty_nr tty the process uses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) tty_pgrp pgrp of the tty
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) flags task flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) min_flt number of minor faults
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) cmin_flt number of minor faults with child's
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) maj_flt number of major faults
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) cmaj_flt number of major faults with child's
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) utime user mode jiffies
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) stime kernel mode jiffies
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) cutime user mode jiffies with child's
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) cstime kernel mode jiffies with child's
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) priority priority level
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) nice nice level
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) num_threads number of threads
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) it_real_value (obsolete, always 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) start_time time the process started after system boot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) vsize virtual memory size
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) rss resident set memory size
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) rsslim current limit in bytes on the rss
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) start_code address above which program text can run
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) end_code address below which program text can run
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) start_stack address of the start of the main process stack
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) esp current value of ESP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) eip current value of EIP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) pending bitmap of pending signals
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) blocked bitmap of blocked signals
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) sigign bitmap of ignored signals
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) sigcatch bitmap of caught signals
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) 0 (place holder, used to be the wchan address,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) use /proc/PID/wchan instead)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) 0 (place holder)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) 0 (place holder)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) exit_signal signal to send to parent thread on exit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) task_cpu which CPU the task is scheduled on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) rt_priority realtime priority
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) policy scheduling policy (man sched_setscheduler)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) blkio_ticks time spent waiting for block IO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) gtime guest time of the task in jiffies
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) cgtime guest time of the task children in jiffies
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) start_data address above which program data+bss is placed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) end_data address below which program data+bss is placed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) start_brk address above which program heap can be expanded with brk()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) arg_start address above which program command line is placed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) arg_end address below which program command line is placed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) env_start address above which program environment is placed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) env_end address below which program environment is placed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) exit_code the thread's exit_code in the form reported by the waitpid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) system call
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) ============= ===============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) The /proc/PID/maps file contains the currently mapped memory regions and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) their access permissions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) The format is::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) address perms offset dev inode pathname
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) 08048000-08049000 r-xp 00000000 03:00 8312 /opt/test
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) 08049000-0804a000 rw-p 00001000 03:00 8312 /opt/test
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) 0804a000-0806b000 rw-p 00000000 00:00 0 [heap]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) a7cb1000-a7cb2000 ---p 00000000 00:00 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) a7cb2000-a7eb2000 rw-p 00000000 00:00 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) a7eb2000-a7eb3000 ---p 00000000 00:00 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) a7eb3000-a7ed5000 rw-p 00000000 00:00 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) a7ed5000-a8008000 r-xp 00000000 03:00 4222 /lib/libc.so.6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) a8008000-a800a000 r--p 00133000 03:00 4222 /lib/libc.so.6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) a800a000-a800b000 rw-p 00135000 03:00 4222 /lib/libc.so.6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) a800b000-a800e000 rw-p 00000000 00:00 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) a800e000-a8022000 r-xp 00000000 03:00 14462 /lib/libpthread.so.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) a8022000-a8023000 r--p 00013000 03:00 14462 /lib/libpthread.so.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) a8023000-a8024000 rw-p 00014000 03:00 14462 /lib/libpthread.so.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) a8024000-a8027000 rw-p 00000000 00:00 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) a8027000-a8043000 r-xp 00000000 03:00 8317 /lib/ld-linux.so.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) a8043000-a8044000 r--p 0001b000 03:00 8317 /lib/ld-linux.so.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) a8044000-a8045000 rw-p 0001c000 03:00 8317 /lib/ld-linux.so.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) aff35000-aff4a000 rw-p 00000000 00:00 0 [stack]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) ffffe000-fffff000 r-xp 00000000 00:00 0 [vdso]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) where "address" is the address space in the process that it occupies, "perms"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) is a set of permissions::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) r = read
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) w = write
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) x = execute
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) s = shared
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) p = private (copy on write)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) "offset" is the offset into the mapping, "dev" is the device (major:minor), and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) "inode" is the inode on that device. 0 indicates that no inode is associated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) with the memory region, as the case would be with BSS (uninitialized data).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) The "pathname" shows the name associated file for this mapping. If the mapping
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) is not associated with a file:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) ======= ====================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) [heap] the heap of the program
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) [stack] the stack of the main process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) [vdso] the "virtual dynamic shared object",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) the kernel system call handler
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) [anon:<name>] an anonymous mapping that has been
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) named by userspace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) ======= ====================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) or if empty, the mapping is anonymous.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) The /proc/PID/smaps is an extension based on maps, showing the memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) consumption for each of the process's mappings. For each mapping (aka Virtual
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) Memory Area, or VMA) there is a series of lines such as the following::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) 08048000-080bc000 r-xp 00000000 03:02 13130 /bin/bash
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) Size: 1084 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) KernelPageSize: 4 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) MMUPageSize: 4 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) Rss: 892 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) Pss: 374 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) Shared_Clean: 892 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) Shared_Dirty: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) Private_Clean: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) Private_Dirty: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) Referenced: 892 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) Anonymous: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) LazyFree: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) AnonHugePages: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) ShmemPmdMapped: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) Shared_Hugetlb: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) Private_Hugetlb: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) Swap: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) SwapPss: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) KernelPageSize: 4 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) MMUPageSize: 4 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) Locked: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) THPeligible: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) VmFlags: rd ex mr mw me dw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) Name: name from userspace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) The first of these lines shows the same information as is displayed for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) mapping in /proc/PID/maps. Following lines show the size of the mapping
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) (size); the size of each page allocated when backing a VMA (KernelPageSize),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) which is usually the same as the size in the page table entries; the page size
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) used by the MMU when backing a VMA (in most cases, the same as KernelPageSize);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) the amount of the mapping that is currently resident in RAM (RSS); the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) process' proportional share of this mapping (PSS); and the number of clean and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) dirty shared and private pages in the mapping.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) The "proportional set size" (PSS) of a process is the count of pages it has
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) in memory, where each page is divided by the number of processes sharing it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) So if a process has 1000 pages all to itself, and 1000 shared with one other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) process, its PSS will be 1500.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) Note that even a page which is part of a MAP_SHARED mapping, but has only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) a single pte mapped, i.e. is currently used by only one process, is accounted
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) as private and not as shared.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) "Referenced" indicates the amount of memory currently marked as referenced or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) accessed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) "Anonymous" shows the amount of memory that does not belong to any file. Even
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) a mapping associated with a file may contain anonymous pages: when MAP_PRIVATE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) and a page is modified, the file page is replaced by a private anonymous copy.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) "LazyFree" shows the amount of memory which is marked by madvise(MADV_FREE).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) The memory isn't freed immediately with madvise(). It's freed in memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) pressure if the memory is clean. Please note that the printed value might
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) be lower than the real value due to optimizations used in the current
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) implementation. If this is not desirable please file a bug report.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) "AnonHugePages" shows the ammount of memory backed by transparent hugepage.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) "ShmemPmdMapped" shows the ammount of shared (shmem/tmpfs) memory backed by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) huge pages.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) "Shared_Hugetlb" and "Private_Hugetlb" show the ammounts of memory backed by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) hugetlbfs page which is *not* counted in "RSS" or "PSS" field for historical
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) reasons. And these are not included in {Shared,Private}_{Clean,Dirty} field.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) "Swap" shows how much would-be-anonymous memory is also used, but out on swap.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) For shmem mappings, "Swap" includes also the size of the mapped (and not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) replaced by copy-on-write) part of the underlying shmem object out on swap.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) "SwapPss" shows proportional swap share of this mapping. Unlike "Swap", this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) does not take into account swapped out page of underlying shmem objects.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) "Locked" indicates whether the mapping is locked in memory or not.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) "THPeligible" indicates whether the mapping is eligible for allocating THP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) pages - 1 if true, 0 otherwise. It just shows the current status.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) "VmFlags" field deserves a separate description. This member represents the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) kernel flags associated with the particular virtual memory area in two letter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) encoded manner. The codes are the following:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) == =======================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) rd readable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) wr writeable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) ex executable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) sh shared
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) mr may read
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) mw may write
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) me may execute
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) ms may share
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) gd stack segment growns down
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) pf pure PFN range
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) dw disabled write to the mapped file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) lo pages are locked in memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) io memory mapped I/O area
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) sr sequential read advise provided
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) rr random read advise provided
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) dc do not copy area on fork
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) de do not expand area on remapping
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) ac area is accountable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) nr swap space is not reserved for the area
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) ht area uses huge tlb pages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) ar architecture specific flag
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) dd do not include area into core dump
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) sd soft dirty flag
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) mm mixed map area
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) hg huge page advise flag
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) nh no huge page advise flag
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) mg mergable advise flag
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) bt arm64 BTI guarded page
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) mt arm64 MTE allocation tags are enabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) == =======================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) Note that there is no guarantee that every flag and associated mnemonic will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) be present in all further kernel releases. Things get changed, the flags may
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) be vanished or the reverse -- new added. Interpretation of their meaning
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) might change in future as well. So each consumer of these flags has to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) follow each specific kernel version for the exact semantic.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) The "Name" field will only be present on a mapping that has been named by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) userspace, and will show the name passed in by userspace.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) This file is only present if the CONFIG_MMU kernel configuration option is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) enabled.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) Note: reading /proc/PID/maps or /proc/PID/smaps is inherently racy (consistent
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) output can be achieved only in the single read call).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) This typically manifests when doing partial reads of these files while the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) memory map is being modified. Despite the races, we do provide the following
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) guarantees:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) 1) The mapped addresses never go backwards, which implies no two
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) regions will ever overlap.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) 2) If there is something at a given vaddr during the entirety of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) life of the smaps/maps walk, there will be some output for it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) The /proc/PID/smaps_rollup file includes the same fields as /proc/PID/smaps,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) but their values are the sums of the corresponding values for all mappings of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) the process. Additionally, it contains these fields:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) - Pss_Anon
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) - Pss_File
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) - Pss_Shmem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) They represent the proportional shares of anonymous, file, and shmem pages, as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) described for smaps above. These fields are omitted in smaps since each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) mapping identifies the type (anon, file, or shmem) of all pages it contains.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) Thus all information in smaps_rollup can be derived from smaps, but at a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) significantly higher cost.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) The /proc/PID/clear_refs is used to reset the PG_Referenced and ACCESSED/YOUNG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) bits on both physical and virtual pages associated with a process, and the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) soft-dirty bit on pte (see Documentation/admin-guide/mm/soft-dirty.rst
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) for details).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) To clear the bits for all the pages associated with the process::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) > echo 1 > /proc/PID/clear_refs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) To clear the bits for the anonymous pages associated with the process::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) > echo 2 > /proc/PID/clear_refs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) To clear the bits for the file mapped pages associated with the process::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) > echo 3 > /proc/PID/clear_refs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) To clear the soft-dirty bit::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) > echo 4 > /proc/PID/clear_refs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) To reset the peak resident set size ("high water mark") to the process's
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) current value::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) > echo 5 > /proc/PID/clear_refs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) Any other value written to /proc/PID/clear_refs will have no effect.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) The /proc/pid/pagemap gives the PFN, which can be used to find the pageflags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) using /proc/kpageflags and number of times a page is mapped using
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) /proc/kpagecount. For detailed explanation, see
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) Documentation/admin-guide/mm/pagemap.rst.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) The /proc/pid/numa_maps is an extension based on maps, showing the memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) locality and binding policy, as well as the memory usage (in pages) of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) each mapping. The output follows a general format where mapping details get
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) summarized separated by blank spaces, one mapping per each file line::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) address policy mapping details
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) 00400000 default file=/usr/local/bin/app mapped=1 active=0 N3=1 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) 00600000 default file=/usr/local/bin/app anon=1 dirty=1 N3=1 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) 3206000000 default file=/lib64/ld-2.12.so mapped=26 mapmax=6 N0=24 N3=2 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) 320621f000 default file=/lib64/ld-2.12.so anon=1 dirty=1 N3=1 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) 3206220000 default file=/lib64/ld-2.12.so anon=1 dirty=1 N3=1 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) 3206221000 default anon=1 dirty=1 N3=1 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) 3206800000 default file=/lib64/libc-2.12.so mapped=59 mapmax=21 active=55 N0=41 N3=18 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) 320698b000 default file=/lib64/libc-2.12.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) 3206b8a000 default file=/lib64/libc-2.12.so anon=2 dirty=2 N3=2 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) 3206b8e000 default file=/lib64/libc-2.12.so anon=1 dirty=1 N3=1 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) 3206b8f000 default anon=3 dirty=3 active=1 N3=3 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) 7f4dc10a2000 default anon=3 dirty=3 N3=3 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) 7f4dc10b4000 default anon=2 dirty=2 active=1 N3=2 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) 7f4dc1200000 default file=/anon_hugepage\040(deleted) huge anon=1 dirty=1 N3=1 kernelpagesize_kB=2048
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) 7fff335f0000 default stack anon=3 dirty=3 N3=3 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) 7fff3369d000 default mapped=1 mapmax=35 active=0 N3=1 kernelpagesize_kB=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) Where:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) "address" is the starting address for the mapping;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) "policy" reports the NUMA memory policy set for the mapping (see Documentation/admin-guide/mm/numa_memory_policy.rst);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) "mapping details" summarizes mapping data such as mapping type, page usage counters,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) node locality page counters (N0 == node0, N1 == node1, ...) and the kernel page
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) size, in KB, that is backing the mapping up.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) 1.2 Kernel data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) ---------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) Similar to the process entries, the kernel data files give information about
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) the running kernel. The files used to obtain this information are contained in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) /proc and are listed in Table 1-5. Not all of these will be present in your
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) system. It depends on the kernel configuration and the loaded modules, which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) files are there, and which are missing.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) .. table:: Table 1-5: Kernel info in /proc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) ============ ===============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) File Content
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) ============ ===============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) apm Advanced power management info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) buddyinfo Kernel memory allocator information (see text) (2.5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) bus Directory containing bus specific information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) cmdline Kernel command line
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) cpuinfo Info about the CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) devices Available devices (block and character)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) dma Used DMS channels
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) filesystems Supported filesystems
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) driver Various drivers grouped here, currently rtc (2.4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) execdomains Execdomains, related to security (2.4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) fb Frame Buffer devices (2.4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) fs File system parameters, currently nfs/exports (2.4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) ide Directory containing info about the IDE subsystem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) interrupts Interrupt usage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) iomem Memory map (2.4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) ioports I/O port usage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) irq Masks for irq to cpu affinity (2.4)(smp?)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) isapnp ISA PnP (Plug&Play) Info (2.4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) kcore Kernel core image (can be ELF or A.OUT(deprecated in 2.4))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) kmsg Kernel messages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) ksyms Kernel symbol table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) loadavg Load average of last 1, 5 & 15 minutes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) locks Kernel locks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) meminfo Memory info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) misc Miscellaneous
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) modules List of loaded modules
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) mounts Mounted filesystems
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) net Networking info (see text)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) pagetypeinfo Additional page allocator information (see text) (2.5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) partitions Table of partitions known to the system
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) pci Deprecated info of PCI bus (new way -> /proc/bus/pci/,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) decoupled by lspci (2.4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) rtc Real time clock
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) scsi SCSI info (see text)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) slabinfo Slab pool info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) softirqs softirq usage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) stat Overall statistics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) swaps Swap space utilization
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) sys See chapter 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) sysvipc Info of SysVIPC Resources (msg, sem, shm) (2.4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) tty Info of tty drivers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) uptime Wall clock since boot, combined idle time of all cpus
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) version Kernel version
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) video bttv info of video resources (2.4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) vmallocinfo Show vmalloced areas
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) ============ ===============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) You can, for example, check which interrupts are currently in use and what
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) they are used for by looking in the file /proc/interrupts::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) > cat /proc/interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) CPU0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) 0: 8728810 XT-PIC timer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) 1: 895 XT-PIC keyboard
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) 2: 0 XT-PIC cascade
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) 3: 531695 XT-PIC aha152x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) 4: 2014133 XT-PIC serial
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) 5: 44401 XT-PIC pcnet_cs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) 8: 2 XT-PIC rtc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) 11: 8 XT-PIC i82365
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) 12: 182918 XT-PIC PS/2 Mouse
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) 13: 1 XT-PIC fpu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) 14: 1232265 XT-PIC ide0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) 15: 7 XT-PIC ide1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) NMI: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) In 2.4.* a couple of lines where added to this file LOC & ERR (this time is the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) output of a SMP machine)::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) > cat /proc/interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) CPU0 CPU1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) 0: 1243498 1214548 IO-APIC-edge timer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) 1: 8949 8958 IO-APIC-edge keyboard
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) 2: 0 0 XT-PIC cascade
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) 5: 11286 10161 IO-APIC-edge soundblaster
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) 8: 1 0 IO-APIC-edge rtc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) 9: 27422 27407 IO-APIC-edge 3c503
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) 12: 113645 113873 IO-APIC-edge PS/2 Mouse
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) 13: 0 0 XT-PIC fpu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) 14: 22491 24012 IO-APIC-edge ide0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) 15: 2183 2415 IO-APIC-edge ide1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) 17: 30564 30414 IO-APIC-level eth0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) 18: 177 164 IO-APIC-level bttv
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) NMI: 2457961 2457959
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) LOC: 2457882 2457881
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) ERR: 2155
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) NMI is incremented in this case because every timer interrupt generates a NMI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) (Non Maskable Interrupt) which is used by the NMI Watchdog to detect lockups.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) LOC is the local interrupt counter of the internal APIC of every CPU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) ERR is incremented in the case of errors in the IO-APIC bus (the bus that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) connects the CPUs in a SMP system. This means that an error has been detected,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) the IO-APIC automatically retry the transmission, so it should not be a big
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) problem, but you should read the SMP-FAQ.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) In 2.6.2* /proc/interrupts was expanded again. This time the goal was for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) /proc/interrupts to display every IRQ vector in use by the system, not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) just those considered 'most important'. The new vectors are:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) THR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) interrupt raised when a machine check threshold counter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) (typically counting ECC corrected errors of memory or cache) exceeds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) a configurable threshold. Only available on some systems.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) TRM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) a thermal event interrupt occurs when a temperature threshold
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) has been exceeded for the CPU. This interrupt may also be generated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) when the temperature drops back to normal.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) SPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786) a spurious interrupt is some interrupt that was raised then lowered
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787) by some IO device before it could be fully processed by the APIC. Hence
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788) the APIC sees the interrupt but does not know what device it came from.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) For this case the APIC will generate the interrupt with a IRQ vector
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790) of 0xff. This might also be generated by chipset bugs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792) RES, CAL, TLB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) rescheduling, call and TLB flush interrupts are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794) sent from one CPU to another per the needs of the OS. Typically,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) their statistics are used by kernel developers and interested users to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) determine the occurrence of interrupts of the given type.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) The above IRQ vectors are displayed only when relevant. For example,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) the threshold vector does not exist on x86_64 platforms. Others are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) suppressed when the system is a uniprocessor. As of this writing, only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) i386 and x86_64 platforms support the new IRQ vector displays.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) Of some interest is the introduction of the /proc/irq directory to 2.4.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) It could be used to set IRQ to CPU affinity. This means that you can "hook" an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) IRQ to only one CPU, or to exclude a CPU of handling IRQs. The contents of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) irq subdir is one subdir for each IRQ, and two files; default_smp_affinity and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807) prof_cpu_mask.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) For example::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) > ls /proc/irq/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) 0 10 12 14 16 18 2 4 6 8 prof_cpu_mask
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) 1 11 13 15 17 19 3 5 7 9 default_smp_affinity
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) > ls /proc/irq/0/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815) smp_affinity
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817) smp_affinity is a bitmask, in which you can specify which CPUs can handle the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) IRQ. You can set it by doing::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) > echo 1 > /proc/irq/10/smp_affinity
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) This means that only the first CPU will handle the IRQ, but you can also echo
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823) 5 which means that only the first and third CPU can handle the IRQ.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825) The contents of each smp_affinity file is the same by default::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827) > cat /proc/irq/0/smp_affinity
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828) ffffffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830) There is an alternate interface, smp_affinity_list which allows specifying
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831) a CPU range instead of a bitmask::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) > cat /proc/irq/0/smp_affinity_list
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834) 1024-1031
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836) The default_smp_affinity mask applies to all non-active IRQs, which are the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837) IRQs which have not yet been allocated/activated, and hence which lack a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838) /proc/irq/[0-9]* directory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) The node file on an SMP system shows the node to which the device using the IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841) reports itself as being attached. This hardware locality information does not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842) include information about any possible driver locality preference.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844) prof_cpu_mask specifies which CPUs are to be profiled by the system wide
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) profiler. Default value is ffffffff (all CPUs if there are only 32 of them).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847) The way IRQs are routed is handled by the IO-APIC, and it's Round Robin
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848) between all the CPUs which are allowed to handle it. As usual the kernel has
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) more info than you and does a better job than you, so the defaults are the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850) best choice for almost everyone. [Note this applies only to those IO-APIC's
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851) that support "Round Robin" interrupt distribution.]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853) There are three more important subdirectories in /proc: net, scsi, and sys.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854) The general rule is that the contents, or even the existence of these
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855) directories, depend on your kernel configuration. If SCSI is not enabled, the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856) directory scsi may not exist. The same is true with the net, which is there
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857) only when networking support is present in the running kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859) The slabinfo file gives information about memory usage at the slab level.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) Linux uses slab pools for memory management above page level in version 2.2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861) Commonly used objects have their own slab pool (such as network buffers,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862) directory cache, and so on).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 863)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 864) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 865)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 866) > cat /proc/buddyinfo
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 867)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 868) Node 0, zone DMA 0 4 5 4 4 3 ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 869) Node 0, zone Normal 1 0 0 1 101 8 ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 870) Node 0, zone HighMem 2 0 0 1 1 0 ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 871)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 872) External fragmentation is a problem under some workloads, and buddyinfo is a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 873) useful tool for helping diagnose these problems. Buddyinfo will give you a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 874) clue as to how big an area you can safely allocate, or why a previous
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 875) allocation failed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 876)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 877) Each column represents the number of pages of a certain order which are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 878) available. In this case, there are 0 chunks of 2^0*PAGE_SIZE available in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 879) ZONE_DMA, 4 chunks of 2^1*PAGE_SIZE in ZONE_DMA, 101 chunks of 2^4*PAGE_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 880) available in ZONE_NORMAL, etc...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 881)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 882) More information relevant to external fragmentation can be found in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 883) pagetypeinfo::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 884)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 885) > cat /proc/pagetypeinfo
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 886) Page block order: 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 887) Pages per block: 512
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 888)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 889) Free pages count per migrate type at order 0 1 2 3 4 5 6 7 8 9 10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 890) Node 0, zone DMA, type Unmovable 0 0 0 1 1 1 1 1 1 1 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 891) Node 0, zone DMA, type Reclaimable 0 0 0 0 0 0 0 0 0 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 892) Node 0, zone DMA, type Movable 1 1 2 1 2 1 1 0 1 0 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 893) Node 0, zone DMA, type Reserve 0 0 0 0 0 0 0 0 0 1 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 894) Node 0, zone DMA, type Isolate 0 0 0 0 0 0 0 0 0 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 895) Node 0, zone DMA32, type Unmovable 103 54 77 1 1 1 11 8 7 1 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 896) Node 0, zone DMA32, type Reclaimable 0 0 2 1 0 0 0 0 1 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 897) Node 0, zone DMA32, type Movable 169 152 113 91 77 54 39 13 6 1 452
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 898) Node 0, zone DMA32, type Reserve 1 2 2 2 2 0 1 1 1 1 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 899) Node 0, zone DMA32, type Isolate 0 0 0 0 0 0 0 0 0 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 900)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 901) Number of blocks type Unmovable Reclaimable Movable Reserve Isolate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 902) Node 0, zone DMA 2 0 5 1 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 903) Node 0, zone DMA32 41 6 967 2 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 904)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 905) Fragmentation avoidance in the kernel works by grouping pages of different
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 906) migrate types into the same contiguous regions of memory called page blocks.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 907) A page block is typically the size of the default hugepage size, e.g. 2MB on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 908) X86-64. By keeping pages grouped based on their ability to move, the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 909) can reclaim pages within a page block to satisfy a high-order allocation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 910)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 911) The pagetypinfo begins with information on the size of a page block. It
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 912) then gives the same type of information as buddyinfo except broken down
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 913) by migrate-type and finishes with details on how many page blocks of each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 914) type exist.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 915)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 916) If min_free_kbytes has been tuned correctly (recommendations made by hugeadm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 917) from libhugetlbfs https://github.com/libhugetlbfs/libhugetlbfs/), one can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 918) make an estimate of the likely number of huge pages that can be allocated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 919) at a given point in time. All the "Movable" blocks should be allocatable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 920) unless memory has been mlock()'d. Some of the Reclaimable blocks should
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 921) also be allocatable although a lot of filesystem metadata may have to be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 922) reclaimed to achieve this.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 923)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 924)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 925) meminfo
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 926) ~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 927)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 928) Provides information about distribution and utilization of memory. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 929) varies by architecture and compile options. The following is from a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 930) 16GB PIII, which has highmem enabled. You may not have all of these fields.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 931)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 932) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 933)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 934) > cat /proc/meminfo
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 935)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 936) MemTotal: 16344972 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 937) MemFree: 13634064 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 938) MemAvailable: 14836172 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 939) Buffers: 3656 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 940) Cached: 1195708 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 941) SwapCached: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 942) Active: 891636 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 943) Inactive: 1077224 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 944) HighTotal: 15597528 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 945) HighFree: 13629632 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 946) LowTotal: 747444 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 947) LowFree: 4432 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 948) SwapTotal: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 949) SwapFree: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 950) Dirty: 968 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 951) Writeback: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 952) AnonPages: 861800 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 953) Mapped: 280372 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 954) Shmem: 644 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 955) KReclaimable: 168048 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 956) Slab: 284364 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 957) SReclaimable: 159856 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 958) SUnreclaim: 124508 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 959) PageTables: 24448 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 960) NFS_Unstable: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 961) Bounce: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 962) WritebackTmp: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 963) CommitLimit: 7669796 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 964) Committed_AS: 100056 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 965) VmallocTotal: 112216 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 966) VmallocUsed: 428 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 967) VmallocChunk: 111088 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 968) Percpu: 62080 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 969) HardwareCorrupted: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 970) AnonHugePages: 49152 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 971) ShmemHugePages: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 972) ShmemPmdMapped: 0 kB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 973)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 974) MemTotal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 975) Total usable RAM (i.e. physical RAM minus a few reserved
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 976) bits and the kernel binary code)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 977) MemFree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 978) The sum of LowFree+HighFree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 979) MemAvailable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 980) An estimate of how much memory is available for starting new
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 981) applications, without swapping. Calculated from MemFree,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 982) SReclaimable, the size of the file LRU lists, and the low
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 983) watermarks in each zone.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 984) The estimate takes into account that the system needs some
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 985) page cache to function well, and that not all reclaimable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 986) slab will be reclaimable, due to items being in use. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 987) impact of those factors will vary from system to system.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 988) Buffers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 989) Relatively temporary storage for raw disk blocks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 990) shouldn't get tremendously large (20MB or so)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 991) Cached
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 992) in-memory cache for files read from the disk (the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 993) pagecache). Doesn't include SwapCached
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 994) SwapCached
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 995) Memory that once was swapped out, is swapped back in but
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 996) still also is in the swapfile (if memory is needed it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 997) doesn't need to be swapped out AGAIN because it is already
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 998) in the swapfile. This saves I/O)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 999) Active
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) Memory that has been used more recently and usually not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) reclaimed unless absolutely necessary.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) Inactive
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) Memory which has been less recently used. It is more
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) eligible to be reclaimed for other purposes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) HighTotal, HighFree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) Highmem is all memory above ~860MB of physical memory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) Highmem areas are for use by userspace programs, or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) for the pagecache. The kernel must use tricks to access
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) this memory, making it slower to access than lowmem.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) LowTotal, LowFree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) Lowmem is memory which can be used for everything that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) highmem can be used for, but it is also available for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) kernel's use for its own data structures. Among many
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) other things, it is where everything from the Slab is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) allocated. Bad things happen when you're out of lowmem.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) SwapTotal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) total amount of swap space available
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) SwapFree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) Memory which has been evicted from RAM, and is temporarily
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) on the disk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) Dirty
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) Memory which is waiting to get written back to the disk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) Writeback
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) Memory which is actively being written back to the disk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) AnonPages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) Non-file backed pages mapped into userspace page tables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) HardwareCorrupted
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) The amount of RAM/memory in KB, the kernel identifies as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) corrupted.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) AnonHugePages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) Non-file backed huge pages mapped into userspace page tables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) Mapped
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) files which have been mmaped, such as libraries
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) Shmem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) Total memory used by shared memory (shmem) and tmpfs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) ShmemHugePages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) Memory used by shared memory (shmem) and tmpfs allocated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) with huge pages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) ShmemPmdMapped
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) Shared memory mapped into userspace with huge pages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) KReclaimable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) Kernel allocations that the kernel will attempt to reclaim
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) under memory pressure. Includes SReclaimable (below), and other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) direct allocations with a shrinker.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) Slab
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) in-kernel data structures cache
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) SReclaimable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) Part of Slab, that might be reclaimed, such as caches
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) SUnreclaim
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) Part of Slab, that cannot be reclaimed on memory pressure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) PageTables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) amount of memory dedicated to the lowest level of page
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) tables.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) NFS_Unstable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) Always zero. Previous counted pages which had been written to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) the server, but has not been committed to stable storage.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) Bounce
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) Memory used for block device "bounce buffers"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) WritebackTmp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) Memory used by FUSE for temporary writeback buffers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) CommitLimit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) Based on the overcommit ratio ('vm.overcommit_ratio'),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) this is the total amount of memory currently available to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) be allocated on the system. This limit is only adhered to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) if strict overcommit accounting is enabled (mode 2 in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) 'vm.overcommit_memory').
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) The CommitLimit is calculated with the following formula::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) CommitLimit = ([total RAM pages] - [total huge TLB pages]) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) overcommit_ratio / 100 + [total swap pages]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) For example, on a system with 1G of physical RAM and 7G
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) of swap with a `vm.overcommit_ratio` of 30 it would
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) yield a CommitLimit of 7.3G.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) For more details, see the memory overcommit documentation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) in vm/overcommit-accounting.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) Committed_AS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) The amount of memory presently allocated on the system.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) The committed memory is a sum of all of the memory which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) has been allocated by processes, even if it has not been
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) "used" by them as of yet. A process which malloc()'s 1G
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) of memory, but only touches 300M of it will show up as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) using 1G. This 1G is memory which has been "committed" to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) by the VM and can be used at any time by the allocating
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) application. With strict overcommit enabled on the system
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) (mode 2 in 'vm.overcommit_memory'), allocations which would
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) exceed the CommitLimit (detailed above) will not be permitted.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) This is useful if one needs to guarantee that processes will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) not fail due to lack of memory once that memory has been
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) successfully allocated.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) VmallocTotal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) total size of vmalloc memory area
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) VmallocUsed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) amount of vmalloc area which is used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) VmallocChunk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) largest contiguous block of vmalloc area which is free
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) Percpu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) Memory allocated to the percpu allocator used to back percpu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) allocations. This stat excludes the cost of metadata.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) vmallocinfo
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) ~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) Provides information about vmalloced/vmaped areas. One line per area,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) containing the virtual address range of the area, size in bytes,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) caller information of the creator, and optional information depending
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) on the kind of area:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) ========== ===================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) pages=nr number of pages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) phys=addr if a physical address was specified
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) ioremap I/O mapping (ioremap() and friends)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) vmalloc vmalloc() area
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) vmap vmap()ed pages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) user VM_USERMAP area
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) vpages buffer for pages pointers was vmalloced (huge area)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) N<node>=nr (Only on NUMA kernels)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) Number of pages allocated on memory node <node>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) ========== ===================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) > cat /proc/vmallocinfo
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) 0xffffc20000000000-0xffffc20000201000 2101248 alloc_large_system_hash+0x204 ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) /0x2c0 pages=512 vmalloc N0=128 N1=128 N2=128 N3=128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) 0xffffc20000201000-0xffffc20000302000 1052672 alloc_large_system_hash+0x204 ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) /0x2c0 pages=256 vmalloc N0=64 N1=64 N2=64 N3=64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) 0xffffc20000302000-0xffffc20000304000 8192 acpi_tb_verify_table+0x21/0x4f...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) phys=7fee8000 ioremap
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) 0xffffc20000304000-0xffffc20000307000 12288 acpi_tb_verify_table+0x21/0x4f...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) phys=7fee7000 ioremap
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) 0xffffc2000031d000-0xffffc2000031f000 8192 init_vdso_vars+0x112/0x210
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) 0xffffc2000031f000-0xffffc2000032b000 49152 cramfs_uncompress_init+0x2e ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) /0x80 pages=11 vmalloc N0=3 N1=3 N2=2 N3=3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) 0xffffc2000033a000-0xffffc2000033d000 12288 sys_swapon+0x640/0xac0 ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) pages=2 vmalloc N1=2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) 0xffffc20000347000-0xffffc2000034c000 20480 xt_alloc_table_info+0xfe ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) /0x130 [x_tables] pages=4 vmalloc N0=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) 0xffffffffa0000000-0xffffffffa000f000 61440 sys_init_module+0xc27/0x1d00 ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) pages=14 vmalloc N2=14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) 0xffffffffa000f000-0xffffffffa0014000 20480 sys_init_module+0xc27/0x1d00 ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) pages=4 vmalloc N1=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) 0xffffffffa0014000-0xffffffffa0017000 12288 sys_init_module+0xc27/0x1d00 ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) pages=2 vmalloc N1=2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) 0xffffffffa0017000-0xffffffffa0022000 45056 sys_init_module+0xc27/0x1d00 ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) pages=10 vmalloc N0=10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) softirqs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) ~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) Provides counts of softirq handlers serviced since boot time, for each CPU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) > cat /proc/softirqs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) CPU0 CPU1 CPU2 CPU3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) HI: 0 0 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) TIMER: 27166 27120 27097 27034
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) NET_TX: 0 0 0 17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) NET_RX: 42 0 0 39
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) BLOCK: 0 0 107 1121
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) TASKLET: 0 0 0 290
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) SCHED: 27035 26983 26971 26746
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) HRTIMER: 0 0 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) RCU: 1678 1769 2178 2250
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) 1.3 IDE devices in /proc/ide
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) ----------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) The subdirectory /proc/ide contains information about all IDE devices of which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) the kernel is aware. There is one subdirectory for each IDE controller, the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) file drivers and a link for each IDE device, pointing to the device directory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) in the controller specific subtree.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) The file 'drivers' contains general information about the drivers used for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) IDE devices::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) > cat /proc/ide/drivers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) ide-cdrom version 4.53
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) ide-disk version 1.08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) More detailed information can be found in the controller specific
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) subdirectories. These are named ide0, ide1 and so on. Each of these
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) directories contains the files shown in table 1-6.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) .. table:: Table 1-6: IDE controller info in /proc/ide/ide?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) ======= =======================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) File Content
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) ======= =======================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) channel IDE channel (0 or 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) config Configuration (only for PCI/IDE bridge)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) mate Mate name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) model Type/Chipset of IDE controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) ======= =======================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) Each device connected to a controller has a separate subdirectory in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203) controllers directory. The files listed in table 1-7 are contained in these
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) directories.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) .. table:: Table 1-7: IDE device information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209) ================ ==========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) File Content
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) ================ ==========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) cache The cache
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) capacity Capacity of the medium (in 512Byte blocks)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) driver driver and version
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) geometry physical and logical geometry
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) identify device identify block
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) media media type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) model device identifier
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) settings device setup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) smart_thresholds IDE disk management thresholds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) smart_values IDE disk management values
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) ================ ==========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) The most interesting file is ``settings``. This file contains a nice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) overview of the drive parameters::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) # cat /proc/ide/ide0/hda/settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) name value min max mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) ---- ----- --- --- ----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) bios_cyl 526 0 65535 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) bios_head 255 0 255 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) bios_sect 63 0 63 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) breada_readahead 4 0 127 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) bswap 0 0 1 r
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) file_readahead 72 0 2097151 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236) io_32bit 0 0 3 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) keepsettings 0 0 1 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) max_kb_per_request 122 1 127 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) multcount 0 0 8 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) nice1 1 0 1 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) nowerr 0 0 1 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) pio_mode write-only 0 255 w
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) slow 0 0 1 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) unmaskirq 0 0 1 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) using_dma 0 0 1 rw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) 1.4 Networking info in /proc/net
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) --------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) The subdirectory /proc/net follows the usual pattern. Table 1-8 shows the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) additional values you get for IP version 6 if you configure the kernel to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) support this. Table 1-9 lists the files and their meaning.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) .. table:: Table 1-8: IPv6 info in /proc/net
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) ========== =====================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) File Content
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) ========== =====================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) udp6 UDP sockets (IPv6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262) tcp6 TCP sockets (IPv6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) raw6 Raw device statistics (IPv6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) igmp6 IP multicast addresses, which this host joined (IPv6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) if_inet6 List of IPv6 interface addresses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) ipv6_route Kernel routing table for IPv6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) rt6_stats Global IPv6 routing tables statistics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) sockstat6 Socket statistics (IPv6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) snmp6 Snmp data (IPv6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) ========== =====================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) .. table:: Table 1-9: Network info in /proc/net
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) ============= ================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) File Content
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) ============= ================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) arp Kernel ARP table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) dev network devices with statistics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) dev_mcast the Layer2 multicast groups a device is listening too
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) (interface index, label, number of references, number of bound
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) addresses).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) dev_stat network device status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) ip_fwchains Firewall chain linkage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) ip_fwnames Firewall chain names
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) ip_masq Directory containing the masquerading tables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) ip_masquerade Major masquerading table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) netstat Network statistics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) raw raw device statistics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) route Kernel routing table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) rpc Directory containing rpc info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291) rt_cache Routing cache
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) snmp SNMP data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) sockstat Socket statistics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) tcp TCP sockets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) udp UDP sockets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) unix UNIX domain sockets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) wireless Wireless interface data (Wavelan etc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) igmp IP multicast addresses, which this host joined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299) psched Global packet scheduler parameters.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) netlink List of PF_NETLINK sockets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) ip_mr_vifs List of multicast virtual interfaces
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) ip_mr_cache List of multicast routing cache
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) ============= ================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) You can use this information to see which network devices are available in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) your system and how much traffic was routed over those devices::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308) > cat /proc/net/dev
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) Inter-|Receive |[...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) face |bytes packets errs drop fifo frame compressed multicast|[...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) lo: 908188 5596 0 0 0 0 0 0 [...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) ppp0:15475140 20721 410 0 0 410 0 0 [...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) eth0: 614530 7085 0 0 0 0 0 1 [...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) ...] Transmit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) ...] bytes packets errs drop fifo colls carrier compressed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) ...] 908188 5596 0 0 0 0 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) ...] 1375103 17405 0 0 0 0 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) ...] 1703981 5535 0 0 0 3 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) In addition, each Channel Bond interface has its own directory. For
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) example, the bond0 device will have a directory called /proc/net/bond0/.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) It will contain information that is specific to that bond, such as the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) current slaves of the bond, the link status of the slaves, and how
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) many times the slaves link has failed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) 1.5 SCSI info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) -------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) If you have a SCSI host adapter in your system, you'll find a subdirectory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) named after the driver for this adapter in /proc/scsi. You'll also see a list
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) of all recognized SCSI devices in /proc/scsi::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) >cat /proc/scsi/scsi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) Attached devices:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) Host: scsi0 Channel: 00 Id: 00 Lun: 00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) Vendor: IBM Model: DGHS09U Rev: 03E0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) Type: Direct-Access ANSI SCSI revision: 03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) Host: scsi0 Channel: 00 Id: 06 Lun: 00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) Vendor: PIONEER Model: CD-ROM DR-U06S Rev: 1.04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) Type: CD-ROM ANSI SCSI revision: 02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) The directory named after the driver has one file for each adapter found in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) the system. These files contain information about the controller, including
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) the used IRQ and the IO address range. The amount of information shown is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) dependent on the adapter you use. The example shows the output for an Adaptec
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) AHA-2940 SCSI adapter::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) > cat /proc/scsi/aic7xxx/0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352) Adaptec AIC7xxx driver version: 5.1.19/3.2.4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) Compile Options:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) TCQ Enabled By Default : Disabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) AIC7XXX_PROC_STATS : Disabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) AIC7XXX_RESET_DELAY : 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) Adapter Configuration:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358) SCSI Adapter: Adaptec AHA-294X Ultra SCSI host adapter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) Ultra Wide Controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) PCI MMAPed I/O Base: 0xeb001000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) Adapter SEEPROM Config: SEEPROM found and used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362) Adaptec SCSI BIOS: Enabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) IRQ: 10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) SCBs: Active 0, Max Active 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) Allocated 15, HW 16, Page 255
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) Interrupts: 160328
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) BIOS Control Word: 0x18b6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) Adapter Control Word: 0x005b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) Extended Translation: Enabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) Disconnect Enable Flags: 0xffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) Ultra Enable Flags: 0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) Tag Queue Enable Flags: 0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373) Ordered Queue Tag Flags: 0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) Default Tag Queue Depth: 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) Tagged Queue By Device array for aic7xxx host instance 0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) Actual queue depth per device for aic7xxx host instance 0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) Statistics:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) (scsi0:0:0:0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) Device using Wide/Sync transfers at 40.0 MByte/sec, offset 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) Transinfo settings: current(12/8/1/0), goal(12/8/1/0), user(12/15/1/0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) Total transfers 160151 (74577 reads and 85574 writes)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384) (scsi0:0:6:0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) Device using Narrow/Sync transfers at 5.0 MByte/sec, offset 15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386) Transinfo settings: current(50/15/0/0), goal(50/15/0/0), user(50/15/0/0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) Total transfers 0 (0 reads and 0 writes)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) 1.6 Parallel port info in /proc/parport
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) ---------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) The directory /proc/parport contains information about the parallel ports of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394) your system. It has one subdirectory for each port, named after the port
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) number (0,1,2,...).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397) These directories contain the four files shown in Table 1-10.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400) .. table:: Table 1-10: Files in /proc/parport
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402) ========= ====================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) File Content
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) ========= ====================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) autoprobe Any IEEE-1284 device ID information that has been acquired.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) devices list of the device drivers using that port. A + will appear by the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) name of the device currently using the port (it might not appear
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) against any).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) hardware Parallel port's base address, IRQ line and DMA channel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) irq IRQ that parport is using for that port. This is in a separate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) file to allow you to alter it by writing a new value in (IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412) number or none).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) ========= ====================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415) 1.7 TTY info in /proc/tty
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) -------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418) Information about the available and actually used tty's can be found in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419) directory /proc/tty. You'll find entries for drivers and line disciplines in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420) this directory, as shown in Table 1-11.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423) .. table:: Table 1-11: Files in /proc/tty
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) ============= ==============================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) File Content
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427) ============= ==============================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428) drivers list of drivers and their usage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429) ldiscs registered line disciplines
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430) driver/serial usage statistic and status of single tty lines
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) ============= ==============================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433) To see which tty's are currently in use, you can simply look into the file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) /proc/tty/drivers::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436) > cat /proc/tty/drivers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437) pty_slave /dev/pts 136 0-255 pty:slave
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) pty_master /dev/ptm 128 0-255 pty:master
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439) pty_slave /dev/ttyp 3 0-255 pty:slave
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) pty_master /dev/pty 2 0-255 pty:master
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441) serial /dev/cua 5 64-67 serial:callout
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442) serial /dev/ttyS 4 64-67 serial
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443) /dev/tty0 /dev/tty0 4 0 system:vtmaster
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1444) /dev/ptmx /dev/ptmx 5 2 system
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1445) /dev/console /dev/console 5 1 system:console
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1446) /dev/tty /dev/tty 5 0 system:/dev/tty
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1447) unknown /dev/tty 4 1-63 console
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1448)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1449)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1450) 1.8 Miscellaneous kernel statistics in /proc/stat
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1451) -------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1452)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1453) Various pieces of information about kernel activity are available in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1454) /proc/stat file. All of the numbers reported in this file are aggregates
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1455) since the system first booted. For a quick look, simply cat the file::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1456)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1457) > cat /proc/stat
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1458) cpu 2255 34 2290 22625563 6290 127 456 0 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1459) cpu0 1132 34 1441 11311718 3675 127 438 0 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1460) cpu1 1123 0 849 11313845 2614 0 18 0 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1461) intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1462) ctxt 1990473
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1463) btime 1062191376
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1464) processes 2915
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1465) procs_running 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1466) procs_blocked 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1467) softirq 183433 0 21755 12 39 1137 231 21459 2263
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1468)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1469) The very first "cpu" line aggregates the numbers in all of the other "cpuN"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1470) lines. These numbers identify the amount of time the CPU has spent performing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1471) different kinds of work. Time units are in USER_HZ (typically hundredths of a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1472) second). The meanings of the columns are as follows, from left to right:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1473)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1474) - user: normal processes executing in user mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1475) - nice: niced processes executing in user mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1476) - system: processes executing in kernel mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1477) - idle: twiddling thumbs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1478) - iowait: In a word, iowait stands for waiting for I/O to complete. But there
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1479) are several problems:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1480)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1481) 1. CPU will not wait for I/O to complete, iowait is the time that a task is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1482) waiting for I/O to complete. When CPU goes into idle state for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1483) outstanding task I/O, another task will be scheduled on this CPU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1484) 2. In a multi-core CPU, the task waiting for I/O to complete is not running
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1485) on any CPU, so the iowait of each CPU is difficult to calculate.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1486) 3. The value of iowait field in /proc/stat will decrease in certain
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1487) conditions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1488)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1489) So, the iowait is not reliable by reading from /proc/stat.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1490) - irq: servicing interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1491) - softirq: servicing softirqs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1492) - steal: involuntary wait
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1493) - guest: running a normal guest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1494) - guest_nice: running a niced guest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1495)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1496) The "intr" line gives counts of interrupts serviced since boot time, for each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1497) of the possible system interrupts. The first column is the total of all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1498) interrupts serviced including unnumbered architecture specific interrupts;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1499) each subsequent column is the total for that particular numbered interrupt.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1500) Unnumbered interrupts are not shown, only summed into the total.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1501)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1502) The "ctxt" line gives the total number of context switches across all CPUs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1503)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1504) The "btime" line gives the time at which the system booted, in seconds since
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1505) the Unix epoch.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1506)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1507) The "processes" line gives the number of processes and threads created, which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1508) includes (but is not limited to) those created by calls to the fork() and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1509) clone() system calls.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1510)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1511) The "procs_running" line gives the total number of threads that are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1512) running or ready to run (i.e., the total number of runnable threads).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1513)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1514) The "procs_blocked" line gives the number of processes currently blocked,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1515) waiting for I/O to complete.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1516)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1517) The "softirq" line gives counts of softirqs serviced since boot time, for each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1518) of the possible system softirqs. The first column is the total of all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1519) softirqs serviced; each subsequent column is the total for that particular
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1520) softirq.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1521)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1522)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1523) 1.9 Ext4 file system parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1524) -------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1525)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1526) Information about mounted ext4 file systems can be found in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1527) /proc/fs/ext4. Each mounted filesystem will have a directory in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1528) /proc/fs/ext4 based on its device name (i.e., /proc/fs/ext4/hdc or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1529) /proc/fs/ext4/dm-0). The files in each per-device directory are shown
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1530) in Table 1-12, below.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1531)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1532) .. table:: Table 1-12: Files in /proc/fs/ext4/<devname>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1533)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1534) ============== ==========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1535) File Content
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1536) mb_groups details of multiblock allocator buddy cache of free blocks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1537) ============== ==========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1538)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1539) 1.10 /proc/consoles
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1540) -------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1541) Shows registered system console lines.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1542)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1543) To see which character device lines are currently used for the system console
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1544) /dev/console, you may simply look into the file /proc/consoles::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1545)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1546) > cat /proc/consoles
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1547) tty0 -WU (ECp) 4:7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1548) ttyS0 -W- (Ep) 4:64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1549)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1550) The columns are:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1551)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1552) +--------------------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1553) | device | name of the device |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1554) +====================+=======================================================+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1555) | operations | * R = can do read operations |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1556) | | * W = can do write operations |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1557) | | * U = can do unblank |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1558) +--------------------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1559) | flags | * E = it is enabled |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1560) | | * C = it is preferred console |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1561) | | * B = it is primary boot console |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1562) | | * p = it is used for printk buffer |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1563) | | * b = it is not a TTY but a Braille device |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1564) | | * a = it is safe to use when cpu is offline |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1565) +--------------------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1566) | major:minor | major and minor number of the device separated by a |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1567) | | colon |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1568) +--------------------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1569)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1570) Summary
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1571) -------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1572)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1573) The /proc file system serves information about the running system. It not only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1574) allows access to process data but also allows you to request the kernel status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1575) by reading files in the hierarchy.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1576)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1577) The directory structure of /proc reflects the types of information and makes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1578) it easy, if not obvious, where to look for specific data.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1579)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1580) Chapter 2: Modifying System Parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1581) ======================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1582)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1583) In This Chapter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1584) ---------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1585)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1586) * Modifying kernel parameters by writing into files found in /proc/sys
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1587) * Exploring the files which modify certain parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1588) * Review of the /proc/sys file tree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1589)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1590) ------------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1591)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1592) A very interesting part of /proc is the directory /proc/sys. This is not only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1593) a source of information, it also allows you to change parameters within the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1594) kernel. Be very careful when attempting this. You can optimize your system,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1595) but you can also cause it to crash. Never alter kernel parameters on a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1596) production system. Set up a development machine and test to make sure that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1597) everything works the way you want it to. You may have no alternative but to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1598) reboot the machine once an error has been made.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1599)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1600) To change a value, simply echo the new value into the file.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1601) You need to be root to do this. You can create your own boot script
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1602) to perform this every time your system boots.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1603)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1604) The files in /proc/sys can be used to fine tune and monitor miscellaneous and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1605) general things in the operation of the Linux kernel. Since some of the files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1606) can inadvertently disrupt your system, it is advisable to read both
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1607) documentation and source before actually making adjustments. In any case, be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1608) very careful when writing to any of these files. The entries in /proc may
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1609) change slightly between the 2.1.* and the 2.2 kernel, so if there is any doubt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1610) review the kernel documentation in the directory /usr/src/linux/Documentation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1611) This chapter is heavily based on the documentation included in the pre 2.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1612) kernels, and became part of it in version 2.2.1 of the Linux kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1613)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1614) Please see: Documentation/admin-guide/sysctl/ directory for descriptions of these
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1615) entries.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1616)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1617) Summary
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1618) -------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1619)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1620) Certain aspects of kernel behavior can be modified at runtime, without the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1621) need to recompile the kernel, or even to reboot the system. The files in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1622) /proc/sys tree can not only be read, but also modified. You can use the echo
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1623) command to write value into these files, thereby changing the default settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1624) of the kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1625)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1626)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1627) Chapter 3: Per-process Parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1628) =================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1629)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1630) 3.1 /proc/<pid>/oom_adj & /proc/<pid>/oom_score_adj- Adjust the oom-killer score
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1631) --------------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1632)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1633) These files can be used to adjust the badness heuristic used to select which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1634) process gets killed in out of memory (oom) conditions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1635)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1636) The badness heuristic assigns a value to each candidate task ranging from 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1637) (never kill) to 1000 (always kill) to determine which process is targeted. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1638) units are roughly a proportion along that range of allowed memory the process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1639) may allocate from based on an estimation of its current memory and swap use.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1640) For example, if a task is using all allowed memory, its badness score will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1641) 1000. If it is using half of its allowed memory, its score will be 500.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1642)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1643) The amount of "allowed" memory depends on the context in which the oom killer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1644) was called. If it is due to the memory assigned to the allocating task's cpuset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1645) being exhausted, the allowed memory represents the set of mems assigned to that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1646) cpuset. If it is due to a mempolicy's node(s) being exhausted, the allowed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1647) memory represents the set of mempolicy nodes. If it is due to a memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1648) limit (or swap limit) being reached, the allowed memory is that configured
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1649) limit. Finally, if it is due to the entire system being out of memory, the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1650) allowed memory represents all allocatable resources.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1651)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1652) The value of /proc/<pid>/oom_score_adj is added to the badness score before it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1653) is used to determine which task to kill. Acceptable values range from -1000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1654) (OOM_SCORE_ADJ_MIN) to +1000 (OOM_SCORE_ADJ_MAX). This allows userspace to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1655) polarize the preference for oom killing either by always preferring a certain
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1656) task or completely disabling it. The lowest possible value, -1000, is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1657) equivalent to disabling oom killing entirely for that task since it will always
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1658) report a badness score of 0.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1659)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1660) Consequently, it is very simple for userspace to define the amount of memory to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1661) consider for each task. Setting a /proc/<pid>/oom_score_adj value of +500, for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1662) example, is roughly equivalent to allowing the remainder of tasks sharing the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1663) same system, cpuset, mempolicy, or memory controller resources to use at least
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1664) 50% more memory. A value of -500, on the other hand, would be roughly
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1665) equivalent to discounting 50% of the task's allowed memory from being considered
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1666) as scoring against the task.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1667)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1668) For backwards compatibility with previous kernels, /proc/<pid>/oom_adj may also
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1669) be used to tune the badness score. Its acceptable values range from -16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1670) (OOM_ADJUST_MIN) to +15 (OOM_ADJUST_MAX) and a special value of -17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1671) (OOM_DISABLE) to disable oom killing entirely for that task. Its value is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1672) scaled linearly with /proc/<pid>/oom_score_adj.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1673)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1674) The value of /proc/<pid>/oom_score_adj may be reduced no lower than the last
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1675) value set by a CAP_SYS_RESOURCE process. To reduce the value any lower
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1676) requires CAP_SYS_RESOURCE.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1677)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1678)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1679) 3.2 /proc/<pid>/oom_score - Display current oom-killer score
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1680) -------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1681)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1682) This file can be used to check the current score used by the oom-killer for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1683) any given <pid>. Use it together with /proc/<pid>/oom_score_adj to tune which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1684) process should be killed in an out-of-memory situation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1685)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1686) Please note that the exported value includes oom_score_adj so it is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1687) effectively in range [0,2000].
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1688)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1689)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1690) 3.3 /proc/<pid>/io - Display the IO accounting fields
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1691) -------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1692)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1693) This file contains IO statistics for each running process.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1694)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1695) Example
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1696) ~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1697)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1698) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1699)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1700) test:/tmp # dd if=/dev/zero of=/tmp/test.dat &
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1701) [1] 3828
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1702)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1703) test:/tmp # cat /proc/3828/io
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1704) rchar: 323934931
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1705) wchar: 323929600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1706) syscr: 632687
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1707) syscw: 632675
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1708) read_bytes: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1709) write_bytes: 323932160
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1710) cancelled_write_bytes: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1711)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1712)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1713) Description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1714) ~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1715)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1716) rchar
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1717) ^^^^^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1718)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1719) I/O counter: chars read
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1720) The number of bytes which this task has caused to be read from storage. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1721) is simply the sum of bytes which this process passed to read() and pread().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1722) It includes things like tty IO and it is unaffected by whether or not actual
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1723) physical disk IO was required (the read might have been satisfied from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1724) pagecache).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1725)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1726)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1727) wchar
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1728) ^^^^^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1729)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1730) I/O counter: chars written
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1731) The number of bytes which this task has caused, or shall cause to be written
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1732) to disk. Similar caveats apply here as with rchar.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1733)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1734)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1735) syscr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1736) ^^^^^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1737)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1738) I/O counter: read syscalls
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1739) Attempt to count the number of read I/O operations, i.e. syscalls like read()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1740) and pread().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1741)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1742)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1743) syscw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1744) ^^^^^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1745)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1746) I/O counter: write syscalls
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1747) Attempt to count the number of write I/O operations, i.e. syscalls like
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1748) write() and pwrite().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1749)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1750)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1751) read_bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1752) ^^^^^^^^^^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1753)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1754) I/O counter: bytes read
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1755) Attempt to count the number of bytes which this process really did cause to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1756) be fetched from the storage layer. Done at the submit_bio() level, so it is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1757) accurate for block-backed filesystems. <please add status regarding NFS and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1758) CIFS at a later time>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1759)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1760)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1761) write_bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1762) ^^^^^^^^^^^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1763)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1764) I/O counter: bytes written
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1765) Attempt to count the number of bytes which this process caused to be sent to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1766) the storage layer. This is done at page-dirtying time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1767)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1768)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1769) cancelled_write_bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1770) ^^^^^^^^^^^^^^^^^^^^^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1771)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1772) The big inaccuracy here is truncate. If a process writes 1MB to a file and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1773) then deletes the file, it will in fact perform no writeout. But it will have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1774) been accounted as having caused 1MB of write.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1775) In other words: The number of bytes which this process caused to not happen,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1776) by truncating pagecache. A task can cause "negative" IO too. If this task
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1777) truncates some dirty pagecache, some IO which another task has been accounted
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1778) for (in its write_bytes) will not be happening. We _could_ just subtract that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1779) from the truncating task's write_bytes, but there is information loss in doing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1780) that.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1781)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1782)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1783) .. Note::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1784)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1785) At its current implementation state, this is a bit racy on 32-bit machines:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1786) if process A reads process B's /proc/pid/io while process B is updating one
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1787) of those 64-bit counters, process A could see an intermediate result.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1788)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1789)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1790) More information about this can be found within the taskstats documentation in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1791) Documentation/accounting.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1792)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1793) 3.4 /proc/<pid>/coredump_filter - Core dump filtering settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1794) ---------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1795) When a process is dumped, all anonymous memory is written to a core file as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1796) long as the size of the core file isn't limited. But sometimes we don't want
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1797) to dump some memory segments, for example, huge shared memory or DAX.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1798) Conversely, sometimes we want to save file-backed memory segments into a core
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1799) file, not only the individual files.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1801) /proc/<pid>/coredump_filter allows you to customize which memory segments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1802) will be dumped when the <pid> process is dumped. coredump_filter is a bitmask
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1803) of memory types. If a bit of the bitmask is set, memory segments of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1804) corresponding memory type are dumped, otherwise they are not dumped.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1805)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1806) The following 9 memory types are supported:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1807)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1808) - (bit 0) anonymous private memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1809) - (bit 1) anonymous shared memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1810) - (bit 2) file-backed private memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1811) - (bit 3) file-backed shared memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1812) - (bit 4) ELF header pages in file-backed private memory areas (it is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1813) effective only if the bit 2 is cleared)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1814) - (bit 5) hugetlb private memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1815) - (bit 6) hugetlb shared memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1816) - (bit 7) DAX private memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1817) - (bit 8) DAX shared memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1818)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1819) Note that MMIO pages such as frame buffer are never dumped and vDSO pages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1820) are always dumped regardless of the bitmask status.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1821)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1822) Note that bits 0-4 don't affect hugetlb or DAX memory. hugetlb memory is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1823) only affected by bit 5-6, and DAX is only affected by bits 7-8.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1824)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1825) The default value of coredump_filter is 0x33; this means all anonymous memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1826) segments, ELF header pages and hugetlb private memory are dumped.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1827)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1828) If you don't want to dump all shared memory segments attached to pid 1234,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1829) write 0x31 to the process's proc file::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1830)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1831) $ echo 0x31 > /proc/1234/coredump_filter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1832)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1833) When a new process is created, the process inherits the bitmask status from its
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1834) parent. It is useful to set up coredump_filter before the program runs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1835) For example::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1836)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1837) $ echo 0x7 > /proc/self/coredump_filter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1838) $ ./some_program
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1839)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1840) 3.5 /proc/<pid>/mountinfo - Information about mounts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1841) --------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1842)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1843) This file contains lines of the form::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1844)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1845) 36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1846) (1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1847)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1848) (1) mount ID: unique identifier of the mount (may be reused after umount)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1849) (2) parent ID: ID of parent (or of self for the top of the mount tree)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1850) (3) major:minor: value of st_dev for files on filesystem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1851) (4) root: root of the mount within the filesystem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1852) (5) mount point: mount point relative to the process's root
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1853) (6) mount options: per mount options
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1854) (7) optional fields: zero or more fields of the form "tag[:value]"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1855) (8) separator: marks the end of the optional fields
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1856) (9) filesystem type: name of filesystem of the form "type[.subtype]"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1857) (10) mount source: filesystem specific information or "none"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1858) (11) super options: per super block options
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1859)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1860) Parsers should ignore all unrecognised optional fields. Currently the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1861) possible optional fields are:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1862)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1863) ================ ==============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1864) shared:X mount is shared in peer group X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1865) master:X mount is slave to peer group X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1866) propagate_from:X mount is slave and receives propagation from peer group X [#]_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1867) unbindable mount is unbindable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1868) ================ ==============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1869)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1870) .. [#] X is the closest dominant peer group under the process's root. If
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1871) X is the immediate master of the mount, or if there's no dominant peer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1872) group under the same root, then only the "master:X" field is present
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1873) and not the "propagate_from:X" field.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1874)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1875) For more information on mount propagation see:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1876)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1877) Documentation/filesystems/sharedsubtree.rst
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1878)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1879)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1880) 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1881) --------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1882) These files provide a method to access a task's comm value. It also allows for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1883) a task to set its own or one of its thread siblings comm value. The comm value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1884) is limited in size compared to the cmdline value, so writing anything longer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1885) then the kernel's TASK_COMM_LEN (currently 16 chars) will result in a truncated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1886) comm value.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1887)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1888)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1889) 3.7 /proc/<pid>/task/<tid>/children - Information about task children
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1890) -------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1891) This file provides a fast way to retrieve first level children pids
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1892) of a task pointed by <pid>/<tid> pair. The format is a space separated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1893) stream of pids.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1894)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1895) Note the "first level" here -- if a child has its own children they will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1896) not be listed here; one needs to read /proc/<children-pid>/task/<tid>/children
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1897) to obtain the descendants.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1898)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1899) Since this interface is intended to be fast and cheap it doesn't
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1900) guarantee to provide precise results and some children might be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1901) skipped, especially if they've exited right after we printed their
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1902) pids, so one needs to either stop or freeze processes being inspected
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1903) if precise results are needed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1904)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1905)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1906) 3.8 /proc/<pid>/fdinfo/<fd> - Information about opened file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1907) ---------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1908) This file provides information associated with an opened file. The regular
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1909) files have at least four fields -- 'pos', 'flags', 'mnt_id' and 'ino'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1910) The 'pos' represents the current offset of the opened file in decimal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1911) form [see lseek(2) for details], 'flags' denotes the octal O_xxx mask the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1912) file has been created with [see open(2) for details] and 'mnt_id' represents
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1913) mount ID of the file system containing the opened file [see 3.5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1914) /proc/<pid>/mountinfo for details]. 'ino' represents the inode number of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1915) the file.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1916)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1917) A typical output is::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1918)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1919) pos: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1920) flags: 0100002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1921) mnt_id: 19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1922) ino: 63107
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1923)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1924) All locks associated with a file descriptor are shown in its fdinfo too::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1925)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1926) lock: 1: FLOCK ADVISORY WRITE 359 00:13:11691 0 EOF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1927)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1928) The files such as eventfd, fsnotify, signalfd, epoll among the regular pos/flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1929) pair provide additional information particular to the objects they represent.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1930)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1931) Eventfd files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1932) ~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1933)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1934) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1935)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1936) pos: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1937) flags: 04002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1938) mnt_id: 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1939) ino: 63107
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1940) eventfd-count: 5a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1941)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1942) where 'eventfd-count' is hex value of a counter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1943)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1944) Signalfd files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1945) ~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1946)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1947) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1948)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1949) pos: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1950) flags: 04002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1951) mnt_id: 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1952) ino: 63107
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1953) sigmask: 0000000000000200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1954)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1955) where 'sigmask' is hex value of the signal mask associated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1956) with a file.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1957)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1958) Epoll files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1959) ~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1960)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1961) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1962)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1963) pos: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1964) flags: 02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1965) mnt_id: 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1966) ino: 63107
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1967) tfd: 5 events: 1d data: ffffffffffffffff pos:0 ino:61af sdev:7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1968)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1969) where 'tfd' is a target file descriptor number in decimal form,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1970) 'events' is events mask being watched and the 'data' is data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1971) associated with a target [see epoll(7) for more details].
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1972)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1973) The 'pos' is current offset of the target file in decimal form
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1974) [see lseek(2)], 'ino' and 'sdev' are inode and device numbers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1975) where target file resides, all in hex format.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1976)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1977) Fsnotify files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1978) ~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1979) For inotify files the format is the following::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1980)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1981) pos: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1982) flags: 02000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1983) mnt_id: 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1984) ino: 63107
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1985) inotify wd:3 ino:9e7e sdev:800013 mask:800afce ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:7e9e0000640d1b6d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1986)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1987) where 'wd' is a watch descriptor in decimal form, i.e. a target file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1988) descriptor number, 'ino' and 'sdev' are inode and device where the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1989) target file resides and the 'mask' is the mask of events, all in hex
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1990) form [see inotify(7) for more details].
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1991)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1992) If the kernel was built with exportfs support, the path to the target
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1993) file is encoded as a file handle. The file handle is provided by three
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1994) fields 'fhandle-bytes', 'fhandle-type' and 'f_handle', all in hex
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1995) format.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1996)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1997) If the kernel is built without exportfs support the file handle won't be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1998) printed out.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1999)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2000) If there is no inotify mark attached yet the 'inotify' line will be omitted.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2001)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2002) For fanotify files the format is::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2003)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2004) pos: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2005) flags: 02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2006) mnt_id: 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2007) ino: 63107
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2008) fanotify flags:10 event-flags:0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2009) fanotify mnt_id:12 mflags:40 mask:38 ignored_mask:40000003
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2010) fanotify ino:4f969 sdev:800013 mflags:0 mask:3b ignored_mask:40000000 fhandle-bytes:8 fhandle-type:1 f_handle:69f90400c275b5b4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2011)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2012) where fanotify 'flags' and 'event-flags' are values used in fanotify_init
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2013) call, 'mnt_id' is the mount point identifier, 'mflags' is the value of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2014) flags associated with mark which are tracked separately from events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2015) mask. 'ino' and 'sdev' are target inode and device, 'mask' is the events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2016) mask and 'ignored_mask' is the mask of events which are to be ignored.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2017) All are in hex format. Incorporation of 'mflags', 'mask' and 'ignored_mask'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2018) provide information about flags and mask used in fanotify_mark
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2019) call [see fsnotify manpage for details].
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2020)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2021) While the first three lines are mandatory and always printed, the rest is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2022) optional and may be omitted if no marks created yet.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2023)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2024) Timerfd files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2025) ~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2026)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2027) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2028)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2029) pos: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2030) flags: 02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2031) mnt_id: 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2032) ino: 63107
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2033) clockid: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2034) ticks: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2035) settime flags: 01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2036) it_value: (0, 49406829)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2037) it_interval: (1, 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2038)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2039) where 'clockid' is the clock type and 'ticks' is the number of the timer expirations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2040) that have occurred [see timerfd_create(2) for details]. 'settime flags' are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2041) flags in octal form been used to setup the timer [see timerfd_settime(2) for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2042) details]. 'it_value' is remaining time until the timer expiration.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2043) 'it_interval' is the interval for the timer. Note the timer might be set up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2044) with TIMER_ABSTIME option which will be shown in 'settime flags', but 'it_value'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2045) still exhibits timer's remaining time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2046)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2047) DMA Buffer files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2048) ~~~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2049)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2050) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2051)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2052) pos: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2053) flags: 04002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2054) mnt_id: 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2055) ino: 63107
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2056) size: 32768
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2057) count: 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2058) exp_name: system-heap
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2059)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2060) where 'size' is the size of the DMA buffer in bytes. 'count' is the file count of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2061) the DMA buffer file. 'exp_name' is the name of the DMA buffer exporter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2062)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2063) 3.9 /proc/<pid>/map_files - Information about memory mapped files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2064) ---------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2065) This directory contains symbolic links which represent memory mapped files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2066) the process is maintaining. Example output::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2067)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2068) | lr-------- 1 root root 64 Jan 27 11:24 333c600000-333c620000 -> /usr/lib64/ld-2.18.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2069) | lr-------- 1 root root 64 Jan 27 11:24 333c81f000-333c820000 -> /usr/lib64/ld-2.18.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2070) | lr-------- 1 root root 64 Jan 27 11:24 333c820000-333c821000 -> /usr/lib64/ld-2.18.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2071) | ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2072) | lr-------- 1 root root 64 Jan 27 11:24 35d0421000-35d0422000 -> /usr/lib64/libselinux.so.1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2073) | lr-------- 1 root root 64 Jan 27 11:24 400000-41a000 -> /usr/bin/ls
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2074)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2075) The name of a link represents the virtual memory bounds of a mapping, i.e.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2076) vm_area_struct::vm_start-vm_area_struct::vm_end.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2077)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2078) The main purpose of the map_files is to retrieve a set of memory mapped
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2079) files in a fast way instead of parsing /proc/<pid>/maps or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2080) /proc/<pid>/smaps, both of which contain many more records. At the same
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2081) time one can open(2) mappings from the listings of two processes and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2082) comparing their inode numbers to figure out which anonymous memory areas
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2083) are actually shared.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2084)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2085) 3.10 /proc/<pid>/timerslack_ns - Task timerslack value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2086) ---------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2087) This file provides the value of the task's timerslack value in nanoseconds.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2088) This value specifies an amount of time that normal timers may be deferred
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2089) in order to coalesce timers and avoid unnecessary wakeups.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2090)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2091) This allows a task's interactivity vs power consumption tradeoff to be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2092) adjusted.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2093)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2094) Writing 0 to the file will set the task's timerslack to the default value.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2095)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2096) Valid values are from 0 - ULLONG_MAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2097)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2098) An application setting the value must have PTRACE_MODE_ATTACH_FSCREDS level
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2099) permissions on the task specified to change its timerslack_ns value.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2101) 3.11 /proc/<pid>/patch_state - Livepatch patch operation state
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2102) -----------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2103) When CONFIG_LIVEPATCH is enabled, this file displays the value of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2104) patch state for the task.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2106) A value of '-1' indicates that no patch is in transition.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2108) A value of '0' indicates that a patch is in transition and the task is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2109) unpatched. If the patch is being enabled, then the task hasn't been
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2110) patched yet. If the patch is being disabled, then the task has already
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2111) been unpatched.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2113) A value of '1' indicates that a patch is in transition and the task is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2114) patched. If the patch is being enabled, then the task has already been
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2115) patched. If the patch is being disabled, then the task hasn't been
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2116) unpatched yet.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2118) 3.12 /proc/<pid>/arch_status - task architecture specific status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2119) -------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2120) When CONFIG_PROC_PID_ARCH_STATUS is enabled, this file displays the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2121) architecture specific status of the task.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2123) Example
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2124) ~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2126) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2128) $ cat /proc/6753/arch_status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2129) AVX512_elapsed_ms: 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2131) Description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2132) ~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2134) x86 specific entries
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2135) ~~~~~~~~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2137) AVX512_elapsed_ms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2138) ^^^^^^^^^^^^^^^^^^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2140) If AVX512 is supported on the machine, this entry shows the milliseconds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2141) elapsed since the last time AVX512 usage was recorded. The recording
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2142) happens on a best effort basis when a task is scheduled out. This means
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2143) that the value depends on two factors:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2145) 1) The time which the task spent on the CPU without being scheduled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2146) out. With CPU isolation and a single runnable task this can take
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2147) several seconds.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2148)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2149) 2) The time since the task was scheduled out last. Depending on the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2150) reason for being scheduled out (time slice exhausted, syscall ...)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2151) this can be arbitrary long time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2153) As a consequence the value cannot be considered precise and authoritative
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2154) information. The application which uses this information has to be aware
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2155) of the overall scenario on the system in order to determine whether a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2156) task is a real AVX512 user or not. Precise information can be obtained
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2157) with performance counters.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2158)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2159) A special value of '-1' indicates that no AVX512 usage was recorded, thus
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2160) the task is unlikely an AVX512 user, but depends on the workload and the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2161) scheduling scenario, it also could be a false negative mentioned above.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2162)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2163) Chapter 4: Configuring procfs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2164) =============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2166) 4.1 Mount options
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2167) ---------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2168)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2169) The following mount options are supported:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2170)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2171) ========= ========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2172) hidepid= Set /proc/<pid>/ access mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2173) gid= Set the group authorized to learn processes information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2174) subset= Show only the specified subset of procfs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2175) ========= ========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2176)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2177) hidepid=off or hidepid=0 means classic mode - everybody may access all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2178) /proc/<pid>/ directories (default).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2179)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2180) hidepid=noaccess or hidepid=1 means users may not access any /proc/<pid>/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2181) directories but their own. Sensitive files like cmdline, sched*, status are now
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2182) protected against other users. This makes it impossible to learn whether any
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2183) user runs specific program (given the program doesn't reveal itself by its
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2184) behaviour). As an additional bonus, as /proc/<pid>/cmdline is unaccessible for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2185) other users, poorly written programs passing sensitive information via program
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2186) arguments are now protected against local eavesdroppers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2187)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2188) hidepid=invisible or hidepid=2 means hidepid=1 plus all /proc/<pid>/ will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2189) fully invisible to other users. It doesn't mean that it hides a fact whether a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2190) process with a specific pid value exists (it can be learned by other means, e.g.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2191) by "kill -0 $PID"), but it hides process' uid and gid, which may be learned by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2192) stat()'ing /proc/<pid>/ otherwise. It greatly complicates an intruder's task of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2193) gathering information about running processes, whether some daemon runs with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2194) elevated privileges, whether other user runs some sensitive program, whether
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2195) other users run any program at all, etc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2196)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2197) hidepid=ptraceable or hidepid=4 means that procfs should only contain
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2198) /proc/<pid>/ directories that the caller can ptrace.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2200) gid= defines a group authorized to learn processes information otherwise
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2201) prohibited by hidepid=. If you use some daemon like identd which needs to learn
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2202) information about processes information, just add identd to this group.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2203)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2204) subset=pid hides all top level files and directories in the procfs that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2205) are not related to tasks.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2206)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2207) Chapter 5: Filesystem behavior
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2208) ==============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2209)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2210) Originally, before the advent of pid namepsace, procfs was a global file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2211) system. It means that there was only one procfs instance in the system.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2212)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2213) When pid namespace was added, a separate procfs instance was mounted in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2214) each pid namespace. So, procfs mount options are global among all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2215) mountpoints within the same namespace::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2216)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2217) # grep ^proc /proc/mounts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2218) proc /proc proc rw,relatime,hidepid=2 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2219)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2220) # strace -e mount mount -o hidepid=1 -t proc proc /tmp/proc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2221) mount("proc", "/tmp/proc", "proc", 0, "hidepid=1") = 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2222) +++ exited with 0 +++
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2223)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2224) # grep ^proc /proc/mounts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2225) proc /proc proc rw,relatime,hidepid=2 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2226) proc /tmp/proc proc rw,relatime,hidepid=2 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2227)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2228) and only after remounting procfs mount options will change at all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2229) mountpoints::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2230)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2231) # mount -o remount,hidepid=1 -t proc proc /tmp/proc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2232)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2233) # grep ^proc /proc/mounts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2234) proc /proc proc rw,relatime,hidepid=1 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2235) proc /tmp/proc proc rw,relatime,hidepid=1 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2236)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2237) This behavior is different from the behavior of other filesystems.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2238)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2239) The new procfs behavior is more like other filesystems. Each procfs mount
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2240) creates a new procfs instance. Mount options affect own procfs instance.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2241) It means that it became possible to have several procfs instances
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2242) displaying tasks with different filtering options in one pid namespace::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2243)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2244) # mount -o hidepid=invisible -t proc proc /proc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2245) # mount -o hidepid=noaccess -t proc proc /tmp/proc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2246) # grep ^proc /proc/mounts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2247) proc /proc proc rw,relatime,hidepid=invisible 0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2248) proc /tmp/proc proc rw,relatime,hidepid=noaccess 0 0