fb7d649437af82b72aa6b47620174543ac9d0d2e
[safe/jmp/linux-2.6] / Documentation / filesystems / proc.txt
1 ------------------------------------------------------------------------------
2                        T H E  /proc   F I L E S Y S T E M
3 ------------------------------------------------------------------------------
4 /proc/sys         Terrehon Bowden <terrehon@pacbell.net>        October 7 1999
5                   Bodo Bauer <bb@ricochet.net>
6
7 2.4.x update      Jorge Nerin <comandante@zaralinux.com>      November 14 2000
8 move /proc/sys    Shen Feng <shen@cn.fujitsu.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@ricochet.net.  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@vger.kernel.org  and/or try  to  reach  me  at
78 comandante@zaralinux.com.
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  softirqs    softirq usage
287  stat        Overall statistics                                
288  swaps       Swap space utilization                            
289  sys         See chapter 2                                     
290  sysvipc     Info of SysVIPC Resources (msg, sem, shm)          (2.4)
291  tty         Info of tty drivers
292  uptime      System uptime                                     
293  version     Kernel version                                    
294  video       bttv info of video resources                       (2.4)
295  vmallocinfo Show vmalloced areas
296 ..............................................................................
297
298 You can,  for  example,  check  which interrupts are currently in use and what
299 they are used for by looking in the file /proc/interrupts:
300
301   > cat /proc/interrupts 
302              CPU0        
303     0:    8728810          XT-PIC  timer 
304     1:        895          XT-PIC  keyboard 
305     2:          0          XT-PIC  cascade 
306     3:     531695          XT-PIC  aha152x 
307     4:    2014133          XT-PIC  serial 
308     5:      44401          XT-PIC  pcnet_cs 
309     8:          2          XT-PIC  rtc 
310    11:          8          XT-PIC  i82365 
311    12:     182918          XT-PIC  PS/2 Mouse 
312    13:          1          XT-PIC  fpu 
313    14:    1232265          XT-PIC  ide0 
314    15:          7          XT-PIC  ide1 
315   NMI:          0 
316
317 In 2.4.* a couple of lines where added to this file LOC & ERR (this time is the
318 output of a SMP machine):
319
320   > cat /proc/interrupts 
321
322              CPU0       CPU1       
323     0:    1243498    1214548    IO-APIC-edge  timer
324     1:       8949       8958    IO-APIC-edge  keyboard
325     2:          0          0          XT-PIC  cascade
326     5:      11286      10161    IO-APIC-edge  soundblaster
327     8:          1          0    IO-APIC-edge  rtc
328     9:      27422      27407    IO-APIC-edge  3c503
329    12:     113645     113873    IO-APIC-edge  PS/2 Mouse
330    13:          0          0          XT-PIC  fpu
331    14:      22491      24012    IO-APIC-edge  ide0
332    15:       2183       2415    IO-APIC-edge  ide1
333    17:      30564      30414   IO-APIC-level  eth0
334    18:        177        164   IO-APIC-level  bttv
335   NMI:    2457961    2457959 
336   LOC:    2457882    2457881 
337   ERR:       2155
338
339 NMI is incremented in this case because every timer interrupt generates a NMI
340 (Non Maskable Interrupt) which is used by the NMI Watchdog to detect lockups.
341
342 LOC is the local interrupt counter of the internal APIC of every CPU.
343
344 ERR is incremented in the case of errors in the IO-APIC bus (the bus that
345 connects the CPUs in a SMP system. This means that an error has been detected,
346 the IO-APIC automatically retry the transmission, so it should not be a big
347 problem, but you should read the SMP-FAQ.
348
349 In 2.6.2* /proc/interrupts was expanded again.  This time the goal was for
350 /proc/interrupts to display every IRQ vector in use by the system, not
351 just those considered 'most important'.  The new vectors are:
352
353   THR -- interrupt raised when a machine check threshold counter
354   (typically counting ECC corrected errors of memory or cache) exceeds
355   a configurable threshold.  Only available on some systems.
356
357   TRM -- a thermal event interrupt occurs when a temperature threshold
358   has been exceeded for the CPU.  This interrupt may also be generated
359   when the temperature drops back to normal.
360
361   SPU -- a spurious interrupt is some interrupt that was raised then lowered
362   by some IO device before it could be fully processed by the APIC.  Hence
363   the APIC sees the interrupt but does not know what device it came from.
364   For this case the APIC will generate the interrupt with a IRQ vector
365   of 0xff. This might also be generated by chipset bugs.
366
367   RES, CAL, TLB -- rescheduling, call and TLB flush interrupts are
368   sent from one CPU to another per the needs of the OS.  Typically,
369   their statistics are used by kernel developers and interested users to
370   determine the occurrence of interrupts of the given type.
371
372 The above IRQ vectors are displayed only when relevent.  For example,
373 the threshold vector does not exist on x86_64 platforms.  Others are
374 suppressed when the system is a uniprocessor.  As of this writing, only
375 i386 and x86_64 platforms support the new IRQ vector displays.
376
377 Of some interest is the introduction of the /proc/irq directory to 2.4.
378 It could be used to set IRQ to CPU affinity, this means that you can "hook" an
379 IRQ to only one CPU, or to exclude a CPU of handling IRQs. The contents of the
380 irq subdir is one subdir for each IRQ, and two files; default_smp_affinity and
381 prof_cpu_mask.
382
383 For example 
384   > ls /proc/irq/
385   0  10  12  14  16  18  2  4  6  8  prof_cpu_mask
386   1  11  13  15  17  19  3  5  7  9  default_smp_affinity
387   > ls /proc/irq/0/
388   smp_affinity
389
390 smp_affinity is a bitmask, in which you can specify which CPUs can handle the
391 IRQ, you can set it by doing:
392
393   > echo 1 > /proc/irq/10/smp_affinity
394
395 This means that only the first CPU will handle the IRQ, but you can also echo
396 5 which means that only the first and fourth CPU can handle the IRQ.
397
398 The contents of each smp_affinity file is the same by default:
399
400   > cat /proc/irq/0/smp_affinity
401   ffffffff
402
403 The default_smp_affinity mask applies to all non-active IRQs, which are the
404 IRQs which have not yet been allocated/activated, and hence which lack a
405 /proc/irq/[0-9]* directory.
406
407 prof_cpu_mask specifies which CPUs are to be profiled by the system wide
408 profiler. Default value is ffffffff (all cpus).
409
410 The way IRQs are routed is handled by the IO-APIC, and it's Round Robin
411 between all the CPUs which are allowed to handle it. As usual the kernel has
412 more info than you and does a better job than you, so the defaults are the
413 best choice for almost everyone.
414
415 There are  three  more  important subdirectories in /proc: net, scsi, and sys.
416 The general  rule  is  that  the  contents,  or  even  the  existence of these
417 directories, depend  on your kernel configuration. If SCSI is not enabled, the
418 directory scsi  may  not  exist. The same is true with the net, which is there
419 only when networking support is present in the running kernel.
420
421 The slabinfo  file  gives  information  about  memory usage at the slab level.
422 Linux uses  slab  pools for memory management above page level in version 2.2.
423 Commonly used  objects  have  their  own  slab  pool (such as network buffers,
424 directory cache, and so on).
425
426 ..............................................................................
427
428 > cat /proc/buddyinfo
429
430 Node 0, zone      DMA      0      4      5      4      4      3 ...
431 Node 0, zone   Normal      1      0      0      1    101      8 ...
432 Node 0, zone  HighMem      2      0      0      1      1      0 ...
433
434 Memory fragmentation is a problem under some workloads, and buddyinfo is a 
435 useful tool for helping diagnose these problems.  Buddyinfo will give you a 
436 clue as to how big an area you can safely allocate, or why a previous
437 allocation failed.
438
439 Each column represents the number of pages of a certain order which are 
440 available.  In this case, there are 0 chunks of 2^0*PAGE_SIZE available in 
441 ZONE_DMA, 4 chunks of 2^1*PAGE_SIZE in ZONE_DMA, 101 chunks of 2^4*PAGE_SIZE 
442 available in ZONE_NORMAL, etc... 
443
444 ..............................................................................
445
446 meminfo:
447
448 Provides information about distribution and utilization of memory.  This
449 varies by architecture and compile options.  The following is from a
450 16GB PIII, which has highmem enabled.  You may not have all of these fields.
451
452 > cat /proc/meminfo
453
454
455 MemTotal:     16344972 kB
456 MemFree:      13634064 kB
457 Buffers:          3656 kB
458 Cached:        1195708 kB
459 SwapCached:          0 kB
460 Active:         891636 kB
461 Inactive:      1077224 kB
462 HighTotal:    15597528 kB
463 HighFree:     13629632 kB
464 LowTotal:       747444 kB
465 LowFree:          4432 kB
466 SwapTotal:           0 kB
467 SwapFree:            0 kB
468 Dirty:             968 kB
469 Writeback:           0 kB
470 AnonPages:      861800 kB
471 Mapped:         280372 kB
472 Slab:           284364 kB
473 SReclaimable:   159856 kB
474 SUnreclaim:     124508 kB
475 PageTables:      24448 kB
476 NFS_Unstable:        0 kB
477 Bounce:              0 kB
478 WritebackTmp:        0 kB
479 CommitLimit:   7669796 kB
480 Committed_AS:   100056 kB
481 VmallocTotal:   112216 kB
482 VmallocUsed:       428 kB
483 VmallocChunk:   111088 kB
484
485     MemTotal: Total usable ram (i.e. physical ram minus a few reserved
486               bits and the kernel binary code)
487      MemFree: The sum of LowFree+HighFree
488      Buffers: Relatively temporary storage for raw disk blocks
489               shouldn't get tremendously large (20MB or so)
490       Cached: in-memory cache for files read from the disk (the
491               pagecache).  Doesn't include SwapCached
492   SwapCached: Memory that once was swapped out, is swapped back in but
493               still also is in the swapfile (if memory is needed it
494               doesn't need to be swapped out AGAIN because it is already
495               in the swapfile. This saves I/O)
496       Active: Memory that has been used more recently and usually not
497               reclaimed unless absolutely necessary.
498     Inactive: Memory which has been less recently used.  It is more
499               eligible to be reclaimed for other purposes
500    HighTotal:
501     HighFree: Highmem is all memory above ~860MB of physical memory
502               Highmem areas are for use by userspace programs, or
503               for the pagecache.  The kernel must use tricks to access
504               this memory, making it slower to access than lowmem.
505     LowTotal:
506      LowFree: Lowmem is memory which can be used for everything that
507               highmem can be used for, but it is also available for the
508               kernel's use for its own data structures.  Among many
509               other things, it is where everything from the Slab is
510               allocated.  Bad things happen when you're out of lowmem.
511    SwapTotal: total amount of swap space available
512     SwapFree: Memory which has been evicted from RAM, and is temporarily
513               on the disk
514        Dirty: Memory which is waiting to get written back to the disk
515    Writeback: Memory which is actively being written back to the disk
516    AnonPages: Non-file backed pages mapped into userspace page tables
517       Mapped: files which have been mmaped, such as libraries
518         Slab: in-kernel data structures cache
519 SReclaimable: Part of Slab, that might be reclaimed, such as caches
520   SUnreclaim: Part of Slab, that cannot be reclaimed on memory pressure
521   PageTables: amount of memory dedicated to the lowest level of page
522               tables.
523 NFS_Unstable: NFS pages sent to the server, but not yet committed to stable
524               storage
525       Bounce: Memory used for block device "bounce buffers"
526 WritebackTmp: Memory used by FUSE for temporary writeback buffers
527  CommitLimit: Based on the overcommit ratio ('vm.overcommit_ratio'),
528               this is the total amount of  memory currently available to
529               be allocated on the system. This limit is only adhered to
530               if strict overcommit accounting is enabled (mode 2 in
531               'vm.overcommit_memory').
532               The CommitLimit is calculated with the following formula:
533               CommitLimit = ('vm.overcommit_ratio' * Physical RAM) + Swap
534               For example, on a system with 1G of physical RAM and 7G
535               of swap with a `vm.overcommit_ratio` of 30 it would
536               yield a CommitLimit of 7.3G.
537               For more details, see the memory overcommit documentation
538               in vm/overcommit-accounting.
539 Committed_AS: The amount of memory presently allocated on the system.
540               The committed memory is a sum of all of the memory which
541               has been allocated by processes, even if it has not been
542               "used" by them as of yet. A process which malloc()'s 1G
543               of memory, but only touches 300M of it will only show up
544               as using 300M of memory even if it has the address space
545               allocated for the entire 1G. This 1G is memory which has
546               been "committed" to by the VM and can be used at any time
547               by the allocating application. With strict overcommit
548               enabled on the system (mode 2 in 'vm.overcommit_memory'),
549               allocations which would exceed the CommitLimit (detailed
550               above) will not be permitted. This is useful if one needs
551               to guarantee that processes will not fail due to lack of
552               memory once that memory has been successfully allocated.
553 VmallocTotal: total size of vmalloc memory area
554  VmallocUsed: amount of vmalloc area which is used
555 VmallocChunk: largest contiguous block of vmalloc area which is free
556
557 ..............................................................................
558
559 vmallocinfo:
560
561 Provides information about vmalloced/vmaped areas. One line per area,
562 containing the virtual address range of the area, size in bytes,
563 caller information of the creator, and optional information depending
564 on the kind of area :
565
566  pages=nr    number of pages
567  phys=addr   if a physical address was specified
568  ioremap     I/O mapping (ioremap() and friends)
569  vmalloc     vmalloc() area
570  vmap        vmap()ed pages
571  user        VM_USERMAP area
572  vpages      buffer for pages pointers was vmalloced (huge area)
573  N<node>=nr  (Only on NUMA kernels)
574              Number of pages allocated on memory node <node>
575
576 > cat /proc/vmallocinfo
577 0xffffc20000000000-0xffffc20000201000 2101248 alloc_large_system_hash+0x204 ...
578   /0x2c0 pages=512 vmalloc N0=128 N1=128 N2=128 N3=128
579 0xffffc20000201000-0xffffc20000302000 1052672 alloc_large_system_hash+0x204 ...
580   /0x2c0 pages=256 vmalloc N0=64 N1=64 N2=64 N3=64
581 0xffffc20000302000-0xffffc20000304000    8192 acpi_tb_verify_table+0x21/0x4f...
582   phys=7fee8000 ioremap
583 0xffffc20000304000-0xffffc20000307000   12288 acpi_tb_verify_table+0x21/0x4f...
584   phys=7fee7000 ioremap
585 0xffffc2000031d000-0xffffc2000031f000    8192 init_vdso_vars+0x112/0x210
586 0xffffc2000031f000-0xffffc2000032b000   49152 cramfs_uncompress_init+0x2e ...
587   /0x80 pages=11 vmalloc N0=3 N1=3 N2=2 N3=3
588 0xffffc2000033a000-0xffffc2000033d000   12288 sys_swapon+0x640/0xac0      ...
589   pages=2 vmalloc N1=2
590 0xffffc20000347000-0xffffc2000034c000   20480 xt_alloc_table_info+0xfe ...
591   /0x130 [x_tables] pages=4 vmalloc N0=4
592 0xffffffffa0000000-0xffffffffa000f000   61440 sys_init_module+0xc27/0x1d00 ...
593    pages=14 vmalloc N2=14
594 0xffffffffa000f000-0xffffffffa0014000   20480 sys_init_module+0xc27/0x1d00 ...
595    pages=4 vmalloc N1=4
596 0xffffffffa0014000-0xffffffffa0017000   12288 sys_init_module+0xc27/0x1d00 ...
597    pages=2 vmalloc N1=2
598 0xffffffffa0017000-0xffffffffa0022000   45056 sys_init_module+0xc27/0x1d00 ...
599    pages=10 vmalloc N0=10
600
601 ..............................................................................
602
603 softirqs:
604
605 Provides counts of softirq handlers serviced since boot time, for each cpu.
606
607 > cat /proc/softirqs
608                 CPU0       CPU1       CPU2       CPU3
609       HI:          0          0          0          0
610    TIMER:      27166      27120      27097      27034
611   NET_TX:          0          0          0         17
612   NET_RX:         42          0          0         39
613    BLOCK:          0          0        107       1121
614  TASKLET:          0          0          0        290
615    SCHED:      27035      26983      26971      26746
616  HRTIMER:          0          0          0          0
617      RCU:       1678       1769       2178       2250
618
619
620 1.3 IDE devices in /proc/ide
621 ----------------------------
622
623 The subdirectory /proc/ide contains information about all IDE devices of which
624 the kernel  is  aware.  There is one subdirectory for each IDE controller, the
625 file drivers  and a link for each IDE device, pointing to the device directory
626 in the controller specific subtree.
627
628 The file  drivers  contains general information about the drivers used for the
629 IDE devices:
630
631   > cat /proc/ide/drivers
632   ide-cdrom version 4.53
633   ide-disk version 1.08
634
635 More detailed  information  can  be  found  in  the  controller  specific
636 subdirectories. These  are  named  ide0,  ide1  and  so  on.  Each  of  these
637 directories contains the files shown in table 1-5.
638
639
640 Table 1-5: IDE controller info in  /proc/ide/ide?
641 ..............................................................................
642  File    Content                                 
643  channel IDE channel (0 or 1)                    
644  config  Configuration (only for PCI/IDE bridge) 
645  mate    Mate name                               
646  model   Type/Chipset of IDE controller          
647 ..............................................................................
648
649 Each device  connected  to  a  controller  has  a separate subdirectory in the
650 controllers directory.  The  files  listed in table 1-6 are contained in these
651 directories.
652
653
654 Table 1-6: IDE device information
655 ..............................................................................
656  File             Content                                    
657  cache            The cache                                  
658  capacity         Capacity of the medium (in 512Byte blocks) 
659  driver           driver and version                         
660  geometry         physical and logical geometry              
661  identify         device identify block                      
662  media            media type                                 
663  model            device identifier                          
664  settings         device setup                               
665  smart_thresholds IDE disk management thresholds             
666  smart_values     IDE disk management values                 
667 ..............................................................................
668
669 The most  interesting  file is settings. This file contains a nice overview of
670 the drive parameters:
671
672   # cat /proc/ide/ide0/hda/settings 
673   name                    value           min             max             mode 
674   ----                    -----           ---             ---             ---- 
675   bios_cyl                526             0               65535           rw 
676   bios_head               255             0               255             rw 
677   bios_sect               63              0               63              rw 
678   breada_readahead        4               0               127             rw 
679   bswap                   0               0               1               r 
680   file_readahead          72              0               2097151         rw 
681   io_32bit                0               0               3               rw 
682   keepsettings            0               0               1               rw 
683   max_kb_per_request      122             1               127             rw 
684   multcount               0               0               8               rw 
685   nice1                   1               0               1               rw 
686   nowerr                  0               0               1               rw 
687   pio_mode                write-only      0               255             w 
688   slow                    0               0               1               rw 
689   unmaskirq               0               0               1               rw 
690   using_dma               0               0               1               rw 
691
692
693 1.4 Networking info in /proc/net
694 --------------------------------
695
696 The subdirectory  /proc/net  follows  the  usual  pattern. Table 1-6 shows the
697 additional values  you  get  for  IP  version 6 if you configure the kernel to
698 support this. Table 1-7 lists the files and their meaning.
699
700
701 Table 1-6: IPv6 info in /proc/net 
702 ..............................................................................
703  File       Content                                               
704  udp6       UDP sockets (IPv6)                                    
705  tcp6       TCP sockets (IPv6)                                    
706  raw6       Raw device statistics (IPv6)                          
707  igmp6      IP multicast addresses, which this host joined (IPv6) 
708  if_inet6   List of IPv6 interface addresses                      
709  ipv6_route Kernel routing table for IPv6                         
710  rt6_stats  Global IPv6 routing tables statistics                 
711  sockstat6  Socket statistics (IPv6)                              
712  snmp6      Snmp data (IPv6)                                      
713 ..............................................................................
714
715
716 Table 1-7: Network info in /proc/net 
717 ..............................................................................
718  File          Content                                                         
719  arp           Kernel  ARP table                                               
720  dev           network devices with statistics                                 
721  dev_mcast     the Layer2 multicast groups a device is listening too
722                (interface index, label, number of references, number of bound
723                addresses). 
724  dev_stat      network device status                                           
725  ip_fwchains   Firewall chain linkage                                          
726  ip_fwnames    Firewall chain names                                            
727  ip_masq       Directory containing the masquerading tables                    
728  ip_masquerade Major masquerading table                                        
729  netstat       Network statistics                                              
730  raw           raw device statistics                                           
731  route         Kernel routing table                                            
732  rpc           Directory containing rpc info                                   
733  rt_cache      Routing cache                                                   
734  snmp          SNMP data                                                       
735  sockstat      Socket statistics                                               
736  tcp           TCP  sockets                                                    
737  tr_rif        Token ring RIF routing table                                    
738  udp           UDP sockets                                                     
739  unix          UNIX domain sockets                                             
740  wireless      Wireless interface data (Wavelan etc)                           
741  igmp          IP multicast addresses, which this host joined                  
742  psched        Global packet scheduler parameters.                             
743  netlink       List of PF_NETLINK sockets                                      
744  ip_mr_vifs    List of multicast virtual interfaces                            
745  ip_mr_cache   List of multicast routing cache                                 
746 ..............................................................................
747
748 You can  use  this  information  to see which network devices are available in
749 your system and how much traffic was routed over those devices:
750
751   > cat /proc/net/dev 
752   Inter-|Receive                                                   |[... 
753    face |bytes    packets errs drop fifo frame compressed multicast|[... 
754       lo:  908188   5596     0    0    0     0          0         0 [...         
755     ppp0:15475140  20721   410    0    0   410          0         0 [...  
756     eth0:  614530   7085     0    0    0     0          0         1 [... 
757    
758   ...] Transmit 
759   ...] bytes    packets errs drop fifo colls carrier compressed 
760   ...]  908188     5596    0    0    0     0       0          0 
761   ...] 1375103    17405    0    0    0     0       0          0 
762   ...] 1703981     5535    0    0    0     3       0          0 
763
764 In addition, each Channel Bond interface has it's own directory.  For
765 example, the bond0 device will have a directory called /proc/net/bond0/.
766 It will contain information that is specific to that bond, such as the
767 current slaves of the bond, the link status of the slaves, and how
768 many times the slaves link has failed.
769
770 1.5 SCSI info
771 -------------
772
773 If you  have  a  SCSI  host adapter in your system, you'll find a subdirectory
774 named after  the driver for this adapter in /proc/scsi. You'll also see a list
775 of all recognized SCSI devices in /proc/scsi:
776
777   >cat /proc/scsi/scsi 
778   Attached devices: 
779   Host: scsi0 Channel: 00 Id: 00 Lun: 00 
780     Vendor: IBM      Model: DGHS09U          Rev: 03E0 
781     Type:   Direct-Access                    ANSI SCSI revision: 03 
782   Host: scsi0 Channel: 00 Id: 06 Lun: 00 
783     Vendor: PIONEER  Model: CD-ROM DR-U06S   Rev: 1.04 
784     Type:   CD-ROM                           ANSI SCSI revision: 02 
785
786
787 The directory  named  after  the driver has one file for each adapter found in
788 the system.  These  files  contain information about the controller, including
789 the used  IRQ  and  the  IO  address range. The amount of information shown is
790 dependent on  the adapter you use. The example shows the output for an Adaptec
791 AHA-2940 SCSI adapter:
792
793   > cat /proc/scsi/aic7xxx/0 
794    
795   Adaptec AIC7xxx driver version: 5.1.19/3.2.4 
796   Compile Options: 
797     TCQ Enabled By Default : Disabled 
798     AIC7XXX_PROC_STATS     : Disabled 
799     AIC7XXX_RESET_DELAY    : 5 
800   Adapter Configuration: 
801              SCSI Adapter: Adaptec AHA-294X Ultra SCSI host adapter 
802                              Ultra Wide Controller 
803       PCI MMAPed I/O Base: 0xeb001000 
804    Adapter SEEPROM Config: SEEPROM found and used. 
805         Adaptec SCSI BIOS: Enabled 
806                       IRQ: 10 
807                      SCBs: Active 0, Max Active 2, 
808                            Allocated 15, HW 16, Page 255 
809                Interrupts: 160328 
810         BIOS Control Word: 0x18b6 
811      Adapter Control Word: 0x005b 
812      Extended Translation: Enabled 
813   Disconnect Enable Flags: 0xffff 
814        Ultra Enable Flags: 0x0001 
815    Tag Queue Enable Flags: 0x0000 
816   Ordered Queue Tag Flags: 0x0000 
817   Default Tag Queue Depth: 8 
818       Tagged Queue By Device array for aic7xxx host instance 0: 
819         {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255} 
820       Actual queue depth per device for aic7xxx host instance 0: 
821         {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} 
822   Statistics: 
823   (scsi0:0:0:0) 
824     Device using Wide/Sync transfers at 40.0 MByte/sec, offset 8 
825     Transinfo settings: current(12/8/1/0), goal(12/8/1/0), user(12/15/1/0) 
826     Total transfers 160151 (74577 reads and 85574 writes) 
827   (scsi0:0:6:0) 
828     Device using Narrow/Sync transfers at 5.0 MByte/sec, offset 15 
829     Transinfo settings: current(50/15/0/0), goal(50/15/0/0), user(50/15/0/0) 
830     Total transfers 0 (0 reads and 0 writes) 
831
832
833 1.6 Parallel port info in /proc/parport
834 ---------------------------------------
835
836 The directory  /proc/parport  contains information about the parallel ports of
837 your system.  It  has  one  subdirectory  for  each port, named after the port
838 number (0,1,2,...).
839
840 These directories contain the four files shown in Table 1-8.
841
842
843 Table 1-8: Files in /proc/parport 
844 ..............................................................................
845  File      Content                                                             
846  autoprobe Any IEEE-1284 device ID information that has been acquired.         
847  devices   list of the device drivers using that port. A + will appear by the
848            name of the device currently using the port (it might not appear
849            against any). 
850  hardware  Parallel port's base address, IRQ line and DMA channel.             
851  irq       IRQ that parport is using for that port. This is in a separate
852            file to allow you to alter it by writing a new value in (IRQ
853            number or none). 
854 ..............................................................................
855
856 1.7 TTY info in /proc/tty
857 -------------------------
858
859 Information about  the  available  and actually used tty's can be found in the
860 directory /proc/tty.You'll  find  entries  for drivers and line disciplines in
861 this directory, as shown in Table 1-9.
862
863
864 Table 1-9: Files in /proc/tty 
865 ..............................................................................
866  File          Content                                        
867  drivers       list of drivers and their usage                
868  ldiscs        registered line disciplines                    
869  driver/serial usage statistic and status of single tty lines 
870 ..............................................................................
871
872 To see  which  tty's  are  currently in use, you can simply look into the file
873 /proc/tty/drivers:
874
875   > cat /proc/tty/drivers 
876   pty_slave            /dev/pts      136   0-255 pty:slave 
877   pty_master           /dev/ptm      128   0-255 pty:master 
878   pty_slave            /dev/ttyp       3   0-255 pty:slave 
879   pty_master           /dev/pty        2   0-255 pty:master 
880   serial               /dev/cua        5   64-67 serial:callout 
881   serial               /dev/ttyS       4   64-67 serial 
882   /dev/tty0            /dev/tty0       4       0 system:vtmaster 
883   /dev/ptmx            /dev/ptmx       5       2 system 
884   /dev/console         /dev/console    5       1 system:console 
885   /dev/tty             /dev/tty        5       0 system:/dev/tty 
886   unknown              /dev/tty        4    1-63 console 
887
888
889 1.8 Miscellaneous kernel statistics in /proc/stat
890 -------------------------------------------------
891
892 Various pieces   of  information about  kernel activity  are  available in the
893 /proc/stat file.  All  of  the numbers reported  in  this file are  aggregates
894 since the system first booted.  For a quick look, simply cat the file:
895
896   > cat /proc/stat
897   cpu  2255 34 2290 22625563 6290 127 456 0
898   cpu0 1132 34 1441 11311718 3675 127 438 0
899   cpu1 1123 0 849 11313845 2614 0 18 0
900   intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...]
901   ctxt 1990473
902   btime 1062191376
903   processes 2915
904   procs_running 1
905   procs_blocked 0
906   softirq 183433 0 21755 12 39 1137 231 21459 2263
907
908 The very first  "cpu" line aggregates the  numbers in all  of the other "cpuN"
909 lines.  These numbers identify the amount of time the CPU has spent performing
910 different kinds of work.  Time units are in USER_HZ (typically hundredths of a
911 second).  The meanings of the columns are as follows, from left to right:
912
913 - user: normal processes executing in user mode
914 - nice: niced processes executing in user mode
915 - system: processes executing in kernel mode
916 - idle: twiddling thumbs
917 - iowait: waiting for I/O to complete
918 - irq: servicing interrupts
919 - softirq: servicing softirqs
920 - steal: involuntary wait
921
922 The "intr" line gives counts of interrupts  serviced since boot time, for each
923 of the  possible system interrupts.   The first  column  is the  total of  all
924 interrupts serviced; each  subsequent column is the  total for that particular
925 interrupt.
926
927 The "ctxt" line gives the total number of context switches across all CPUs.
928
929 The "btime" line gives  the time at which the  system booted, in seconds since
930 the Unix epoch.
931
932 The "processes" line gives the number  of processes and threads created, which
933 includes (but  is not limited  to) those  created by  calls to the  fork() and
934 clone() system calls.
935
936 The  "procs_running" line gives the  number of processes  currently running on
937 CPUs.
938
939 The   "procs_blocked" line gives  the  number of  processes currently blocked,
940 waiting for I/O to complete.
941
942 The "softirq" line gives counts of softirqs serviced since boot time, for each
943 of the possible system softirqs. The first column is the total of all
944 softirqs serviced; each subsequent column is the total for that particular
945 softirq.
946
947
948 1.9 Ext4 file system parameters
949 ------------------------------
950
951 Information about mounted ext4 file systems can be found in
952 /proc/fs/ext4.  Each mounted filesystem will have a directory in
953 /proc/fs/ext4 based on its device name (i.e., /proc/fs/ext4/hdc or
954 /proc/fs/ext4/dm-0).   The files in each per-device directory are shown
955 in Table 1-10, below.
956
957 Table 1-10: Files in /proc/fs/ext4/<devname>
958 ..............................................................................
959  File            Content                                        
960  mb_groups       details of multiblock allocator buddy cache of free blocks
961  mb_history      multiblock allocation history
962 ..............................................................................
963
964
965 ------------------------------------------------------------------------------
966 Summary
967 ------------------------------------------------------------------------------
968 The /proc file system serves information about the running system. It not only
969 allows access to process data but also allows you to request the kernel status
970 by reading files in the hierarchy.
971
972 The directory  structure  of /proc reflects the types of information and makes
973 it easy, if not obvious, where to look for specific data.
974 ------------------------------------------------------------------------------
975
976 ------------------------------------------------------------------------------
977 CHAPTER 2: MODIFYING SYSTEM PARAMETERS
978 ------------------------------------------------------------------------------
979
980 ------------------------------------------------------------------------------
981 In This Chapter
982 ------------------------------------------------------------------------------
983 * Modifying kernel parameters by writing into files found in /proc/sys
984 * Exploring the files which modify certain parameters
985 * Review of the /proc/sys file tree
986 ------------------------------------------------------------------------------
987
988
989 A very  interesting part of /proc is the directory /proc/sys. This is not only
990 a source  of  information,  it also allows you to change parameters within the
991 kernel. Be  very  careful  when attempting this. You can optimize your system,
992 but you  can  also  cause  it  to  crash.  Never  alter kernel parameters on a
993 production system.  Set  up  a  development machine and test to make sure that
994 everything works  the  way  you want it to. You may have no alternative but to
995 reboot the machine once an error has been made.
996
997 To change  a  value,  simply  echo  the new value into the file. An example is
998 given below  in the section on the file system data. You need to be root to do
999 this. You  can  create  your  own  boot script to perform this every time your
1000 system boots.
1001
1002 The files  in /proc/sys can be used to fine tune and monitor miscellaneous and
1003 general things  in  the operation of the Linux kernel. Since some of the files
1004 can inadvertently  disrupt  your  system,  it  is  advisable  to  read  both
1005 documentation and  source  before actually making adjustments. In any case, be
1006 very careful  when  writing  to  any  of these files. The entries in /proc may
1007 change slightly between the 2.1.* and the 2.2 kernel, so if there is any doubt
1008 review the kernel documentation in the directory /usr/src/linux/Documentation.
1009 This chapter  is  heavily  based  on the documentation included in the pre 2.2
1010 kernels, and became part of it in version 2.2.1 of the Linux kernel.
1011
1012 Please see: Documentation/sysctls/ directory for descriptions of these
1013 entries.
1014
1015 ------------------------------------------------------------------------------
1016 Summary
1017 ------------------------------------------------------------------------------
1018 Certain aspects  of  kernel  behavior  can be modified at runtime, without the
1019 need to  recompile  the kernel, or even to reboot the system. The files in the
1020 /proc/sys tree  can  not only be read, but also modified. You can use the echo
1021 command to write value into these files, thereby changing the default settings
1022 of the kernel.
1023 ------------------------------------------------------------------------------
1024
1025 ------------------------------------------------------------------------------
1026 CHAPTER 3: PER-PROCESS PARAMETERS
1027 ------------------------------------------------------------------------------
1028
1029 3.1 /proc/<pid>/oom_adj - Adjust the oom-killer score
1030 ------------------------------------------------------
1031
1032 This file can be used to adjust the score used to select which processes should
1033 be killed in an out-of-memory situation.  The oom_adj value is a characteristic
1034 of the task's mm, so all threads that share an mm with pid will have the same
1035 oom_adj value.  A high value will increase the likelihood of this process being
1036 killed by the oom-killer.  Valid values are in the range -16 to +15 as
1037 explained below and a special value of -17, which disables oom-killing
1038 altogether for threads sharing pid's mm.
1039
1040 The process to be killed in an out-of-memory situation is selected among all others
1041 based on its badness score. This value equals the original memory size of the process
1042 and is then updated according to its CPU time (utime + stime) and the
1043 run time (uptime - start time). The longer it runs the smaller is the score.
1044 Badness score is divided by the square root of the CPU time and then by
1045 the double square root of the run time.
1046
1047 Swapped out tasks are killed first. Half of each child's memory size is added to
1048 the parent's score if they do not share the same memory. Thus forking servers
1049 are the prime candidates to be killed. Having only one 'hungry' child will make
1050 parent less preferable than the child.
1051
1052 /proc/<pid>/oom_adj cannot be changed for kthreads since they are immune from
1053 oom-killing already.
1054
1055 /proc/<pid>/oom_score shows process' current badness score.
1056
1057 The following heuristics are then applied:
1058  * if the task was reniced, its score doubles
1059  * superuser or direct hardware access tasks (CAP_SYS_ADMIN, CAP_SYS_RESOURCE
1060         or CAP_SYS_RAWIO) have their score divided by 4
1061  * if oom condition happened in one cpuset and checked task does not belong
1062         to it, its score is divided by 8
1063  * the resulting score is multiplied by two to the power of oom_adj, i.e.
1064         points <<= oom_adj when it is positive and
1065         points >>= -(oom_adj) otherwise
1066
1067 The task with the highest badness score is then selected and its children
1068 are killed, process itself will be killed in an OOM situation when it does
1069 not have children or some of them disabled oom like described above.
1070
1071 3.2 /proc/<pid>/oom_score - Display current oom-killer score
1072 -------------------------------------------------------------
1073
1074 This file can be used to check the current score used by the oom-killer is for
1075 any given <pid>. Use it together with /proc/<pid>/oom_adj to tune which
1076 process should be killed in an out-of-memory situation.
1077
1078
1079 3.3  /proc/<pid>/io - Display the IO accounting fields
1080 -------------------------------------------------------
1081
1082 This file contains IO statistics for each running process
1083
1084 Example
1085 -------
1086
1087 test:/tmp # dd if=/dev/zero of=/tmp/test.dat &
1088 [1] 3828
1089
1090 test:/tmp # cat /proc/3828/io
1091 rchar: 323934931
1092 wchar: 323929600
1093 syscr: 632687
1094 syscw: 632675
1095 read_bytes: 0
1096 write_bytes: 323932160
1097 cancelled_write_bytes: 0
1098
1099
1100 Description
1101 -----------
1102
1103 rchar
1104 -----
1105
1106 I/O counter: chars read
1107 The number of bytes which this task has caused to be read from storage. This
1108 is simply the sum of bytes which this process passed to read() and pread().
1109 It includes things like tty IO and it is unaffected by whether or not actual
1110 physical disk IO was required (the read might have been satisfied from
1111 pagecache)
1112
1113
1114 wchar
1115 -----
1116
1117 I/O counter: chars written
1118 The number of bytes which this task has caused, or shall cause to be written
1119 to disk. Similar caveats apply here as with rchar.
1120
1121
1122 syscr
1123 -----
1124
1125 I/O counter: read syscalls
1126 Attempt to count the number of read I/O operations, i.e. syscalls like read()
1127 and pread().
1128
1129
1130 syscw
1131 -----
1132
1133 I/O counter: write syscalls
1134 Attempt to count the number of write I/O operations, i.e. syscalls like
1135 write() and pwrite().
1136
1137
1138 read_bytes
1139 ----------
1140
1141 I/O counter: bytes read
1142 Attempt to count the number of bytes which this process really did cause to
1143 be fetched from the storage layer. Done at the submit_bio() level, so it is
1144 accurate for block-backed filesystems. <please add status regarding NFS and
1145 CIFS at a later time>
1146
1147
1148 write_bytes
1149 -----------
1150
1151 I/O counter: bytes written
1152 Attempt to count the number of bytes which this process caused to be sent to
1153 the storage layer. This is done at page-dirtying time.
1154
1155
1156 cancelled_write_bytes
1157 ---------------------
1158
1159 The big inaccuracy here is truncate. If a process writes 1MB to a file and
1160 then deletes the file, it will in fact perform no writeout. But it will have
1161 been accounted as having caused 1MB of write.
1162 In other words: The number of bytes which this process caused to not happen,
1163 by truncating pagecache. A task can cause "negative" IO too. If this task
1164 truncates some dirty pagecache, some IO which another task has been accounted
1165 for (in it's write_bytes) will not be happening. We _could_ just subtract that
1166 from the truncating task's write_bytes, but there is information loss in doing
1167 that.
1168
1169
1170 Note
1171 ----
1172
1173 At its current implementation state, this is a bit racy on 32-bit machines: if
1174 process A reads process B's /proc/pid/io while process B is updating one of
1175 those 64-bit counters, process A could see an intermediate result.
1176
1177
1178 More information about this can be found within the taskstats documentation in
1179 Documentation/accounting.
1180
1181 3.4 /proc/<pid>/coredump_filter - Core dump filtering settings
1182 ---------------------------------------------------------------
1183 When a process is dumped, all anonymous memory is written to a core file as
1184 long as the size of the core file isn't limited. But sometimes we don't want
1185 to dump some memory segments, for example, huge shared memory. Conversely,
1186 sometimes we want to save file-backed memory segments into a core file, not
1187 only the individual files.
1188
1189 /proc/<pid>/coredump_filter allows you to customize which memory segments
1190 will be dumped when the <pid> process is dumped. coredump_filter is a bitmask
1191 of memory types. If a bit of the bitmask is set, memory segments of the
1192 corresponding memory type are dumped, otherwise they are not dumped.
1193
1194 The following 7 memory types are supported:
1195   - (bit 0) anonymous private memory
1196   - (bit 1) anonymous shared memory
1197   - (bit 2) file-backed private memory
1198   - (bit 3) file-backed shared memory
1199   - (bit 4) ELF header pages in file-backed private memory areas (it is
1200             effective only if the bit 2 is cleared)
1201   - (bit 5) hugetlb private memory
1202   - (bit 6) hugetlb shared memory
1203
1204   Note that MMIO pages such as frame buffer are never dumped and vDSO pages
1205   are always dumped regardless of the bitmask status.
1206
1207   Note bit 0-4 doesn't effect any hugetlb memory. hugetlb memory are only
1208   effected by bit 5-6.
1209
1210 Default value of coredump_filter is 0x23; this means all anonymous memory
1211 segments and hugetlb private memory are dumped.
1212
1213 If you don't want to dump all shared memory segments attached to pid 1234,
1214 write 0x21 to the process's proc file.
1215
1216   $ echo 0x21 > /proc/1234/coredump_filter
1217
1218 When a new process is created, the process inherits the bitmask status from its
1219 parent. It is useful to set up coredump_filter before the program runs.
1220 For example:
1221
1222   $ echo 0x7 > /proc/self/coredump_filter
1223   $ ./some_program
1224
1225 3.5     /proc/<pid>/mountinfo - Information about mounts
1226 --------------------------------------------------------
1227
1228 This file contains lines of the form:
1229
1230 36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
1231 (1)(2)(3)   (4)   (5)      (6)      (7)   (8) (9)   (10)         (11)
1232
1233 (1) mount ID:  unique identifier of the mount (may be reused after umount)
1234 (2) parent ID:  ID of parent (or of self for the top of the mount tree)
1235 (3) major:minor:  value of st_dev for files on filesystem
1236 (4) root:  root of the mount within the filesystem
1237 (5) mount point:  mount point relative to the process's root
1238 (6) mount options:  per mount options
1239 (7) optional fields:  zero or more fields of the form "tag[:value]"
1240 (8) separator:  marks the end of the optional fields
1241 (9) filesystem type:  name of filesystem of the form "type[.subtype]"
1242 (10) mount source:  filesystem specific information or "none"
1243 (11) super options:  per super block options
1244
1245 Parsers should ignore all unrecognised optional fields.  Currently the
1246 possible optional fields are:
1247
1248 shared:X  mount is shared in peer group X
1249 master:X  mount is slave to peer group X
1250 propagate_from:X  mount is slave and receives propagation from peer group X (*)
1251 unbindable  mount is unbindable
1252
1253 (*) X is the closest dominant peer group under the process's root.  If
1254 X is the immediate master of the mount, or if there's no dominant peer
1255 group under the same root, then only the "master:X" field is present
1256 and not the "propagate_from:X" field.
1257
1258 For more information on mount propagation see:
1259
1260   Documentation/filesystems/sharedsubtree.txt
1261