Based on kernel version 2.6.30. Page generated on 2009-06-11 10:12 EST.
1 ------------------------------------------------------------------------------ 2 T H E /proc F I L E S Y S T E M 3 ------------------------------------------------------------------------------ 4 /proc/sys Terrehon Bowden <terrehon[AT]pacbell[DOT]net> October 7 1999 5 Bodo Bauer <bb[AT]ricochet[DOT]net> 6 7 2.4.x update Jorge Nerin <comandante[AT]zaralinux[DOT]com> November 14 2000 8 move /proc/sys Shen Feng <shen[AT]cn.fujitsu[DOT]com> April 1 2009 9 ------------------------------------------------------------------------------ 10 Version 1.3 Kernel version 2.2.12 11 Kernel version 2.4.0-test11-pre4 12 ------------------------------------------------------------------------------ 13 14 Table of Contents 15 ----------------- 16 17 0 Preface 18 0.1 Introduction/Credits 19 0.2 Legal Stuff 20 21 1 Collecting System Information 22 1.1 Process-Specific Subdirectories 23 1.2 Kernel data 24 1.3 IDE devices in /proc/ide 25 1.4 Networking info in /proc/net 26 1.5 SCSI info 27 1.6 Parallel port info in /proc/parport 28 1.7 TTY info in /proc/tty 29 1.8 Miscellaneous kernel statistics in /proc/stat 30 1.9 Ext4 file system parameters 31 32 2 Modifying System Parameters 33 34 3 Per-Process Parameters 35 3.1 /proc/<pid>/oom_adj - Adjust the oom-killer score 36 3.2 /proc/<pid>/oom_score - Display current oom-killer score 37 3.3 /proc/<pid>/io - Display the IO accounting fields 38 3.4 /proc/<pid>/coredump_filter - Core dump filtering settings 39 3.5 /proc/<pid>/mountinfo - Information about mounts 40 41 42 ------------------------------------------------------------------------------ 43 Preface 44 ------------------------------------------------------------------------------ 45 46 0.1 Introduction/Credits 47 ------------------------ 48 49 This documentation is part of a soon (or so we hope) to be released book on 50 the SuSE Linux distribution. As there is no complete documentation for the 51 /proc file system and we've used many freely available sources to write these 52 chapters, it seems only fair to give the work back to the Linux community. 53 This work is based on the 2.2.* kernel version and the upcoming 2.4.*. I'm 54 afraid it's still far from complete, but we hope it will be useful. As far as 55 we know, it is the first 'all-in-one' document about the /proc file system. It 56 is focused on the Intel x86 hardware, so if you are looking for PPC, ARM, 57 SPARC, AXP, etc., features, you probably won't find what you are looking for. 58 It also only covers IPv4 networking, not IPv6 nor other protocols - sorry. But 59 additions and patches are welcome and will be added to this document if you 60 mail them to Bodo. 61 62 We'd like to thank Alan Cox, Rik van Riel, and Alexey Kuznetsov and a lot of 63 other people for help compiling this documentation. We'd also like to extend a 64 special thank you to Andi Kleen for documentation, which we relied on heavily 65 to create this document, as well as the additional information he provided. 66 Thanks to everybody else who contributed source or docs to the Linux kernel 67 and helped create a great piece of software... :) 68 69 If you have any comments, corrections or additions, please don't hesitate to 70 contact Bodo Bauer at bb[AT]ricochet.net[DOT] We'll be happy to add them to this 71 document. 72 73 The latest version of this document is available online at 74 http://skaro.nightcrawler.com/~bb/Docs/Proc as HTML version. 75 76 If the above direction does not works for you, ypu could try the kernel 77 mailing list at linux-kernel[AT]vger.kernel[DOT]org and/or try to reach me at 78 comandante[AT]zaralinux.com[DOT] 79 80 0.2 Legal Stuff 81 --------------- 82 83 We don't guarantee the correctness of this document, and if you come to us 84 complaining about how you screwed up your system because of incorrect 85 documentation, we won't feel responsible... 86 87 ------------------------------------------------------------------------------ 88 CHAPTER 1: COLLECTING SYSTEM INFORMATION 89 ------------------------------------------------------------------------------ 90 91 ------------------------------------------------------------------------------ 92 In This Chapter 93 ------------------------------------------------------------------------------ 94 * Investigating the properties of the pseudo file system /proc and its 95 ability to provide information on the running Linux system 96 * Examining /proc's structure 97 * Uncovering various information about the kernel and the processes running 98 on the system 99 ------------------------------------------------------------------------------ 100 101 102 The proc file system acts as an interface to internal data structures in the 103 kernel. It can be used to obtain information about the system and to change 104 certain kernel parameters at runtime (sysctl). 105 106 First, we'll take a look at the read-only parts of /proc. In Chapter 2, we 107 show you how you can use /proc/sys to change settings. 108 109 1.1 Process-Specific Subdirectories 110 ----------------------------------- 111 112 The directory /proc contains (among other things) one subdirectory for each 113 process running on the system, which is named after the process ID (PID). 114 115 The link self points to the process reading the file system. Each process 116 subdirectory has the entries listed in Table 1-1. 117 118 119 Table 1-1: Process specific entries in /proc 120 .............................................................................. 121 File Content 122 clear_refs Clears page referenced bits shown in smaps output 123 cmdline Command line arguments 124 cpu Current and last cpu in which it was executed (2.4)(smp) 125 cwd Link to the current working directory 126 environ Values of environment variables 127 exe Link to the executable of this process 128 fd Directory, which contains all file descriptors 129 maps Memory maps to executables and library files (2.4) 130 mem Memory held by this process 131 root Link to the root directory of this process 132 stat Process status 133 statm Process memory status information 134 status Process status in human readable form 135 wchan If CONFIG_KALLSYMS is set, a pre-decoded wchan 136 stack Report full stack trace, enable via CONFIG_STACKTRACE 137 smaps Extension based on maps, the rss size for each mapped file 138 .............................................................................. 139 140 For example, to get the status information of a process, all you have to do is 141 read the file /proc/PID/status: 142 143 >cat /proc/self/status 144 Name: cat 145 State: R (running) 146 Pid: 5452 147 PPid: 743 148 TracerPid: 0 (2.4) 149 Uid: 501 501 501 501 150 Gid: 100 100 100 100 151 Groups: 100 14 16 152 VmSize: 1112 kB 153 VmLck: 0 kB 154 VmRSS: 348 kB 155 VmData: 24 kB 156 VmStk: 12 kB 157 VmExe: 8 kB 158 VmLib: 1044 kB 159 SigPnd: 0000000000000000 160 SigBlk: 0000000000000000 161 SigIgn: 0000000000000000 162 SigCgt: 0000000000000000 163 CapInh: 00000000fffffeff 164 CapPrm: 0000000000000000 165 CapEff: 0000000000000000 166 167 168 This shows you nearly the same information you would get if you viewed it with 169 the ps command. In fact, ps uses the proc file system to obtain its 170 information. The statm file contains more detailed information about the 171 process memory usage. Its seven fields are explained in Table 1-2. The stat 172 file contains details information about the process itself. Its fields are 173 explained in Table 1-3. 174 175 176 Table 1-2: Contents of the statm files (as of 2.6.8-rc3) 177 .............................................................................. 178 Field Content 179 size total program size (pages) (same as VmSize in status) 180 resident size of memory portions (pages) (same as VmRSS in status) 181 shared number of pages that are shared (i.e. backed by a file) 182 trs number of pages that are 'code' (not including libs; broken, 183 includes data segment) 184 lrs number of pages of library (always 0 on 2.6) 185 drs number of pages of data/stack (including libs; broken, 186 includes library text) 187 dt number of dirty pages (always 0 on 2.6) 188 .............................................................................. 189 190 191 Table 1-3: Contents of the stat files (as of 2.6.22-rc3) 192 .............................................................................. 193 Field Content 194 pid process id 195 tcomm filename of the executable 196 state state (R is running, S is sleeping, D is sleeping in an 197 uninterruptible wait, Z is zombie, T is traced or stopped) 198 ppid process id of the parent process 199 pgrp pgrp of the process 200 sid session id 201 tty_nr tty the process uses 202 tty_pgrp pgrp of the tty 203 flags task flags 204 min_flt number of minor faults 205 cmin_flt number of minor faults with child's 206 maj_flt number of major faults 207 cmaj_flt number of major faults with child's 208 utime user mode jiffies 209 stime kernel mode jiffies 210 cutime user mode jiffies with child's 211 cstime kernel mode jiffies with child's 212 priority priority level 213 nice nice level 214 num_threads number of threads 215 it_real_value (obsolete, always 0) 216 start_time time the process started after system boot 217 vsize virtual memory size 218 rss resident set memory size 219 rsslim current limit in bytes on the rss 220 start_code address above which program text can run 221 end_code address below which program text can run 222 start_stack address of the start of the stack 223 esp current value of ESP 224 eip current value of EIP 225 pending bitmap of pending signals (obsolete) 226 blocked bitmap of blocked signals (obsolete) 227 sigign bitmap of ignored signals (obsolete) 228 sigcatch bitmap of catched signals (obsolete) 229 wchan address where process went to sleep 230 0 (place holder) 231 0 (place holder) 232 exit_signal signal to send to parent thread on exit 233 task_cpu which CPU the task is scheduled on 234 rt_priority realtime priority 235 policy scheduling policy (man sched_setscheduler) 236 blkio_ticks time spent waiting for block IO 237 .............................................................................. 238 239 240 1.2 Kernel data 241 --------------- 242 243 Similar to the process entries, the kernel data files give information about 244 the running kernel. The files used to obtain this information are contained in 245 /proc and are listed in Table 1-4. Not all of these will be present in your 246 system. It depends on the kernel configuration and the loaded modules, which 247 files are there, and which are missing. 248 249 Table 1-4: Kernel info in /proc 250 .............................................................................. 251 File Content 252 apm Advanced power management info 253 buddyinfo Kernel memory allocator information (see text) (2.5) 254 bus Directory containing bus specific information 255 cmdline Kernel command line 256 cpuinfo Info about the CPU 257 devices Available devices (block and character) 258 dma Used DMS channels 259 filesystems Supported filesystems 260 driver Various drivers grouped here, currently rtc (2.4) 261 execdomains Execdomains, related to security (2.4) 262 fb Frame Buffer devices (2.4) 263 fs File system parameters, currently nfs/exports (2.4) 264 ide Directory containing info about the IDE subsystem 265 interrupts Interrupt usage 266 iomem Memory map (2.4) 267 ioports I/O port usage 268 irq Masks for irq to cpu affinity (2.4)(smp?) 269 isapnp ISA PnP (Plug&Play) Info (2.4) 270 kcore Kernel core image (can be ELF or A.OUT(deprecated in 2.4)) 271 kmsg Kernel messages 272 ksyms Kernel symbol table 273 loadavg Load average of last 1, 5 & 15 minutes 274 locks Kernel locks 275 meminfo Memory info 276 misc Miscellaneous 277 modules List of loaded modules 278 mounts Mounted filesystems 279 net Networking info (see text) 280 partitions Table of partitions known to the system 281 pci Deprecated info of PCI bus (new way -> /proc/bus/pci/, 282 decoupled by lspci (2.4) 283 rtc Real time clock 284 scsi SCSI info (see text) 285 slabinfo Slab pool info 286 stat Overall statistics 287 swaps Swap space utilization 288 sys See chapter 2 289 sysvipc Info of SysVIPC Resources (msg, sem, shm) (2.4) 290 tty Info of tty drivers 291 uptime System uptime 292 version Kernel version 293 video bttv info of video resources (2.4) 294 vmallocinfo Show vmalloced areas 295 .............................................................................. 296 297 You can, for example, check which interrupts are currently in use and what 298 they are used for by looking in the file /proc/interrupts: 299 300 > cat /proc/interrupts 301 CPU0 302 0: 8728810 XT-PIC timer 303 1: 895 XT-PIC keyboard 304 2: 0 XT-PIC cascade 305 3: 531695 XT-PIC aha152x 306 4: 2014133 XT-PIC serial 307 5: 44401 XT-PIC pcnet_cs 308 8: 2 XT-PIC rtc 309 11: 8 XT-PIC i82365 310 12: 182918 XT-PIC PS/2 Mouse 311 13: 1 XT-PIC fpu 312 14: 1232265 XT-PIC ide0 313 15: 7 XT-PIC ide1 314 NMI: 0 315 316 In 2.4.* a couple of lines where added to this file LOC & ERR (this time is the 317 output of a SMP machine): 318 319 > cat /proc/interrupts 320 321 CPU0 CPU1 322 0: 1243498 1214548 IO-APIC-edge timer 323 1: 8949 8958 IO-APIC-edge keyboard 324 2: 0 0 XT-PIC cascade 325 5: 11286 10161 IO-APIC-edge soundblaster 326 8: 1 0 IO-APIC-edge rtc 327 9: 27422 27407 IO-APIC-edge 3c503 328 12: 113645 113873 IO-APIC-edge PS/2 Mouse 329 13: 0 0 XT-PIC fpu 330 14: 22491 24012 IO-APIC-edge ide0 331 15: 2183 2415 IO-APIC-edge ide1 332 17: 30564 30414 IO-APIC-level eth0 333 18: 177 164 IO-APIC-level bttv 334 NMI: 2457961 2457959 335 LOC: 2457882 2457881 336 ERR: 2155 337 338 NMI is incremented in this case because every timer interrupt generates a NMI 339 (Non Maskable Interrupt) which is used by the NMI Watchdog to detect lockups. 340 341 LOC is the local interrupt counter of the internal APIC of every CPU. 342 343 ERR is incremented in the case of errors in the IO-APIC bus (the bus that 344 connects the CPUs in a SMP system. This means that an error has been detected, 345 the IO-APIC automatically retry the transmission, so it should not be a big 346 problem, but you should read the SMP-FAQ. 347 348 In 2.6.2* /proc/interrupts was expanded again. This time the goal was for 349 /proc/interrupts to display every IRQ vector in use by the system, not 350 just those considered 'most important'. The new vectors are: 351 352 THR -- interrupt raised when a machine check threshold counter 353 (typically counting ECC corrected errors of memory or cache) exceeds 354 a configurable threshold. Only available on some systems. 355 356 TRM -- a thermal event interrupt occurs when a temperature threshold 357 has been exceeded for the CPU. This interrupt may also be generated 358 when the temperature drops back to normal. 359 360 SPU -- a spurious interrupt is some interrupt that was raised then lowered 361 by some IO device before it could be fully processed by the APIC. Hence 362 the APIC sees the interrupt but does not know what device it came from. 363 For this case the APIC will generate the interrupt with a IRQ vector 364 of 0xff. This might also be generated by chipset bugs. 365 366 RES, CAL, TLB -- rescheduling, call and TLB flush interrupts are 367 sent from one CPU to another per the needs of the OS. Typically, 368 their statistics are used by kernel developers and interested users to 369 determine the occurance of interrupt of the given type. 370 371 The above IRQ vectors are displayed only when relevent. For example, 372 the threshold vector does not exist on x86_64 platforms. Others are 373 suppressed when the system is a uniprocessor. As of this writing, only 374 i386 and x86_64 platforms support the new IRQ vector displays. 375 376 Of some interest is the introduction of the /proc/irq directory to 2.4. 377 It could be used to set IRQ to CPU affinity, this means that you can "hook" an 378 IRQ to only one CPU, or to exclude a CPU of handling IRQs. The contents of the 379 irq subdir is one subdir for each IRQ, and two files; default_smp_affinity and 380 prof_cpu_mask. 381 382 For example 383 > ls /proc/irq/ 384 0 10 12 14 16 18 2 4 6 8 prof_cpu_mask 385 1 11 13 15 17 19 3 5 7 9 default_smp_affinity 386 > ls /proc/irq/0/ 387 smp_affinity 388 389 smp_affinity is a bitmask, in which you can specify which CPUs can handle the 390 IRQ, you can set it by doing: 391 392 > echo 1 > /proc/irq/10/smp_affinity 393 394 This means that only the first CPU will handle the IRQ, but you can also echo 395 5 which means that only the first and fourth CPU can handle the IRQ. 396 397 The contents of each smp_affinity file is the same by default: 398 399 > cat /proc/irq/0/smp_affinity 400 ffffffff 401 402 The default_smp_affinity mask applies to all non-active IRQs, which are the 403 IRQs which have not yet been allocated/activated, and hence which lack a 404 /proc/irq/[0-9]* directory. 405 406 prof_cpu_mask specifies which CPUs are to be profiled by the system wide 407 profiler. Default value is ffffffff (all cpus). 408 409 The way IRQs are routed is handled by the IO-APIC, and it's Round Robin 410 between all the CPUs which are allowed to handle it. As usual the kernel has 411 more info than you and does a better job than you, so the defaults are the 412 best choice for almost everyone. 413 414 There are three more important subdirectories in /proc: net, scsi, and sys. 415 The general rule is that the contents, or even the existence of these 416 directories, depend on your kernel configuration. If SCSI is not enabled, the 417 directory scsi may not exist. The same is true with the net, which is there 418 only when networking support is present in the running kernel. 419 420 The slabinfo file gives information about memory usage at the slab level. 421 Linux uses slab pools for memory management above page level in version 2.2. 422 Commonly used objects have their own slab pool (such as network buffers, 423 directory cache, and so on). 424 425 .............................................................................. 426 427 > cat /proc/buddyinfo 428 429 Node 0, zone DMA 0 4 5 4 4 3 ... 430 Node 0, zone Normal 1 0 0 1 101 8 ... 431 Node 0, zone HighMem 2 0 0 1 1 0 ... 432 433 Memory fragmentation is a problem under some workloads, and buddyinfo is a 434 useful tool for helping diagnose these problems. Buddyinfo will give you a 435 clue as to how big an area you can safely allocate, or why a previous 436 allocation failed. 437 438 Each column represents the number of pages of a certain order which are 439 available. In this case, there are 0 chunks of 2^0*PAGE_SIZE available in 440 ZONE_DMA, 4 chunks of 2^1*PAGE_SIZE in ZONE_DMA, 101 chunks of 2^4*PAGE_SIZE 441 available in ZONE_NORMAL, etc... 442 443 .............................................................................. 444 445 meminfo: 446 447 Provides information about distribution and utilization of memory. This 448 varies by architecture and compile options. The following is from a 449 16GB PIII, which has highmem enabled. You may not have all of these fields. 450 451 > cat /proc/meminfo 452 453 454 MemTotal: 16344972 kB 455 MemFree: 13634064 kB 456 Buffers: 3656 kB 457 Cached: 1195708 kB 458 SwapCached: 0 kB 459 Active: 891636 kB 460 Inactive: 1077224 kB 461 HighTotal: 15597528 kB 462 HighFree: 13629632 kB 463 LowTotal: 747444 kB 464 LowFree: 4432 kB 465 SwapTotal: 0 kB 466 SwapFree: 0 kB 467 Dirty: 968 kB 468 Writeback: 0 kB 469 AnonPages: 861800 kB 470 Mapped: 280372 kB 471 Slab: 284364 kB 472 SReclaimable: 159856 kB 473 SUnreclaim: 124508 kB 474 PageTables: 24448 kB 475 NFS_Unstable: 0 kB 476 Bounce: 0 kB 477 WritebackTmp: 0 kB 478 CommitLimit: 7669796 kB 479 Committed_AS: 100056 kB 480 VmallocTotal: 112216 kB 481 VmallocUsed: 428 kB 482 VmallocChunk: 111088 kB 483 484 MemTotal: Total usable ram (i.e. physical ram minus a few reserved 485 bits and the kernel binary code) 486 MemFree: The sum of LowFree+HighFree 487 Buffers: Relatively temporary storage for raw disk blocks 488 shouldn't get tremendously large (20MB or so) 489 Cached: in-memory cache for files read from the disk (the 490 pagecache). Doesn't include SwapCached 491 SwapCached: Memory that once was swapped out, is swapped back in but 492 still also is in the swapfile (if memory is needed it 493 doesn't need to be swapped out AGAIN because it is already 494 in the swapfile. This saves I/O) 495 Active: Memory that has been used more recently and usually not 496 reclaimed unless absolutely necessary. 497 Inactive: Memory which has been less recently used. It is more 498 eligible to be reclaimed for other purposes 499 HighTotal: 500 HighFree: Highmem is all memory above ~860MB of physical memory 501 Highmem areas are for use by userspace programs, or 502 for the pagecache. The kernel must use tricks to access 503 this memory, making it slower to access than lowmem. 504 LowTotal: 505 LowFree: Lowmem is memory which can be used for everything that 506 highmem can be used for, but it is also available for the 507 kernel's use for its own data structures. Among many 508 other things, it is where everything from the Slab is 509 allocated. Bad things happen when you're out of lowmem. 510 SwapTotal: total amount of swap space available 511 SwapFree: Memory which has been evicted from RAM, and is temporarily 512 on the disk 513 Dirty: Memory which is waiting to get written back to the disk 514 Writeback: Memory which is actively being written back to the disk 515 AnonPages: Non-file backed pages mapped into userspace page tables 516 Mapped: files which have been mmaped, such as libraries 517 Slab: in-kernel data structures cache 518 SReclaimable: Part of Slab, that might be reclaimed, such as caches 519 SUnreclaim: Part of Slab, that cannot be reclaimed on memory pressure 520 PageTables: amount of memory dedicated to the lowest level of page 521 tables. 522 NFS_Unstable: NFS pages sent to the server, but not yet committed to stable 523 storage 524 Bounce: Memory used for block device "bounce buffers" 525 WritebackTmp: Memory used by FUSE for temporary writeback buffers 526 CommitLimit: Based on the overcommit ratio ('vm.overcommit_ratio'), 527 this is the total amount of memory currently available to 528 be allocated on the system. This limit is only adhered to 529 if strict overcommit accounting is enabled (mode 2 in 530 'vm.overcommit_memory'). 531 The CommitLimit is calculated with the following formula: 532 CommitLimit = ('vm.overcommit_ratio' * Physical RAM) + Swap 533 For example, on a system with 1G of physical RAM and 7G 534 of swap with a `vm.overcommit_ratio` of 30 it would 535 yield a CommitLimit of 7.3G. 536 For more details, see the memory overcommit documentation 537 in vm/overcommit-accounting. 538 Committed_AS: The amount of memory presently allocated on the system. 539 The committed memory is a sum of all of the memory which 540 has been allocated by processes, even if it has not been 541 "used" by them as of yet. A process which malloc()'s 1G 542 of memory, but only touches 300M of it will only show up 543 as using 300M of memory even if it has the address space 544 allocated for the entire 1G. This 1G is memory which has 545 been "committed" to by the VM and can be used at any time 546 by the allocating application. With strict overcommit 547 enabled on the system (mode 2 in 'vm.overcommit_memory'), 548 allocations which would exceed the CommitLimit (detailed 549 above) will not be permitted. This is useful if one needs 550 to guarantee that processes will not fail due to lack of 551 memory once that memory has been successfully allocated. 552 VmallocTotal: total size of vmalloc memory area 553 VmallocUsed: amount of vmalloc area which is used 554 VmallocChunk: largest contigious block of vmalloc area which is free 555 556 .............................................................................. 557 558 vmallocinfo: 559 560 Provides information about vmalloced/vmaped areas. One line per area, 561 containing the virtual address range of the area, size in bytes, 562 caller information of the creator, and optional information depending 563 on the kind of area : 564 565 pages=nr number of pages 566 phys=addr if a physical address was specified 567 ioremap I/O mapping (ioremap() and friends) 568 vmalloc vmalloc() area 569 vmap vmap()ed pages 570 user VM_USERMAP area 571 vpages buffer for pages pointers was vmalloced (huge area) 572 N<node>=nr (Only on NUMA kernels) 573 Number of pages allocated on memory node <node> 574 575 > cat /proc/vmallocinfo 576 0xffffc20000000000-0xffffc20000201000 2101248 alloc_large_system_hash+0x204 ... 577 /0x2c0 pages=512 vmalloc N0=128 N1=128 N2=128 N3=128 578 0xffffc20000201000-0xffffc20000302000 1052672 alloc_large_system_hash+0x204 ... 579 /0x2c0 pages=256 vmalloc N0=64 N1=64 N2=64 N3=64 580 0xffffc20000302000-0xffffc20000304000 8192 acpi_tb_verify_table+0x21/0x4f... 581 phys=7fee8000 ioremap 582 0xffffc20000304000-0xffffc20000307000 12288 acpi_tb_verify_table+0x21/0x4f... 583 phys=7fee7000 ioremap 584 0xffffc2000031d000-0xffffc2000031f000 8192 init_vdso_vars+0x112/0x210 585 0xffffc2000031f000-0xffffc2000032b000 49152 cramfs_uncompress_init+0x2e ... 586 /0x80 pages=11 vmalloc N0=3 N1=3 N2=2 N3=3 587 0xffffc2000033a000-0xffffc2000033d000 12288 sys_swapon+0x640/0xac0 ... 588 pages=2 vmalloc N1=2 589 0xffffc20000347000-0xffffc2000034c000 20480 xt_alloc_table_info+0xfe ... 590 /0x130 [x_tables] pages=4 vmalloc N0=4 591 0xffffffffa0000000-0xffffffffa000f000 61440 sys_init_module+0xc27/0x1d00 ... 592 pages=14 vmalloc N2=14 593 0xffffffffa000f000-0xffffffffa0014000 20480 sys_init_module+0xc27/0x1d00 ... 594 pages=4 vmalloc N1=4 595 0xffffffffa0014000-0xffffffffa0017000 12288 sys_init_module+0xc27/0x1d00 ... 596 pages=2 vmalloc N1=2 597 0xffffffffa0017000-0xffffffffa0022000 45056 sys_init_module+0xc27/0x1d00 ... 598 pages=10 vmalloc N0=10 599 600 1.3 IDE devices in /proc/ide 601 ---------------------------- 602 603 The subdirectory /proc/ide contains information about all IDE devices of which 604 the kernel is aware. There is one subdirectory for each IDE controller, the 605 file drivers and a link for each IDE device, pointing to the device directory 606 in the controller specific subtree. 607 608 The file drivers contains general information about the drivers used for the 609 IDE devices: 610 611 > cat /proc/ide/drivers 612 ide-cdrom version 4.53 613 ide-disk version 1.08 614 615 More detailed information can be found in the controller specific 616 subdirectories. These are named ide0, ide1 and so on. Each of these 617 directories contains the files shown in table 1-5. 618 619 620 Table 1-5: IDE controller info in /proc/ide/ide? 621 .............................................................................. 622 File Content 623 channel IDE channel (0 or 1) 624 config Configuration (only for PCI/IDE bridge) 625 mate Mate name 626 model Type/Chipset of IDE controller 627 .............................................................................. 628 629 Each device connected to a controller has a separate subdirectory in the 630 controllers directory. The files listed in table 1-6 are contained in these 631 directories. 632 633 634 Table 1-6: IDE device information 635 .............................................................................. 636 File Content 637 cache The cache 638 capacity Capacity of the medium (in 512Byte blocks) 639 driver driver and version 640 geometry physical and logical geometry 641 identify device identify block 642 media media type 643 model device identifier 644 settings device setup 645 smart_thresholds IDE disk management thresholds 646 smart_values IDE disk management values 647 .............................................................................. 648 649 The most interesting file is settings. This file contains a nice overview of 650 the drive parameters: 651 652 # cat /proc/ide/ide0/hda/settings 653 name value min max mode 654 ---- ----- --- --- ---- 655 bios_cyl 526 0 65535 rw 656 bios_head 255 0 255 rw 657 bios_sect 63 0 63 rw 658 breada_readahead 4 0 127 rw 659 bswap 0 0 1 r 660 file_readahead 72 0 2097151 rw 661 io_32bit 0 0 3 rw 662 keepsettings 0 0 1 rw 663 max_kb_per_request 122 1 127 rw 664 multcount 0 0 8 rw 665 nice1 1 0 1 rw 666 nowerr 0 0 1 rw 667 pio_mode write-only 0 255 w 668 slow 0 0 1 rw 669 unmaskirq 0 0 1 rw 670 using_dma 0 0 1 rw 671 672 673 1.4 Networking info in /proc/net 674 -------------------------------- 675 676 The subdirectory /proc/net follows the usual pattern. Table 1-6 shows the 677 additional values you get for IP version 6 if you configure the kernel to 678 support this. Table 1-7 lists the files and their meaning. 679 680 681 Table 1-6: IPv6 info in /proc/net 682 .............................................................................. 683 File Content 684 udp6 UDP sockets (IPv6) 685 tcp6 TCP sockets (IPv6) 686 raw6 Raw device statistics (IPv6) 687 igmp6 IP multicast addresses, which this host joined (IPv6) 688 if_inet6 List of IPv6 interface addresses 689 ipv6_route Kernel routing table for IPv6 690 rt6_stats Global IPv6 routing tables statistics 691 sockstat6 Socket statistics (IPv6) 692 snmp6 Snmp data (IPv6) 693 .............................................................................. 694 695 696 Table 1-7: Network info in /proc/net 697 .............................................................................. 698 File Content 699 arp Kernel ARP table 700 dev network devices with statistics 701 dev_mcast the Layer2 multicast groups a device is listening too 702 (interface index, label, number of references, number of bound 703 addresses). 704 dev_stat network device status 705 ip_fwchains Firewall chain linkage 706 ip_fwnames Firewall chain names 707 ip_masq Directory containing the masquerading tables 708 ip_masquerade Major masquerading table 709 netstat Network statistics 710 raw raw device statistics 711 route Kernel routing table 712 rpc Directory containing rpc info 713 rt_cache Routing cache 714 snmp SNMP data 715 sockstat Socket statistics 716 tcp TCP sockets 717 tr_rif Token ring RIF routing table 718 udp UDP sockets 719 unix UNIX domain sockets 720 wireless Wireless interface data (Wavelan etc) 721 igmp IP multicast addresses, which this host joined 722 psched Global packet scheduler parameters. 723 netlink List of PF_NETLINK sockets 724 ip_mr_vifs List of multicast virtual interfaces 725 ip_mr_cache List of multicast routing cache 726 .............................................................................. 727 728 You can use this information to see which network devices are available in 729 your system and how much traffic was routed over those devices: 730 731 > cat /proc/net/dev 732 Inter-|Receive |[... 733 face |bytes packets errs drop fifo frame compressed multicast|[... 734 lo: 908188 5596 0 0 0 0 0 0 [... 735 ppp0:15475140 20721 410 0 0 410 0 0 [... 736 eth0: 614530 7085 0 0 0 0 0 1 [... 737 738 ...] Transmit 739 ...] bytes packets errs drop fifo colls carrier compressed 740 ...] 908188 5596 0 0 0 0 0 0 741 ...] 1375103 17405 0 0 0 0 0 0 742 ...] 1703981 5535 0 0 0 3 0 0 743 744 In addition, each Channel Bond interface has it's own directory. For 745 example, the bond0 device will have a directory called /proc/net/bond0/. 746 It will contain information that is specific to that bond, such as the 747 current slaves of the bond, the link status of the slaves, and how 748 many times the slaves link has failed. 749 750 1.5 SCSI info 751 ------------- 752 753 If you have a SCSI host adapter in your system, you'll find a subdirectory 754 named after the driver for this adapter in /proc/scsi. You'll also see a list 755 of all recognized SCSI devices in /proc/scsi: 756 757 >cat /proc/scsi/scsi 758 Attached devices: 759 Host: scsi0 Channel: 00 Id: 00 Lun: 00 760 Vendor: IBM Model: DGHS09U Rev: 03E0 761 Type: Direct-Access ANSI SCSI revision: 03 762 Host: scsi0 Channel: 00 Id: 06 Lun: 00 763 Vendor: PIONEER Model: CD-ROM DR-U06S Rev: 1.04 764 Type: CD-ROM ANSI SCSI revision: 02 765 766 767 The directory named after the driver has one file for each adapter found in 768 the system. These files contain information about the controller, including 769 the used IRQ and the IO address range. The amount of information shown is 770 dependent on the adapter you use. The example shows the output for an Adaptec 771 AHA-2940 SCSI adapter: 772 773 > cat /proc/scsi/aic7xxx/0 774 775 Adaptec AIC7xxx driver version: 5.1.19/3.2.4 776 Compile Options: 777 TCQ Enabled By Default : Disabled 778 AIC7XXX_PROC_STATS : Disabled 779 AIC7XXX_RESET_DELAY : 5 780 Adapter Configuration: 781 SCSI Adapter: Adaptec AHA-294X Ultra SCSI host adapter 782 Ultra Wide Controller 783 PCI MMAPed I/O Base: 0xeb001000 784 Adapter SEEPROM Config: SEEPROM found and used. 785 Adaptec SCSI BIOS: Enabled 786 IRQ: 10 787 SCBs: Active 0, Max Active 2, 788 Allocated 15, HW 16, Page 255 789 Interrupts: 160328 790 BIOS Control Word: 0x18b6 791 Adapter Control Word: 0x005b 792 Extended Translation: Enabled 793 Disconnect Enable Flags: 0xffff 794 Ultra Enable Flags: 0x0001 795 Tag Queue Enable Flags: 0x0000 796 Ordered Queue Tag Flags: 0x0000 797 Default Tag Queue Depth: 8 798 Tagged Queue By Device array for aic7xxx host instance 0: 799 {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255} 800 Actual queue depth per device for aic7xxx host instance 0: 801 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} 802 Statistics: 803 (scsi0:0:0:0) 804 Device using Wide/Sync transfers at 40.0 MByte/sec, offset 8 805 Transinfo settings: current(12/8/1/0), goal(12/8/1/0), user(12/15/1/0) 806 Total transfers 160151 (74577 reads and 85574 writes) 807 (scsi0:0:6:0) 808 Device using Narrow/Sync transfers at 5.0 MByte/sec, offset 15 809 Transinfo settings: current(50/15/0/0), goal(50/15/0/0), user(50/15/0/0) 810 Total transfers 0 (0 reads and 0 writes) 811 812 813 1.6 Parallel port info in /proc/parport 814 --------------------------------------- 815 816 The directory /proc/parport contains information about the parallel ports of 817 your system. It has one subdirectory for each port, named after the port 818 number (0,1,2,...). 819 820 These directories contain the four files shown in Table 1-8. 821 822 823 Table 1-8: Files in /proc/parport 824 .............................................................................. 825 File Content 826 autoprobe Any IEEE-1284 device ID information that has been acquired. 827 devices list of the device drivers using that port. A + will appear by the 828 name of the device currently using the port (it might not appear 829 against any). 830 hardware Parallel port's base address, IRQ line and DMA channel. 831 irq IRQ that parport is using for that port. This is in a separate 832 file to allow you to alter it by writing a new value in (IRQ 833 number or none). 834 .............................................................................. 835 836 1.7 TTY info in /proc/tty 837 ------------------------- 838 839 Information about the available and actually used tty's can be found in the 840 directory /proc/tty.You'll find entries for drivers and line disciplines in 841 this directory, as shown in Table 1-9. 842 843 844 Table 1-9: Files in /proc/tty 845 .............................................................................. 846 File Content 847 drivers list of drivers and their usage 848 ldiscs registered line disciplines 849 driver/serial usage statistic and status of single tty lines 850 .............................................................................. 851 852 To see which tty's are currently in use, you can simply look into the file 853 /proc/tty/drivers: 854 855 > cat /proc/tty/drivers 856 pty_slave /dev/pts 136 0-255 pty:slave 857 pty_master /dev/ptm 128 0-255 pty:master 858 pty_slave /dev/ttyp 3 0-255 pty:slave 859 pty_master /dev/pty 2 0-255 pty:master 860 serial /dev/cua 5 64-67 serial:callout 861 serial /dev/ttyS 4 64-67 serial 862 /dev/tty0 /dev/tty0 4 0 system:vtmaster 863 /dev/ptmx /dev/ptmx 5 2 system 864 /dev/console /dev/console 5 1 system:console 865 /dev/tty /dev/tty 5 0 system:/dev/tty 866 unknown /dev/tty 4 1-63 console 867 868 869 1.8 Miscellaneous kernel statistics in /proc/stat 870 ------------------------------------------------- 871 872 Various pieces of information about kernel activity are available in the 873 /proc/stat file. All of the numbers reported in this file are aggregates 874 since the system first booted. For a quick look, simply cat the file: 875 876 > cat /proc/stat 877 cpu 2255 34 2290 22625563 6290 127 456 0 878 cpu0 1132 34 1441 11311718 3675 127 438 0 879 cpu1 1123 0 849 11313845 2614 0 18 0 880 intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...] 881 ctxt 1990473 882 btime 1062191376 883 processes 2915 884 procs_running 1 885 procs_blocked 0 886 887 The very first "cpu" line aggregates the numbers in all of the other "cpuN" 888 lines. These numbers identify the amount of time the CPU has spent performing 889 different kinds of work. Time units are in USER_HZ (typically hundredths of a 890 second). The meanings of the columns are as follows, from left to right: 891 892 - user: normal processes executing in user mode 893 - nice: niced processes executing in user mode 894 - system: processes executing in kernel mode 895 - idle: twiddling thumbs 896 - iowait: waiting for I/O to complete 897 - irq: servicing interrupts 898 - softirq: servicing softirqs 899 - steal: involuntary wait 900 901 The "intr" line gives counts of interrupts serviced since boot time, for each 902 of the possible system interrupts. The first column is the total of all 903 interrupts serviced; each subsequent column is the total for that particular 904 interrupt. 905 906 The "ctxt" line gives the total number of context switches across all CPUs. 907 908 The "btime" line gives the time at which the system booted, in seconds since 909 the Unix epoch. 910 911 The "processes" line gives the number of processes and threads created, which 912 includes (but is not limited to) those created by calls to the fork() and 913 clone() system calls. 914 915 The "procs_running" line gives the number of processes currently running on 916 CPUs. 917 918 The "procs_blocked" line gives the number of processes currently blocked, 919 waiting for I/O to complete. 920 921 922 1.9 Ext4 file system parameters 923 ------------------------------ 924 925 Information about mounted ext4 file systems can be found in 926 /proc/fs/ext4. Each mounted filesystem will have a directory in 927 /proc/fs/ext4 based on its device name (i.e., /proc/fs/ext4/hdc or 928 /proc/fs/ext4/dm-0). The files in each per-device directory are shown 929 in Table 1-10, below. 930 931 Table 1-10: Files in /proc/fs/ext4/<devname> 932 .............................................................................. 933 File Content 934 mb_groups details of multiblock allocator buddy cache of free blocks 935 mb_history multiblock allocation history 936 .............................................................................. 937 938 939 ------------------------------------------------------------------------------ 940 Summary 941 ------------------------------------------------------------------------------ 942 The /proc file system serves information about the running system. It not only 943 allows access to process data but also allows you to request the kernel status 944 by reading files in the hierarchy. 945 946 The directory structure of /proc reflects the types of information and makes 947 it easy, if not obvious, where to look for specific data. 948 ------------------------------------------------------------------------------ 949 950 ------------------------------------------------------------------------------ 951 CHAPTER 2: MODIFYING SYSTEM PARAMETERS 952 ------------------------------------------------------------------------------ 953 954 ------------------------------------------------------------------------------ 955 In This Chapter 956 ------------------------------------------------------------------------------ 957 * Modifying kernel parameters by writing into files found in /proc/sys 958 * Exploring the files which modify certain parameters 959 * Review of the /proc/sys file tree 960 ------------------------------------------------------------------------------ 961 962 963 A very interesting part of /proc is the directory /proc/sys. This is not only 964 a source of information, it also allows you to change parameters within the 965 kernel. Be very careful when attempting this. You can optimize your system, 966 but you can also cause it to crash. Never alter kernel parameters on a 967 production system. Set up a development machine and test to make sure that 968 everything works the way you want it to. You may have no alternative but to 969 reboot the machine once an error has been made. 970 971 To change a value, simply echo the new value into the file. An example is 972 given below in the section on the file system data. You need to be root to do 973 this. You can create your own boot script to perform this every time your 974 system boots. 975 976 The files in /proc/sys can be used to fine tune and monitor miscellaneous and 977 general things in the operation of the Linux kernel. Since some of the files 978 can inadvertently disrupt your system, it is advisable to read both 979 documentation and source before actually making adjustments. In any case, be 980 very careful when writing to any of these files. The entries in /proc may 981 change slightly between the 2.1.* and the 2.2 kernel, so if there is any doubt 982 review the kernel documentation in the directory /usr/src/linux/Documentation. 983 This chapter is heavily based on the documentation included in the pre 2.2 984 kernels, and became part of it in version 2.2.1 of the Linux kernel. 985 986 Please see: Documentation/sysctls/ directory for descriptions of these 987 entries. 988 989 ------------------------------------------------------------------------------ 990 Summary 991 ------------------------------------------------------------------------------ 992 Certain aspects of kernel behavior can be modified at runtime, without the 993 need to recompile the kernel, or even to reboot the system. The files in the 994 /proc/sys tree can not only be read, but also modified. You can use the echo 995 command to write value into these files, thereby changing the default settings 996 of the kernel. 997 ------------------------------------------------------------------------------ 998 999 ------------------------------------------------------------------------------ 1000 CHAPTER 3: PER-PROCESS PARAMETERS 1001 ------------------------------------------------------------------------------ 1002 1003 3.1 /proc/<pid>/oom_adj - Adjust the oom-killer score 1004 ------------------------------------------------------ 1005 1006 This file can be used to adjust the score used to select which processes 1007 should be killed in an out-of-memory situation. Giving it a high score will 1008 increase the likelihood of this process being killed by the oom-killer. Valid 1009 values are in the range -16 to +15, plus the special value -17, which disables 1010 oom-killing altogether for this process. 1011 1012 The process to be killed in an out-of-memory situation is selected among all others 1013 based on its badness score. This value equals the original memory size of the process 1014 and is then updated according to its CPU time (utime + stime) and the 1015 run time (uptime - start time). The longer it runs the smaller is the score. 1016 Badness score is divided by the square root of the CPU time and then by 1017 the double square root of the run time. 1018 1019 Swapped out tasks are killed first. Half of each child's memory size is added to 1020 the parent's score if they do not share the same memory. Thus forking servers 1021 are the prime candidates to be killed. Having only one 'hungry' child will make 1022 parent less preferable than the child. 1023 1024 /proc/<pid>/oom_score shows process' current badness score. 1025 1026 The following heuristics are then applied: 1027 * if the task was reniced, its score doubles 1028 * superuser or direct hardware access tasks (CAP_SYS_ADMIN, CAP_SYS_RESOURCE 1029 or CAP_SYS_RAWIO) have their score divided by 4 1030 * if oom condition happened in one cpuset and checked task does not belong 1031 to it, its score is divided by 8 1032 * the resulting score is multiplied by two to the power of oom_adj, i.e. 1033 points <<= oom_adj when it is positive and 1034 points >>= -(oom_adj) otherwise 1035 1036 The task with the highest badness score is then selected and its children 1037 are killed, process itself will be killed in an OOM situation when it does 1038 not have children or some of them disabled oom like described above. 1039 1040 3.2 /proc/<pid>/oom_score - Display current oom-killer score 1041 ------------------------------------------------------------- 1042 1043 This file can be used to check the current score used by the oom-killer is for 1044 any given <pid>. Use it together with /proc/<pid>/oom_adj to tune which 1045 process should be killed in an out-of-memory situation. 1046 1047 1048 3.3 /proc/<pid>/io - Display the IO accounting fields 1049 ------------------------------------------------------- 1050 1051 This file contains IO statistics for each running process 1052 1053 Example 1054 ------- 1055 1056 test:/tmp # dd if=/dev/zero of=/tmp/test.dat & 1057 [1] 3828 1058 1059 test:/tmp # cat /proc/3828/io 1060 rchar: 323934931 1061 wchar: 323929600 1062 syscr: 632687 1063 syscw: 632675 1064 read_bytes: 0 1065 write_bytes: 323932160 1066 cancelled_write_bytes: 0 1067 1068 1069 Description 1070 ----------- 1071 1072 rchar 1073 ----- 1074 1075 I/O counter: chars read 1076 The number of bytes which this task has caused to be read from storage. This 1077 is simply the sum of bytes which this process passed to read() and pread(). 1078 It includes things like tty IO and it is unaffected by whether or not actual 1079 physical disk IO was required (the read might have been satisfied from 1080 pagecache) 1081 1082 1083 wchar 1084 ----- 1085 1086 I/O counter: chars written 1087 The number of bytes which this task has caused, or shall cause to be written 1088 to disk. Similar caveats apply here as with rchar. 1089 1090 1091 syscr 1092 ----- 1093 1094 I/O counter: read syscalls 1095 Attempt to count the number of read I/O operations, i.e. syscalls like read() 1096 and pread(). 1097 1098 1099 syscw 1100 ----- 1101 1102 I/O counter: write syscalls 1103 Attempt to count the number of write I/O operations, i.e. syscalls like 1104 write() and pwrite(). 1105 1106 1107 read_bytes 1108 ---------- 1109 1110 I/O counter: bytes read 1111 Attempt to count the number of bytes which this process really did cause to 1112 be fetched from the storage layer. Done at the submit_bio() level, so it is 1113 accurate for block-backed filesystems. <please add status regarding NFS and 1114 CIFS at a later time> 1115 1116 1117 write_bytes 1118 ----------- 1119 1120 I/O counter: bytes written 1121 Attempt to count the number of bytes which this process caused to be sent to 1122 the storage layer. This is done at page-dirtying time. 1123 1124 1125 cancelled_write_bytes 1126 --------------------- 1127 1128 The big inaccuracy here is truncate. If a process writes 1MB to a file and 1129 then deletes the file, it will in fact perform no writeout. But it will have 1130 been accounted as having caused 1MB of write. 1131 In other words: The number of bytes which this process caused to not happen, 1132 by truncating pagecache. A task can cause "negative" IO too. If this task 1133 truncates some dirty pagecache, some IO which another task has been accounted 1134 for (in it's write_bytes) will not be happening. We _could_ just subtract that 1135 from the truncating task's write_bytes, but there is information loss in doing 1136 that. 1137 1138 1139 Note 1140 ---- 1141 1142 At its current implementation state, this is a bit racy on 32-bit machines: if 1143 process A reads process B's /proc/pid/io while process B is updating one of 1144 those 64-bit counters, process A could see an intermediate result. 1145 1146 1147 More information about this can be found within the taskstats documentation in 1148 Documentation/accounting. 1149 1150 3.4 /proc/<pid>/coredump_filter - Core dump filtering settings 1151 --------------------------------------------------------------- 1152 When a process is dumped, all anonymous memory is written to a core file as 1153 long as the size of the core file isn't limited. But sometimes we don't want 1154 to dump some memory segments, for example, huge shared memory. Conversely, 1155 sometimes we want to save file-backed memory segments into a core file, not 1156 only the individual files. 1157 1158 /proc/<pid>/coredump_filter allows you to customize which memory segments 1159 will be dumped when the <pid> process is dumped. coredump_filter is a bitmask 1160 of memory types. If a bit of the bitmask is set, memory segments of the 1161 corresponding memory type are dumped, otherwise they are not dumped. 1162 1163 The following 7 memory types are supported: 1164 - (bit 0) anonymous private memory 1165 - (bit 1) anonymous shared memory 1166 - (bit 2) file-backed private memory 1167 - (bit 3) file-backed shared memory 1168 - (bit 4) ELF header pages in file-backed private memory areas (it is 1169 effective only if the bit 2 is cleared) 1170 - (bit 5) hugetlb private memory 1171 - (bit 6) hugetlb shared memory 1172 1173 Note that MMIO pages such as frame buffer are never dumped and vDSO pages 1174 are always dumped regardless of the bitmask status. 1175 1176 Note bit 0-4 doesn't effect any hugetlb memory. hugetlb memory are only 1177 effected by bit 5-6. 1178 1179 Default value of coredump_filter is 0x23; this means all anonymous memory 1180 segments and hugetlb private memory are dumped. 1181 1182 If you don't want to dump all shared memory segments attached to pid 1234, 1183 write 0x21 to the process's proc file. 1184 1185 $ echo 0x21 > /proc/1234/coredump_filter 1186 1187 When a new process is created, the process inherits the bitmask status from its 1188 parent. It is useful to set up coredump_filter before the program runs. 1189 For example: 1190 1191 $ echo 0x7 > /proc/self/coredump_filter 1192 $ ./some_program 1193 1194 3.5 /proc/<pid>/mountinfo - Information about mounts 1195 -------------------------------------------------------- 1196 1197 This file contains lines of the form: 1198 1199 36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue 1200 (1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11) 1201 1202 (1) mount ID: unique identifier of the mount (may be reused after umount) 1203 (2) parent ID: ID of parent (or of self for the top of the mount tree) 1204 (3) major:minor: value of st_dev for files on filesystem 1205 (4) root: root of the mount within the filesystem 1206 (5) mount point: mount point relative to the process's root 1207 (6) mount options: per mount options 1208 (7) optional fields: zero or more fields of the form "tag[:value]" 1209 (8) separator: marks the end of the optional fields 1210 (9) filesystem type: name of filesystem of the form "type[.subtype]" 1211 (10) mount source: filesystem specific information or "none" 1212 (11) super options: per super block options 1213 1214 Parsers should ignore all unrecognised optional fields. Currently the 1215 possible optional fields are: 1216 1217 shared:X mount is shared in peer group X 1218 master:X mount is slave to peer group X 1219 propagate_from:X mount is slave and receives propagation from peer group X (*) 1220 unbindable mount is unbindable 1221 1222 (*) X is the closest dominant peer group under the process's root. If 1223 X is the immediate master of the mount, or if there's no dominant peer 1224 group under the same root, then only the "master:X" field is present 1225 and not the "propagate_from:X" field. 1226 1227 For more information on mount propagation see: 1228 1229 Documentation/filesystems/sharedsubtree.txt