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