blob: 2a99116edc47335f6ab6f50859de0a8284750cdd [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001------------------------------------------------------------------------------
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
72.4.x update Jorge Nerin <comandante@zaralinux.com> November 14 2000
8------------------------------------------------------------------------------
9Version 1.3 Kernel version 2.2.12
10 Kernel version 2.4.0-test11-pre4
11------------------------------------------------------------------------------
12
13Table of Contents
14-----------------
15
16 0 Preface
17 0.1 Introduction/Credits
18 0.2 Legal Stuff
19
20 1 Collecting System Information
21 1.1 Process-Specific Subdirectories
22 1.2 Kernel data
23 1.3 IDE devices in /proc/ide
24 1.4 Networking info in /proc/net
25 1.5 SCSI info
26 1.6 Parallel port info in /proc/parport
27 1.7 TTY info in /proc/tty
28 1.8 Miscellaneous kernel statistics in /proc/stat
29
30 2 Modifying System Parameters
31 2.1 /proc/sys/fs - File system data
32 2.2 /proc/sys/fs/binfmt_misc - Miscellaneous binary formats
33 2.3 /proc/sys/kernel - general kernel parameters
34 2.4 /proc/sys/vm - The virtual memory subsystem
35 2.5 /proc/sys/dev - Device specific parameters
36 2.6 /proc/sys/sunrpc - Remote procedure calls
37 2.7 /proc/sys/net - Networking stuff
38 2.8 /proc/sys/net/ipv4 - IPV4 settings
39 2.9 Appletalk
40 2.10 IPX
41 2.11 /proc/sys/fs/mqueue - POSIX message queues filesystem
Jan-Frode Myklebustd7ff0db2006-09-29 01:59:45 -070042 2.12 /proc/<pid>/oom_adj - Adjust the oom-killer score
43 2.13 /proc/<pid>/oom_score - Display current oom-killer score
Roland Kletzingf9c99462007-03-05 00:30:54 -080044 2.14 /proc/<pid>/io - Display the IO accounting fields
Kawai, Hidehirobb901102007-07-19 01:48:31 -070045 2.15 /proc/<pid>/coredump_filter - Core dump filtering settings
Ram Pai2d4d4862008-03-27 13:06:25 +010046 2.16 /proc/<pid>/mountinfo - Information about mounts
Linus Torvalds1da177e2005-04-16 15:20:36 -070047
48------------------------------------------------------------------------------
49Preface
50------------------------------------------------------------------------------
51
520.1 Introduction/Credits
53------------------------
54
55This documentation is part of a soon (or so we hope) to be released book on
56the SuSE Linux distribution. As there is no complete documentation for the
57/proc file system and we've used many freely available sources to write these
58chapters, it seems only fair to give the work back to the Linux community.
59This work is based on the 2.2.* kernel version and the upcoming 2.4.*. I'm
60afraid it's still far from complete, but we hope it will be useful. As far as
61we know, it is the first 'all-in-one' document about the /proc file system. It
62is focused on the Intel x86 hardware, so if you are looking for PPC, ARM,
63SPARC, AXP, etc., features, you probably won't find what you are looking for.
64It also only covers IPv4 networking, not IPv6 nor other protocols - sorry. But
65additions and patches are welcome and will be added to this document if you
66mail them to Bodo.
67
68We'd like to thank Alan Cox, Rik van Riel, and Alexey Kuznetsov and a lot of
69other people for help compiling this documentation. We'd also like to extend a
70special thank you to Andi Kleen for documentation, which we relied on heavily
71to create this document, as well as the additional information he provided.
72Thanks to everybody else who contributed source or docs to the Linux kernel
73and helped create a great piece of software... :)
74
75If you have any comments, corrections or additions, please don't hesitate to
76contact Bodo Bauer at bb@ricochet.net. We'll be happy to add them to this
77document.
78
79The latest version of this document is available online at
80http://skaro.nightcrawler.com/~bb/Docs/Proc as HTML version.
81
82If the above direction does not works for you, ypu could try the kernel
83mailing list at linux-kernel@vger.kernel.org and/or try to reach me at
84comandante@zaralinux.com.
85
860.2 Legal Stuff
87---------------
88
89We don't guarantee the correctness of this document, and if you come to us
90complaining about how you screwed up your system because of incorrect
91documentation, we won't feel responsible...
92
93------------------------------------------------------------------------------
94CHAPTER 1: COLLECTING SYSTEM INFORMATION
95------------------------------------------------------------------------------
96
97------------------------------------------------------------------------------
98In This Chapter
99------------------------------------------------------------------------------
100* Investigating the properties of the pseudo file system /proc and its
101 ability to provide information on the running Linux system
102* Examining /proc's structure
103* Uncovering various information about the kernel and the processes running
104 on the system
105------------------------------------------------------------------------------
106
107
108The proc file system acts as an interface to internal data structures in the
109kernel. It can be used to obtain information about the system and to change
110certain kernel parameters at runtime (sysctl).
111
112First, we'll take a look at the read-only parts of /proc. In Chapter 2, we
113show you how you can use /proc/sys to change settings.
114
1151.1 Process-Specific Subdirectories
116-----------------------------------
117
118The directory /proc contains (among other things) one subdirectory for each
119process running on the system, which is named after the process ID (PID).
120
121The link self points to the process reading the file system. Each process
122subdirectory has the entries listed in Table 1-1.
123
124
125Table 1-1: Process specific entries in /proc
126..............................................................................
David Rientjesb813e932007-05-06 14:49:24 -0700127 File Content
128 clear_refs Clears page referenced bits shown in smaps output
129 cmdline Command line arguments
130 cpu Current and last cpu in which it was executed (2.4)(smp)
131 cwd Link to the current working directory
132 environ Values of environment variables
133 exe Link to the executable of this process
134 fd Directory, which contains all file descriptors
135 maps Memory maps to executables and library files (2.4)
136 mem Memory held by this process
137 root Link to the root directory of this process
138 stat Process status
139 statm Process memory status information
140 status Process status in human readable form
141 wchan If CONFIG_KALLSYMS is set, a pre-decoded wchan
142 smaps Extension based on maps, the rss size for each mapped file
Linus Torvalds1da177e2005-04-16 15:20:36 -0700143..............................................................................
144
145For example, to get the status information of a process, all you have to do is
146read the file /proc/PID/status:
147
148 >cat /proc/self/status
149 Name: cat
150 State: R (running)
151 Pid: 5452
152 PPid: 743
153 TracerPid: 0 (2.4)
154 Uid: 501 501 501 501
155 Gid: 100 100 100 100
156 Groups: 100 14 16
157 VmSize: 1112 kB
158 VmLck: 0 kB
159 VmRSS: 348 kB
160 VmData: 24 kB
161 VmStk: 12 kB
162 VmExe: 8 kB
163 VmLib: 1044 kB
164 SigPnd: 0000000000000000
165 SigBlk: 0000000000000000
166 SigIgn: 0000000000000000
167 SigCgt: 0000000000000000
168 CapInh: 00000000fffffeff
169 CapPrm: 0000000000000000
170 CapEff: 0000000000000000
171
172
173This shows you nearly the same information you would get if you viewed it with
174the ps command. In fact, ps uses the proc file system to obtain its
175information. The statm file contains more detailed information about the
Kees Cook18d96772007-07-15 23:40:38 -0700176process memory usage. Its seven fields are explained in Table 1-2. The stat
177file contains details information about the process itself. Its fields are
178explained in Table 1-3.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700179
180
181Table 1-2: Contents of the statm files (as of 2.6.8-rc3)
182..............................................................................
183 Field Content
184 size total program size (pages) (same as VmSize in status)
185 resident size of memory portions (pages) (same as VmRSS in status)
186 shared number of pages that are shared (i.e. backed by a file)
187 trs number of pages that are 'code' (not including libs; broken,
188 includes data segment)
189 lrs number of pages of library (always 0 on 2.6)
190 drs number of pages of data/stack (including libs; broken,
191 includes library text)
192 dt number of dirty pages (always 0 on 2.6)
193..............................................................................
194
Kees Cook18d96772007-07-15 23:40:38 -0700195
196Table 1-3: Contents of the stat files (as of 2.6.22-rc3)
197..............................................................................
198 Field Content
199 pid process id
200 tcomm filename of the executable
201 state state (R is running, S is sleeping, D is sleeping in an
202 uninterruptible wait, Z is zombie, T is traced or stopped)
203 ppid process id of the parent process
204 pgrp pgrp of the process
205 sid session id
206 tty_nr tty the process uses
207 tty_pgrp pgrp of the tty
208 flags task flags
209 min_flt number of minor faults
210 cmin_flt number of minor faults with child's
211 maj_flt number of major faults
212 cmaj_flt number of major faults with child's
213 utime user mode jiffies
214 stime kernel mode jiffies
215 cutime user mode jiffies with child's
216 cstime kernel mode jiffies with child's
217 priority priority level
218 nice nice level
219 num_threads number of threads
Leonardo Chiquitto2e01e002008-02-03 16:17:16 +0200220 it_real_value (obsolete, always 0)
Kees Cook18d96772007-07-15 23:40:38 -0700221 start_time time the process started after system boot
222 vsize virtual memory size
223 rss resident set memory size
224 rsslim current limit in bytes on the rss
225 start_code address above which program text can run
226 end_code address below which program text can run
227 start_stack address of the start of the stack
228 esp current value of ESP
229 eip current value of EIP
230 pending bitmap of pending signals (obsolete)
231 blocked bitmap of blocked signals (obsolete)
232 sigign bitmap of ignored signals (obsolete)
233 sigcatch bitmap of catched signals (obsolete)
234 wchan address where process went to sleep
235 0 (place holder)
236 0 (place holder)
237 exit_signal signal to send to parent thread on exit
238 task_cpu which CPU the task is scheduled on
239 rt_priority realtime priority
240 policy scheduling policy (man sched_setscheduler)
241 blkio_ticks time spent waiting for block IO
242..............................................................................
243
244
Linus Torvalds1da177e2005-04-16 15:20:36 -07002451.2 Kernel data
246---------------
247
248Similar to the process entries, the kernel data files give information about
249the running kernel. The files used to obtain this information are contained in
Kees Cook18d96772007-07-15 23:40:38 -0700250/proc and are listed in Table 1-4. Not all of these will be present in your
Linus Torvalds1da177e2005-04-16 15:20:36 -0700251system. It depends on the kernel configuration and the loaded modules, which
252files are there, and which are missing.
253
Kees Cook18d96772007-07-15 23:40:38 -0700254Table 1-4: Kernel info in /proc
Linus Torvalds1da177e2005-04-16 15:20:36 -0700255..............................................................................
256 File Content
257 apm Advanced power management info
258 buddyinfo Kernel memory allocator information (see text) (2.5)
259 bus Directory containing bus specific information
260 cmdline Kernel command line
261 cpuinfo Info about the CPU
262 devices Available devices (block and character)
263 dma Used DMS channels
264 filesystems Supported filesystems
265 driver Various drivers grouped here, currently rtc (2.4)
266 execdomains Execdomains, related to security (2.4)
267 fb Frame Buffer devices (2.4)
268 fs File system parameters, currently nfs/exports (2.4)
269 ide Directory containing info about the IDE subsystem
270 interrupts Interrupt usage
271 iomem Memory map (2.4)
272 ioports I/O port usage
273 irq Masks for irq to cpu affinity (2.4)(smp?)
274 isapnp ISA PnP (Plug&Play) Info (2.4)
275 kcore Kernel core image (can be ELF or A.OUT(deprecated in 2.4))
276 kmsg Kernel messages
277 ksyms Kernel symbol table
278 loadavg Load average of last 1, 5 & 15 minutes
279 locks Kernel locks
280 meminfo Memory info
281 misc Miscellaneous
282 modules List of loaded modules
283 mounts Mounted filesystems
284 net Networking info (see text)
285 partitions Table of partitions known to the system
Randy Dunlap8b607562007-05-09 07:19:14 +0200286 pci Deprecated info of PCI bus (new way -> /proc/bus/pci/,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700287 decoupled by lspci (2.4)
288 rtc Real time clock
289 scsi SCSI info (see text)
290 slabinfo Slab pool info
291 stat Overall statistics
292 swaps Swap space utilization
293 sys See chapter 2
294 sysvipc Info of SysVIPC Resources (msg, sem, shm) (2.4)
295 tty Info of tty drivers
296 uptime System uptime
297 version Kernel version
298 video bttv info of video resources (2.4)
299..............................................................................
300
301You can, for example, check which interrupts are currently in use and what
302they are used for by looking in the file /proc/interrupts:
303
304 > cat /proc/interrupts
305 CPU0
306 0: 8728810 XT-PIC timer
307 1: 895 XT-PIC keyboard
308 2: 0 XT-PIC cascade
309 3: 531695 XT-PIC aha152x
310 4: 2014133 XT-PIC serial
311 5: 44401 XT-PIC pcnet_cs
312 8: 2 XT-PIC rtc
313 11: 8 XT-PIC i82365
314 12: 182918 XT-PIC PS/2 Mouse
315 13: 1 XT-PIC fpu
316 14: 1232265 XT-PIC ide0
317 15: 7 XT-PIC ide1
318 NMI: 0
319
320In 2.4.* a couple of lines where added to this file LOC & ERR (this time is the
321output of a SMP machine):
322
323 > cat /proc/interrupts
324
325 CPU0 CPU1
326 0: 1243498 1214548 IO-APIC-edge timer
327 1: 8949 8958 IO-APIC-edge keyboard
328 2: 0 0 XT-PIC cascade
329 5: 11286 10161 IO-APIC-edge soundblaster
330 8: 1 0 IO-APIC-edge rtc
331 9: 27422 27407 IO-APIC-edge 3c503
332 12: 113645 113873 IO-APIC-edge PS/2 Mouse
333 13: 0 0 XT-PIC fpu
334 14: 22491 24012 IO-APIC-edge ide0
335 15: 2183 2415 IO-APIC-edge ide1
336 17: 30564 30414 IO-APIC-level eth0
337 18: 177 164 IO-APIC-level bttv
338 NMI: 2457961 2457959
339 LOC: 2457882 2457881
340 ERR: 2155
341
342NMI is incremented in this case because every timer interrupt generates a NMI
343(Non Maskable Interrupt) which is used by the NMI Watchdog to detect lockups.
344
345LOC is the local interrupt counter of the internal APIC of every CPU.
346
347ERR is incremented in the case of errors in the IO-APIC bus (the bus that
348connects the CPUs in a SMP system. This means that an error has been detected,
349the IO-APIC automatically retry the transmission, so it should not be a big
350problem, but you should read the SMP-FAQ.
351
Joe Korty38e760a2007-10-17 18:04:40 +0200352In 2.6.2* /proc/interrupts was expanded again. This time the goal was for
353/proc/interrupts to display every IRQ vector in use by the system, not
354just those considered 'most important'. The new vectors are:
355
356 THR -- interrupt raised when a machine check threshold counter
357 (typically counting ECC corrected errors of memory or cache) exceeds
358 a configurable threshold. Only available on some systems.
359
360 TRM -- a thermal event interrupt occurs when a temperature threshold
361 has been exceeded for the CPU. This interrupt may also be generated
362 when the temperature drops back to normal.
363
364 SPU -- a spurious interrupt is some interrupt that was raised then lowered
365 by some IO device before it could be fully processed by the APIC. Hence
366 the APIC sees the interrupt but does not know what device it came from.
367 For this case the APIC will generate the interrupt with a IRQ vector
368 of 0xff. This might also be generated by chipset bugs.
369
370 RES, CAL, TLB -- rescheduling, call and TLB flush interrupts are
371 sent from one CPU to another per the needs of the OS. Typically,
372 their statistics are used by kernel developers and interested users to
373 determine the occurance of interrupt of the given type.
374
375The above IRQ vectors are displayed only when relevent. For example,
376the threshold vector does not exist on x86_64 platforms. Others are
377suppressed when the system is a uniprocessor. As of this writing, only
378i386 and x86_64 platforms support the new IRQ vector displays.
379
380Of some interest is the introduction of the /proc/irq directory to 2.4.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700381It could be used to set IRQ to CPU affinity, this means that you can "hook" an
382IRQ to only one CPU, or to exclude a CPU of handling IRQs. The contents of the
383irq subdir is one subdir for each IRQ, and one file; prof_cpu_mask
384
385For example
386 > ls /proc/irq/
387 0 10 12 14 16 18 2 4 6 8 prof_cpu_mask
388 1 11 13 15 17 19 3 5 7 9
389 > ls /proc/irq/0/
390 smp_affinity
391
392The contents of the prof_cpu_mask file and each smp_affinity file for each IRQ
393is the same by default:
394
395 > cat /proc/irq/0/smp_affinity
396 ffffffff
397
Uwe Zeisbergerc30fe7f2006-03-24 18:23:14 +0100398It's a bitmask, in which you can specify which CPUs can handle the IRQ, you can
Linus Torvalds1da177e2005-04-16 15:20:36 -0700399set it by doing:
400
401 > echo 1 > /proc/irq/prof_cpu_mask
402
403This means that only the first CPU will handle the IRQ, but you can also echo 5
Uwe Zeisbergerc30fe7f2006-03-24 18:23:14 +0100404which means that only the first and fourth CPU can handle the IRQ.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700405
406The way IRQs are routed is handled by the IO-APIC, and it's Round Robin
407between all the CPUs which are allowed to handle it. As usual the kernel has
408more info than you and does a better job than you, so the defaults are the
409best choice for almost everyone.
410
411There are three more important subdirectories in /proc: net, scsi, and sys.
412The general rule is that the contents, or even the existence of these
413directories, depend on your kernel configuration. If SCSI is not enabled, the
414directory scsi may not exist. The same is true with the net, which is there
415only when networking support is present in the running kernel.
416
417The slabinfo file gives information about memory usage at the slab level.
418Linux uses slab pools for memory management above page level in version 2.2.
419Commonly used objects have their own slab pool (such as network buffers,
420directory cache, and so on).
421
422..............................................................................
423
424> cat /proc/buddyinfo
425
426Node 0, zone DMA 0 4 5 4 4 3 ...
427Node 0, zone Normal 1 0 0 1 101 8 ...
428Node 0, zone HighMem 2 0 0 1 1 0 ...
429
430Memory fragmentation is a problem under some workloads, and buddyinfo is a
431useful tool for helping diagnose these problems. Buddyinfo will give you a
432clue as to how big an area you can safely allocate, or why a previous
433allocation failed.
434
435Each column represents the number of pages of a certain order which are
436available. In this case, there are 0 chunks of 2^0*PAGE_SIZE available in
437ZONE_DMA, 4 chunks of 2^1*PAGE_SIZE in ZONE_DMA, 101 chunks of 2^4*PAGE_SIZE
438available in ZONE_NORMAL, etc...
439
440..............................................................................
441
442meminfo:
443
444Provides information about distribution and utilization of memory. This
445varies by architecture and compile options. The following is from a
44616GB PIII, which has highmem enabled. You may not have all of these fields.
447
448> cat /proc/meminfo
449
450
451MemTotal: 16344972 kB
452MemFree: 13634064 kB
453Buffers: 3656 kB
454Cached: 1195708 kB
455SwapCached: 0 kB
456Active: 891636 kB
457Inactive: 1077224 kB
458HighTotal: 15597528 kB
459HighFree: 13629632 kB
460LowTotal: 747444 kB
461LowFree: 4432 kB
462SwapTotal: 0 kB
463SwapFree: 0 kB
464Dirty: 968 kB
465Writeback: 0 kB
466Mapped: 280372 kB
467Slab: 684068 kB
468CommitLimit: 7669796 kB
469Committed_AS: 100056 kB
470PageTables: 24448 kB
471VmallocTotal: 112216 kB
472VmallocUsed: 428 kB
473VmallocChunk: 111088 kB
474
475 MemTotal: Total usable ram (i.e. physical ram minus a few reserved
476 bits and the kernel binary code)
477 MemFree: The sum of LowFree+HighFree
478 Buffers: Relatively temporary storage for raw disk blocks
479 shouldn't get tremendously large (20MB or so)
480 Cached: in-memory cache for files read from the disk (the
481 pagecache). Doesn't include SwapCached
482 SwapCached: Memory that once was swapped out, is swapped back in but
483 still also is in the swapfile (if memory is needed it
484 doesn't need to be swapped out AGAIN because it is already
485 in the swapfile. This saves I/O)
486 Active: Memory that has been used more recently and usually not
487 reclaimed unless absolutely necessary.
488 Inactive: Memory which has been less recently used. It is more
489 eligible to be reclaimed for other purposes
490 HighTotal:
491 HighFree: Highmem is all memory above ~860MB of physical memory
492 Highmem areas are for use by userspace programs, or
493 for the pagecache. The kernel must use tricks to access
494 this memory, making it slower to access than lowmem.
495 LowTotal:
496 LowFree: Lowmem is memory which can be used for everything that
Matt LaPlante3f6dee92006-10-03 22:45:33 +0200497 highmem can be used for, but it is also available for the
Linus Torvalds1da177e2005-04-16 15:20:36 -0700498 kernel's use for its own data structures. Among many
499 other things, it is where everything from the Slab is
500 allocated. Bad things happen when you're out of lowmem.
501 SwapTotal: total amount of swap space available
502 SwapFree: Memory which has been evicted from RAM, and is temporarily
503 on the disk
504 Dirty: Memory which is waiting to get written back to the disk
505 Writeback: Memory which is actively being written back to the disk
506 Mapped: files which have been mmaped, such as libraries
Adrian Bunke82443c2006-01-10 00:20:30 +0100507 Slab: in-kernel data structures cache
Linus Torvalds1da177e2005-04-16 15:20:36 -0700508 CommitLimit: Based on the overcommit ratio ('vm.overcommit_ratio'),
509 this is the total amount of memory currently available to
510 be allocated on the system. This limit is only adhered to
511 if strict overcommit accounting is enabled (mode 2 in
512 'vm.overcommit_memory').
513 The CommitLimit is calculated with the following formula:
514 CommitLimit = ('vm.overcommit_ratio' * Physical RAM) + Swap
515 For example, on a system with 1G of physical RAM and 7G
516 of swap with a `vm.overcommit_ratio` of 30 it would
517 yield a CommitLimit of 7.3G.
518 For more details, see the memory overcommit documentation
519 in vm/overcommit-accounting.
520Committed_AS: The amount of memory presently allocated on the system.
521 The committed memory is a sum of all of the memory which
522 has been allocated by processes, even if it has not been
523 "used" by them as of yet. A process which malloc()'s 1G
524 of memory, but only touches 300M of it will only show up
525 as using 300M of memory even if it has the address space
526 allocated for the entire 1G. This 1G is memory which has
527 been "committed" to by the VM and can be used at any time
528 by the allocating application. With strict overcommit
529 enabled on the system (mode 2 in 'vm.overcommit_memory'),
530 allocations which would exceed the CommitLimit (detailed
531 above) will not be permitted. This is useful if one needs
532 to guarantee that processes will not fail due to lack of
533 memory once that memory has been successfully allocated.
534 PageTables: amount of memory dedicated to the lowest level of page
535 tables.
536VmallocTotal: total size of vmalloc memory area
537 VmallocUsed: amount of vmalloc area which is used
538VmallocChunk: largest contigious block of vmalloc area which is free
539
540
5411.3 IDE devices in /proc/ide
542----------------------------
543
544The subdirectory /proc/ide contains information about all IDE devices of which
545the kernel is aware. There is one subdirectory for each IDE controller, the
546file drivers and a link for each IDE device, pointing to the device directory
547in the controller specific subtree.
548
549The file drivers contains general information about the drivers used for the
550IDE devices:
551
552 > cat /proc/ide/drivers
553 ide-cdrom version 4.53
554 ide-disk version 1.08
555
556More detailed information can be found in the controller specific
557subdirectories. These are named ide0, ide1 and so on. Each of these
Kees Cook18d96772007-07-15 23:40:38 -0700558directories contains the files shown in table 1-5.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700559
560
Kees Cook18d96772007-07-15 23:40:38 -0700561Table 1-5: IDE controller info in /proc/ide/ide?
Linus Torvalds1da177e2005-04-16 15:20:36 -0700562..............................................................................
563 File Content
564 channel IDE channel (0 or 1)
565 config Configuration (only for PCI/IDE bridge)
566 mate Mate name
567 model Type/Chipset of IDE controller
568..............................................................................
569
570Each device connected to a controller has a separate subdirectory in the
Kees Cook18d96772007-07-15 23:40:38 -0700571controllers directory. The files listed in table 1-6 are contained in these
Linus Torvalds1da177e2005-04-16 15:20:36 -0700572directories.
573
574
Kees Cook18d96772007-07-15 23:40:38 -0700575Table 1-6: IDE device information
Linus Torvalds1da177e2005-04-16 15:20:36 -0700576..............................................................................
577 File Content
578 cache The cache
579 capacity Capacity of the medium (in 512Byte blocks)
580 driver driver and version
581 geometry physical and logical geometry
582 identify device identify block
583 media media type
584 model device identifier
585 settings device setup
586 smart_thresholds IDE disk management thresholds
587 smart_values IDE disk management values
588..............................................................................
589
590The most interesting file is settings. This file contains a nice overview of
591the drive parameters:
592
593 # cat /proc/ide/ide0/hda/settings
594 name value min max mode
595 ---- ----- --- --- ----
596 bios_cyl 526 0 65535 rw
597 bios_head 255 0 255 rw
598 bios_sect 63 0 63 rw
599 breada_readahead 4 0 127 rw
600 bswap 0 0 1 r
601 file_readahead 72 0 2097151 rw
602 io_32bit 0 0 3 rw
603 keepsettings 0 0 1 rw
604 max_kb_per_request 122 1 127 rw
605 multcount 0 0 8 rw
606 nice1 1 0 1 rw
607 nowerr 0 0 1 rw
608 pio_mode write-only 0 255 w
609 slow 0 0 1 rw
610 unmaskirq 0 0 1 rw
611 using_dma 0 0 1 rw
612
613
6141.4 Networking info in /proc/net
615--------------------------------
616
617The subdirectory /proc/net follows the usual pattern. Table 1-6 shows the
618additional values you get for IP version 6 if you configure the kernel to
619support this. Table 1-7 lists the files and their meaning.
620
621
622Table 1-6: IPv6 info in /proc/net
623..............................................................................
624 File Content
625 udp6 UDP sockets (IPv6)
626 tcp6 TCP sockets (IPv6)
627 raw6 Raw device statistics (IPv6)
628 igmp6 IP multicast addresses, which this host joined (IPv6)
629 if_inet6 List of IPv6 interface addresses
630 ipv6_route Kernel routing table for IPv6
631 rt6_stats Global IPv6 routing tables statistics
632 sockstat6 Socket statistics (IPv6)
633 snmp6 Snmp data (IPv6)
634..............................................................................
635
636
637Table 1-7: Network info in /proc/net
638..............................................................................
639 File Content
640 arp Kernel ARP table
641 dev network devices with statistics
642 dev_mcast the Layer2 multicast groups a device is listening too
643 (interface index, label, number of references, number of bound
644 addresses).
645 dev_stat network device status
646 ip_fwchains Firewall chain linkage
647 ip_fwnames Firewall chain names
648 ip_masq Directory containing the masquerading tables
649 ip_masquerade Major masquerading table
650 netstat Network statistics
651 raw raw device statistics
652 route Kernel routing table
653 rpc Directory containing rpc info
654 rt_cache Routing cache
655 snmp SNMP data
656 sockstat Socket statistics
657 tcp TCP sockets
658 tr_rif Token ring RIF routing table
659 udp UDP sockets
660 unix UNIX domain sockets
661 wireless Wireless interface data (Wavelan etc)
662 igmp IP multicast addresses, which this host joined
663 psched Global packet scheduler parameters.
664 netlink List of PF_NETLINK sockets
665 ip_mr_vifs List of multicast virtual interfaces
666 ip_mr_cache List of multicast routing cache
667..............................................................................
668
669You can use this information to see which network devices are available in
670your system and how much traffic was routed over those devices:
671
672 > cat /proc/net/dev
673 Inter-|Receive |[...
674 face |bytes packets errs drop fifo frame compressed multicast|[...
675 lo: 908188 5596 0 0 0 0 0 0 [...
676 ppp0:15475140 20721 410 0 0 410 0 0 [...
677 eth0: 614530 7085 0 0 0 0 0 1 [...
678
679 ...] Transmit
680 ...] bytes packets errs drop fifo colls carrier compressed
681 ...] 908188 5596 0 0 0 0 0 0
682 ...] 1375103 17405 0 0 0 0 0 0
683 ...] 1703981 5535 0 0 0 3 0 0
684
685In addition, each Channel Bond interface has it's own directory. For
686example, the bond0 device will have a directory called /proc/net/bond0/.
687It will contain information that is specific to that bond, such as the
688current slaves of the bond, the link status of the slaves, and how
689many times the slaves link has failed.
690
6911.5 SCSI info
692-------------
693
694If you have a SCSI host adapter in your system, you'll find a subdirectory
695named after the driver for this adapter in /proc/scsi. You'll also see a list
696of all recognized SCSI devices in /proc/scsi:
697
698 >cat /proc/scsi/scsi
699 Attached devices:
700 Host: scsi0 Channel: 00 Id: 00 Lun: 00
701 Vendor: IBM Model: DGHS09U Rev: 03E0
702 Type: Direct-Access ANSI SCSI revision: 03
703 Host: scsi0 Channel: 00 Id: 06 Lun: 00
704 Vendor: PIONEER Model: CD-ROM DR-U06S Rev: 1.04
705 Type: CD-ROM ANSI SCSI revision: 02
706
707
708The directory named after the driver has one file for each adapter found in
709the system. These files contain information about the controller, including
710the used IRQ and the IO address range. The amount of information shown is
711dependent on the adapter you use. The example shows the output for an Adaptec
712AHA-2940 SCSI adapter:
713
714 > cat /proc/scsi/aic7xxx/0
715
716 Adaptec AIC7xxx driver version: 5.1.19/3.2.4
717 Compile Options:
718 TCQ Enabled By Default : Disabled
719 AIC7XXX_PROC_STATS : Disabled
720 AIC7XXX_RESET_DELAY : 5
721 Adapter Configuration:
722 SCSI Adapter: Adaptec AHA-294X Ultra SCSI host adapter
723 Ultra Wide Controller
724 PCI MMAPed I/O Base: 0xeb001000
725 Adapter SEEPROM Config: SEEPROM found and used.
726 Adaptec SCSI BIOS: Enabled
727 IRQ: 10
728 SCBs: Active 0, Max Active 2,
729 Allocated 15, HW 16, Page 255
730 Interrupts: 160328
731 BIOS Control Word: 0x18b6
732 Adapter Control Word: 0x005b
733 Extended Translation: Enabled
734 Disconnect Enable Flags: 0xffff
735 Ultra Enable Flags: 0x0001
736 Tag Queue Enable Flags: 0x0000
737 Ordered Queue Tag Flags: 0x0000
738 Default Tag Queue Depth: 8
739 Tagged Queue By Device array for aic7xxx host instance 0:
740 {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
741 Actual queue depth per device for aic7xxx host instance 0:
742 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
743 Statistics:
744 (scsi0:0:0:0)
745 Device using Wide/Sync transfers at 40.0 MByte/sec, offset 8
746 Transinfo settings: current(12/8/1/0), goal(12/8/1/0), user(12/15/1/0)
747 Total transfers 160151 (74577 reads and 85574 writes)
748 (scsi0:0:6:0)
749 Device using Narrow/Sync transfers at 5.0 MByte/sec, offset 15
750 Transinfo settings: current(50/15/0/0), goal(50/15/0/0), user(50/15/0/0)
751 Total transfers 0 (0 reads and 0 writes)
752
753
7541.6 Parallel port info in /proc/parport
755---------------------------------------
756
757The directory /proc/parport contains information about the parallel ports of
758your system. It has one subdirectory for each port, named after the port
759number (0,1,2,...).
760
761These directories contain the four files shown in Table 1-8.
762
763
764Table 1-8: Files in /proc/parport
765..............................................................................
766 File Content
767 autoprobe Any IEEE-1284 device ID information that has been acquired.
768 devices list of the device drivers using that port. A + will appear by the
769 name of the device currently using the port (it might not appear
770 against any).
771 hardware Parallel port's base address, IRQ line and DMA channel.
772 irq IRQ that parport is using for that port. This is in a separate
773 file to allow you to alter it by writing a new value in (IRQ
774 number or none).
775..............................................................................
776
7771.7 TTY info in /proc/tty
778-------------------------
779
780Information about the available and actually used tty's can be found in the
781directory /proc/tty.You'll find entries for drivers and line disciplines in
782this directory, as shown in Table 1-9.
783
784
785Table 1-9: Files in /proc/tty
786..............................................................................
787 File Content
788 drivers list of drivers and their usage
789 ldiscs registered line disciplines
790 driver/serial usage statistic and status of single tty lines
791..............................................................................
792
793To see which tty's are currently in use, you can simply look into the file
794/proc/tty/drivers:
795
796 > cat /proc/tty/drivers
797 pty_slave /dev/pts 136 0-255 pty:slave
798 pty_master /dev/ptm 128 0-255 pty:master
799 pty_slave /dev/ttyp 3 0-255 pty:slave
800 pty_master /dev/pty 2 0-255 pty:master
801 serial /dev/cua 5 64-67 serial:callout
802 serial /dev/ttyS 4 64-67 serial
803 /dev/tty0 /dev/tty0 4 0 system:vtmaster
804 /dev/ptmx /dev/ptmx 5 2 system
805 /dev/console /dev/console 5 1 system:console
806 /dev/tty /dev/tty 5 0 system:/dev/tty
807 unknown /dev/tty 4 1-63 console
808
809
8101.8 Miscellaneous kernel statistics in /proc/stat
811-------------------------------------------------
812
813Various pieces of information about kernel activity are available in the
814/proc/stat file. All of the numbers reported in this file are aggregates
815since the system first booted. For a quick look, simply cat the file:
816
817 > cat /proc/stat
Leonardo Chiquittob68f2c32007-10-20 03:03:38 +0200818 cpu 2255 34 2290 22625563 6290 127 456 0
819 cpu0 1132 34 1441 11311718 3675 127 438 0
820 cpu1 1123 0 849 11313845 2614 0 18 0
Linus Torvalds1da177e2005-04-16 15:20:36 -0700821 intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...]
822 ctxt 1990473
823 btime 1062191376
824 processes 2915
825 procs_running 1
826 procs_blocked 0
827
828The very first "cpu" line aggregates the numbers in all of the other "cpuN"
829lines. These numbers identify the amount of time the CPU has spent performing
830different kinds of work. Time units are in USER_HZ (typically hundredths of a
831second). The meanings of the columns are as follows, from left to right:
832
833- user: normal processes executing in user mode
834- nice: niced processes executing in user mode
835- system: processes executing in kernel mode
836- idle: twiddling thumbs
837- iowait: waiting for I/O to complete
838- irq: servicing interrupts
839- softirq: servicing softirqs
Leonardo Chiquittob68f2c32007-10-20 03:03:38 +0200840- steal: involuntary wait
Linus Torvalds1da177e2005-04-16 15:20:36 -0700841
842The "intr" line gives counts of interrupts serviced since boot time, for each
843of the possible system interrupts. The first column is the total of all
844interrupts serviced; each subsequent column is the total for that particular
845interrupt.
846
847The "ctxt" line gives the total number of context switches across all CPUs.
848
849The "btime" line gives the time at which the system booted, in seconds since
850the Unix epoch.
851
852The "processes" line gives the number of processes and threads created, which
853includes (but is not limited to) those created by calls to the fork() and
854clone() system calls.
855
856The "procs_running" line gives the number of processes currently running on
857CPUs.
858
859The "procs_blocked" line gives the number of processes currently blocked,
860waiting for I/O to complete.
861
Alex Tomasc9de5602008-01-29 00:19:52 -05008621.9 Ext4 file system parameters
863------------------------------
864Ext4 file system have one directory per partition under /proc/fs/ext4/
865# ls /proc/fs/ext4/hdc/
866group_prealloc max_to_scan mb_groups mb_history min_to_scan order2_req
867stats stream_req
868
869mb_groups:
870This file gives the details of mutiblock allocator buddy cache of free blocks
871
872mb_history:
873Multiblock allocation history.
874
875stats:
876This file indicate whether the multiblock allocator should start collecting
877statistics. The statistics are shown during unmount
878
879group_prealloc:
880The multiblock allocator normalize the block allocation request to
881group_prealloc filesystem blocks if we don't have strip value set.
882The stripe value can be specified at mount time or during mke2fs.
883
884max_to_scan:
885How long multiblock allocator can look for a best extent (in found extents)
886
887min_to_scan:
888How long multiblock allocator must look for a best extent
889
890order2_req:
891Multiblock allocator use 2^N search using buddies only for requests greater
892than or equal to order2_req. The request size is specfied in file system
893blocks. A value of 2 indicate only if the requests are greater than or equal
894to 4 blocks.
895
896stream_req:
897Files smaller than stream_req are served by the stream allocator, whose
898purpose is to pack requests as close each to other as possible to
899produce smooth I/O traffic. Avalue of 16 indicate that file smaller than 16
900filesystem block size will use group based preallocation.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700901
902------------------------------------------------------------------------------
903Summary
904------------------------------------------------------------------------------
905The /proc file system serves information about the running system. It not only
906allows access to process data but also allows you to request the kernel status
907by reading files in the hierarchy.
908
909The directory structure of /proc reflects the types of information and makes
910it easy, if not obvious, where to look for specific data.
911------------------------------------------------------------------------------
912
913------------------------------------------------------------------------------
914CHAPTER 2: MODIFYING SYSTEM PARAMETERS
915------------------------------------------------------------------------------
916
917------------------------------------------------------------------------------
918In This Chapter
919------------------------------------------------------------------------------
920* Modifying kernel parameters by writing into files found in /proc/sys
921* Exploring the files which modify certain parameters
922* Review of the /proc/sys file tree
923------------------------------------------------------------------------------
924
925
926A very interesting part of /proc is the directory /proc/sys. This is not only
927a source of information, it also allows you to change parameters within the
928kernel. Be very careful when attempting this. You can optimize your system,
929but you can also cause it to crash. Never alter kernel parameters on a
930production system. Set up a development machine and test to make sure that
931everything works the way you want it to. You may have no alternative but to
932reboot the machine once an error has been made.
933
934To change a value, simply echo the new value into the file. An example is
935given below in the section on the file system data. You need to be root to do
936this. You can create your own boot script to perform this every time your
937system boots.
938
939The files in /proc/sys can be used to fine tune and monitor miscellaneous and
940general things in the operation of the Linux kernel. Since some of the files
941can inadvertently disrupt your system, it is advisable to read both
942documentation and source before actually making adjustments. In any case, be
943very careful when writing to any of these files. The entries in /proc may
944change slightly between the 2.1.* and the 2.2 kernel, so if there is any doubt
945review the kernel documentation in the directory /usr/src/linux/Documentation.
946This chapter is heavily based on the documentation included in the pre 2.2
947kernels, and became part of it in version 2.2.1 of the Linux kernel.
948
9492.1 /proc/sys/fs - File system data
950-----------------------------------
951
952This subdirectory contains specific file system, file handle, inode, dentry
953and quota information.
954
955Currently, these files are in /proc/sys/fs:
956
957dentry-state
958------------
959
960Status of the directory cache. Since directory entries are dynamically
961allocated and deallocated, this file indicates the current status. It holds
962six values, in which the last two are not used and are always zero. The others
963are listed in table 2-1.
964
965
966Table 2-1: Status files of the directory cache
967..............................................................................
968 File Content
969 nr_dentry Almost always zero
970 nr_unused Number of unused cache entries
971 age_limit
972 in seconds after the entry may be reclaimed, when memory is short
973 want_pages internally
974..............................................................................
975
976dquot-nr and dquot-max
977----------------------
978
979The file dquot-max shows the maximum number of cached disk quota entries.
980
981The file dquot-nr shows the number of allocated disk quota entries and the
982number of free disk quota entries.
983
984If the number of available cached disk quotas is very low and you have a large
985number of simultaneous system users, you might want to raise the limit.
986
987file-nr and file-max
988--------------------
989
990The kernel allocates file handles dynamically, but doesn't free them again at
991this time.
992
993The value in file-max denotes the maximum number of file handles that the
994Linux kernel will allocate. When you get a lot of error messages about running
995out of file handles, you might want to raise this limit. The default value is
99610% of RAM in kilobytes. To change it, just write the new number into the
997file:
998
999 # cat /proc/sys/fs/file-max
1000 4096
1001 # echo 8192 > /proc/sys/fs/file-max
1002 # cat /proc/sys/fs/file-max
1003 8192
1004
1005
1006This method of revision is useful for all customizable parameters of the
1007kernel - simply echo the new value to the corresponding file.
1008
1009Historically, the three values in file-nr denoted the number of allocated file
1010handles, the number of allocated but unused file handles, and the maximum
1011number of file handles. Linux 2.6 always reports 0 as the number of free file
1012handles -- this is not an error, it just means that the number of allocated
1013file handles exactly matches the number of used file handles.
1014
1015Attempts to allocate more file descriptors than file-max are reported with
1016printk, look for "VFS: file-max limit <number> reached".
1017
1018inode-state and inode-nr
1019------------------------
1020
1021The file inode-nr contains the first two items from inode-state, so we'll skip
1022to that file...
1023
1024inode-state contains two actual numbers and five dummy values. The numbers
1025are nr_inodes and nr_free_inodes (in order of appearance).
1026
1027nr_inodes
1028~~~~~~~~~
1029
1030Denotes the number of inodes the system has allocated. This number will
1031grow and shrink dynamically.
1032
Eric Dumazet9cfe0152008-02-06 01:37:16 -08001033nr_open
1034-------
1035
1036Denotes the maximum number of file-handles a process can
1037allocate. Default value is 1024*1024 (1048576) which should be
1038enough for most machines. Actual limit depends on RLIMIT_NOFILE
1039resource limit.
1040
Linus Torvalds1da177e2005-04-16 15:20:36 -07001041nr_free_inodes
1042--------------
1043
1044Represents the number of free inodes. Ie. The number of inuse inodes is
1045(nr_inodes - nr_free_inodes).
1046
Linus Torvalds1da177e2005-04-16 15:20:36 -07001047aio-nr and aio-max-nr
1048---------------------
1049
1050aio-nr is the running total of the number of events specified on the
1051io_setup system call for all currently active aio contexts. If aio-nr
1052reaches aio-max-nr then io_setup will fail with EAGAIN. Note that
1053raising aio-max-nr does not result in the pre-allocation or re-sizing
1054of any kernel data structures.
1055
10562.2 /proc/sys/fs/binfmt_misc - Miscellaneous binary formats
1057-----------------------------------------------------------
1058
1059Besides these files, there is the subdirectory /proc/sys/fs/binfmt_misc. This
1060handles the kernel support for miscellaneous binary formats.
1061
1062Binfmt_misc provides the ability to register additional binary formats to the
1063Kernel without compiling an additional module/kernel. Therefore, binfmt_misc
1064needs to know magic numbers at the beginning or the filename extension of the
1065binary.
1066
1067It works by maintaining a linked list of structs that contain a description of
1068a binary format, including a magic with size (or the filename extension),
1069offset and mask, and the interpreter name. On request it invokes the given
1070interpreter with the original program as argument, as binfmt_java and
1071binfmt_em86 and binfmt_mz do. Since binfmt_misc does not define any default
1072binary-formats, you have to register an additional binary-format.
1073
1074There are two general files in binfmt_misc and one file per registered format.
1075The two general files are register and status.
1076
1077Registering a new binary format
1078-------------------------------
1079
1080To register a new binary format you have to issue the command
1081
1082 echo :name:type:offset:magic:mask:interpreter: > /proc/sys/fs/binfmt_misc/register
1083
1084
1085
1086with appropriate name (the name for the /proc-dir entry), offset (defaults to
10870, if omitted), magic, mask (which can be omitted, defaults to all 0xff) and
1088last but not least, the interpreter that is to be invoked (for example and
1089testing /bin/echo). Type can be M for usual magic matching or E for filename
1090extension matching (give extension in place of magic).
1091
1092Check or reset the status of the binary format handler
1093------------------------------------------------------
1094
1095If you do a cat on the file /proc/sys/fs/binfmt_misc/status, you will get the
1096current status (enabled/disabled) of binfmt_misc. Change the status by echoing
10970 (disables) or 1 (enables) or -1 (caution: this clears all previously
1098registered binary formats) to status. For example echo 0 > status to disable
1099binfmt_misc (temporarily).
1100
1101Status of a single handler
1102--------------------------
1103
1104Each registered handler has an entry in /proc/sys/fs/binfmt_misc. These files
1105perform the same function as status, but their scope is limited to the actual
1106binary format. By cating this file, you also receive all related information
1107about the interpreter/magic of the binfmt.
1108
1109Example usage of binfmt_misc (emulate binfmt_java)
1110--------------------------------------------------
1111
1112 cd /proc/sys/fs/binfmt_misc
1113 echo ':Java:M::\xca\xfe\xba\xbe::/usr/local/java/bin/javawrapper:' > register
1114 echo ':HTML:E::html::/usr/local/java/bin/appletviewer:' > register
1115 echo ':Applet:M::<!--applet::/usr/local/java/bin/appletviewer:' > register
1116 echo ':DEXE:M::\x0eDEX::/usr/bin/dosexec:' > register
1117
1118
1119These four lines add support for Java executables and Java applets (like
1120binfmt_java, additionally recognizing the .html extension with no need to put
1121<!--applet> to every applet file). You have to install the JDK and the
1122shell-script /usr/local/java/bin/javawrapper too. It works around the
1123brokenness of the Java filename handling. To add a Java binary, just create a
1124link to the class-file somewhere in the path.
1125
11262.3 /proc/sys/kernel - general kernel parameters
1127------------------------------------------------
1128
1129This directory reflects general kernel behaviors. As I've said before, the
1130contents depend on your configuration. Here you'll find the most important
1131files, along with descriptions of what they mean and how to use them.
1132
1133acct
1134----
1135
1136The file contains three values; highwater, lowwater, and frequency.
1137
1138It exists only when BSD-style process accounting is enabled. These values
1139control its behavior. If the free space on the file system where the log lives
1140goes below lowwater percentage, accounting suspends. If it goes above
1141highwater percentage, accounting resumes. Frequency determines how often you
1142check the amount of free space (value is in seconds). Default settings are: 4,
11432, and 30. That is, suspend accounting if there is less than 2 percent free;
1144resume it if we have a value of 3 or more percent; consider information about
1145the amount of free space valid for 30 seconds
1146
1147ctrl-alt-del
1148------------
1149
1150When the value in this file is 0, ctrl-alt-del is trapped and sent to the init
1151program to handle a graceful restart. However, when the value is greater that
1152zero, Linux's reaction to this key combination will be an immediate reboot,
1153without syncing its dirty buffers.
1154
1155[NOTE]
1156 When a program (like dosemu) has the keyboard in raw mode, the
1157 ctrl-alt-del is intercepted by the program before it ever reaches the
1158 kernel tty layer, and it is up to the program to decide what to do with
1159 it.
1160
1161domainname and hostname
1162-----------------------
1163
1164These files can be controlled to set the NIS domainname and hostname of your
1165box. For the classic darkstar.frop.org a simple:
1166
1167 # echo "darkstar" > /proc/sys/kernel/hostname
1168 # echo "frop.org" > /proc/sys/kernel/domainname
1169
1170
1171would suffice to set your hostname and NIS domainname.
1172
1173osrelease, ostype and version
1174-----------------------------
1175
1176The names make it pretty obvious what these fields contain:
1177
1178 > cat /proc/sys/kernel/osrelease
1179 2.2.12
1180
1181 > cat /proc/sys/kernel/ostype
1182 Linux
1183
1184 > cat /proc/sys/kernel/version
1185 #4 Fri Oct 1 12:41:14 PDT 1999
1186
1187
1188The files osrelease and ostype should be clear enough. Version needs a little
1189more clarification. The #4 means that this is the 4th kernel built from this
1190source base and the date after it indicates the time the kernel was built. The
1191only way to tune these values is to rebuild the kernel.
1192
1193panic
1194-----
1195
1196The value in this file represents the number of seconds the kernel waits
1197before rebooting on a panic. When you use the software watchdog, the
1198recommended setting is 60. If set to 0, the auto reboot after a kernel panic
1199is disabled, which is the default setting.
1200
1201printk
1202------
1203
1204The four values in printk denote
1205* console_loglevel,
1206* default_message_loglevel,
1207* minimum_console_loglevel and
1208* default_console_loglevel
1209respectively.
1210
1211These values influence printk() behavior when printing or logging error
1212messages, which come from inside the kernel. See syslog(2) for more
1213information on the different log levels.
1214
1215console_loglevel
1216----------------
1217
1218Messages with a higher priority than this will be printed to the console.
1219
1220default_message_level
1221---------------------
1222
1223Messages without an explicit priority will be printed with this priority.
1224
1225minimum_console_loglevel
1226------------------------
1227
1228Minimum (highest) value to which the console_loglevel can be set.
1229
1230default_console_loglevel
1231------------------------
1232
1233Default value for console_loglevel.
1234
1235sg-big-buff
1236-----------
1237
1238This file shows the size of the generic SCSI (sg) buffer. At this point, you
1239can't tune it yet, but you can change it at compile time by editing
1240include/scsi/sg.h and changing the value of SG_BIG_BUFF.
1241
1242If you use a scanner with SANE (Scanner Access Now Easy) you might want to set
1243this to a higher value. Refer to the SANE documentation on this issue.
1244
1245modprobe
1246--------
1247
1248The location where the modprobe binary is located. The kernel uses this
1249program to load modules on demand.
1250
1251unknown_nmi_panic
1252-----------------
1253
1254The value in this file affects behavior of handling NMI. When the value is
1255non-zero, unknown NMI is trapped and then panic occurs. At that time, kernel
1256debugging information is displayed on console.
1257
1258NMI switch that most IA32 servers have fires unknown NMI up, for example.
1259If a system hangs up, try pressing the NMI switch.
1260
Don Zickuse33e89a2006-09-26 10:52:27 +02001261nmi_watchdog
1262------------
1263
1264Enables/Disables the NMI watchdog on x86 systems. When the value is non-zero
1265the NMI watchdog is enabled and will continuously test all online cpus to
1266determine whether or not they are still functioning properly.
1267
1268Because the NMI watchdog shares registers with oprofile, by disabling the NMI
1269watchdog, oprofile may have more registers to utilize.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001270
Kees Cook5096add2007-05-08 00:26:04 -07001271maps_protect
1272------------
1273
1274Enables/Disables the protection of the per-process proc entries "maps" and
1275"smaps". When enabled, the contents of these files are visible only to
1276readers that are allowed to ptrace() the given process.
1277
Linus Torvalds1da177e2005-04-16 15:20:36 -07001278
12792.4 /proc/sys/vm - The virtual memory subsystem
1280-----------------------------------------------
1281
1282The files in this directory can be used to tune the operation of the virtual
1283memory (VM) subsystem of the Linux kernel.
1284
1285vfs_cache_pressure
1286------------------
1287
1288Controls the tendency of the kernel to reclaim the memory which is used for
1289caching of directory and inode objects.
1290
1291At the default value of vfs_cache_pressure=100 the kernel will attempt to
1292reclaim dentries and inodes at a "fair" rate with respect to pagecache and
1293swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer
1294to retain dentry and inode caches. Increasing vfs_cache_pressure beyond 100
1295causes the kernel to prefer to reclaim dentries and inodes.
1296
1297dirty_background_ratio
1298----------------------
1299
1300Contains, as a percentage of total system memory, the number of pages at which
1301the pdflush background writeback daemon will start writing out dirty data.
1302
1303dirty_ratio
1304-----------------
1305
1306Contains, as a percentage of total system memory, the number of pages at which
1307a process which is generating disk writes will itself start writing out dirty
1308data.
1309
1310dirty_writeback_centisecs
1311-------------------------
1312
1313The pdflush writeback daemons will periodically wake up and write `old' data
1314out to disk. This tunable expresses the interval between those wakeups, in
1315100'ths of a second.
1316
1317Setting this to zero disables periodic writeback altogether.
1318
1319dirty_expire_centisecs
1320----------------------
1321
1322This tunable is used to define when dirty data is old enough to be eligible
1323for writeout by the pdflush daemons. It is expressed in 100'ths of a second.
1324Data which has been dirty in-memory for longer than this interval will be
1325written out next time a pdflush daemon wakes up.
1326
Bron Gondwana195cf452008-02-04 22:29:20 -08001327highmem_is_dirtyable
1328--------------------
1329
1330Only present if CONFIG_HIGHMEM is set.
1331
1332This defaults to 0 (false), meaning that the ratios set above are calculated
1333as a percentage of lowmem only. This protects against excessive scanning
1334in page reclaim, swapping and general VM distress.
1335
1336Setting this to 1 can be useful on 32 bit machines where you want to make
1337random changes within an MMAPed file that is larger than your available
1338lowmem without causing large quantities of random IO. Is is safe if the
1339behavior of all programs running on the machine is known and memory will
1340not be otherwise stressed.
1341
Linus Torvalds1da177e2005-04-16 15:20:36 -07001342legacy_va_layout
1343----------------
1344
1345If non-zero, this sysctl disables the new 32-bit mmap mmap layout - the kernel
1346will use the legacy (2.4) layout for all processes.
1347
Yasunori Goto7786fa92008-02-04 22:29:32 -08001348lowmem_reserve_ratio
Linus Torvalds1da177e2005-04-16 15:20:36 -07001349---------------------
1350
1351For some specialised workloads on highmem machines it is dangerous for
1352the kernel to allow process memory to be allocated from the "lowmem"
1353zone. This is because that memory could then be pinned via the mlock()
1354system call, or by unavailability of swapspace.
1355
1356And on large highmem machines this lack of reclaimable lowmem memory
1357can be fatal.
1358
1359So the Linux page allocator has a mechanism which prevents allocations
1360which _could_ use highmem from using too much lowmem. This means that
1361a certain amount of lowmem is defended from the possibility of being
1362captured into pinned user memory.
1363
1364(The same argument applies to the old 16 megabyte ISA DMA region. This
1365mechanism will also defend that region from allocations which could use
1366highmem or lowmem).
1367
Yasunori Goto7786fa92008-02-04 22:29:32 -08001368The `lowmem_reserve_ratio' tunable determines how aggressive the kernel is
1369in defending these lower zones.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001370
1371If you have a machine which uses highmem or ISA DMA and your
1372applications are using mlock(), or if you are running with no swap then
Yasunori Goto7786fa92008-02-04 22:29:32 -08001373you probably should change the lowmem_reserve_ratio setting.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001374
Yasunori Goto7786fa92008-02-04 22:29:32 -08001375The lowmem_reserve_ratio is an array. You can see them by reading this file.
1376-
1377% cat /proc/sys/vm/lowmem_reserve_ratio
1378256 256 32
1379-
1380Note: # of this elements is one fewer than number of zones. Because the highest
1381 zone's value is not necessary for following calculation.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001382
Yasunori Goto7786fa92008-02-04 22:29:32 -08001383But, these values are not used directly. The kernel calculates # of protection
1384pages for each zones from them. These are shown as array of protection pages
1385in /proc/zoneinfo like followings. (This is an example of x86-64 box).
1386Each zone has an array of protection pages like this.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001387
Yasunori Goto7786fa92008-02-04 22:29:32 -08001388-
1389Node 0, zone DMA
1390 pages free 1355
1391 min 3
1392 low 3
1393 high 4
1394 :
1395 :
1396 numa_other 0
1397 protection: (0, 2004, 2004, 2004)
1398 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1399 pagesets
1400 cpu: 0 pcp: 0
1401 :
1402-
1403These protections are added to score to judge whether this zone should be used
1404for page allocation or should be reclaimed.
1405
1406In this example, if normal pages (index=2) are required to this DMA zone and
1407pages_high is used for watermark, the kernel judges this zone should not be
1408used because pages_free(1355) is smaller than watermark + protection[2]
1409(4 + 2004 = 2008). If this protection value is 0, this zone would be used for
1410normal page requirement. If requirement is DMA zone(index=0), protection[0]
1411(=0) is used.
1412
1413zone[i]'s protection[j] is calculated by following exprssion.
1414
1415(i < j):
1416 zone[i]->protection[j]
1417 = (total sums of present_pages from zone[i+1] to zone[j] on the node)
1418 / lowmem_reserve_ratio[i];
1419(i = j):
1420 (should not be protected. = 0;
1421(i > j):
1422 (not necessary, but looks 0)
1423
1424The default values of lowmem_reserve_ratio[i] are
1425 256 (if zone[i] means DMA or DMA32 zone)
1426 32 (others).
1427As above expression, they are reciprocal number of ratio.
1428256 means 1/256. # of protection pages becomes about "0.39%" of total present
1429pages of higher zones on the node.
1430
1431If you would like to protect more pages, smaller values are effective.
1432The minimum value is 1 (1/1 -> 100%).
Linus Torvalds1da177e2005-04-16 15:20:36 -07001433
1434page-cluster
1435------------
1436
1437page-cluster controls the number of pages which are written to swap in
1438a single attempt. The swap I/O size.
1439
1440It is a logarithmic value - setting it to zero means "1 page", setting
1441it to 1 means "2 pages", setting it to 2 means "4 pages", etc.
1442
1443The default value is three (eight pages at a time). There may be some
1444small benefits in tuning this to a different value if your workload is
1445swap-intensive.
1446
1447overcommit_memory
1448-----------------
1449
Chuck Ebbertaf97c722005-09-09 13:10:15 -07001450Controls overcommit of system memory, possibly allowing processes
1451to allocate (but not use) more memory than is actually available.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001452
Chuck Ebbertaf97c722005-09-09 13:10:15 -07001453
14540 - Heuristic overcommit handling. Obvious overcommits of
1455 address space are refused. Used for a typical system. It
1456 ensures a seriously wild allocation fails while allowing
1457 overcommit to reduce swap usage. root is allowed to
Matt LaPlante53cb4722006-10-03 22:55:17 +02001458 allocate slightly more memory in this mode. This is the
Chuck Ebbertaf97c722005-09-09 13:10:15 -07001459 default.
1460
14611 - Always overcommit. Appropriate for some scientific
1462 applications.
1463
14642 - Don't overcommit. The total address space commit
1465 for the system is not permitted to exceed swap plus a
1466 configurable percentage (default is 50) of physical RAM.
1467 Depending on the percentage you use, in most situations
1468 this means a process will not be killed while attempting
1469 to use already-allocated memory but will receive errors
1470 on memory allocation as appropriate.
1471
1472overcommit_ratio
1473----------------
1474
1475Percentage of physical memory size to include in overcommit calculations
1476(see above.)
1477
1478Memory allocation limit = swapspace + physmem * (overcommit_ratio / 100)
1479
1480 swapspace = total size of all swap areas
1481 physmem = size of physical memory in system
Linus Torvalds1da177e2005-04-16 15:20:36 -07001482
1483nr_hugepages and hugetlb_shm_group
1484----------------------------------
1485
1486nr_hugepages configures number of hugetlb page reserved for the system.
1487
1488hugetlb_shm_group contains group id that is allowed to create SysV shared
1489memory segment using hugetlb page.
1490
Mel Gormaned7ed362007-07-17 04:03:14 -07001491hugepages_treat_as_movable
1492--------------------------
1493
1494This parameter is only useful when kernelcore= is specified at boot time to
1495create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages
1496are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero
1497value written to hugepages_treat_as_movable allows huge pages to be allocated
1498from ZONE_MOVABLE.
1499
1500Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge
1501pages pool can easily grow or shrink within. Assuming that applications are
1502not running that mlock() a lot of memory, it is likely the huge pages pool
1503can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value
1504into nr_hugepages and triggering page reclaim.
1505
Linus Torvalds1da177e2005-04-16 15:20:36 -07001506laptop_mode
1507-----------
1508
1509laptop_mode is a knob that controls "laptop mode". All the things that are
Randy Dunlapa09a20b2008-03-04 13:41:26 -08001510controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001511
1512block_dump
1513----------
1514
1515block_dump enables block I/O debugging when set to a nonzero value. More
Randy Dunlapa09a20b2008-03-04 13:41:26 -08001516information on block I/O debugging is in Documentation/laptops/laptop-mode.txt.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001517
1518swap_token_timeout
1519------------------
1520
1521This file contains valid hold time of swap out protection token. The Linux
1522VM has token based thrashing control mechanism and uses the token to prevent
1523unnecessary page faults in thrashing situation. The unit of the value is
1524second. The value would be useful to tune thrashing behavior.
1525
Andrew Morton9d0243b2006-01-08 01:00:39 -08001526drop_caches
1527-----------
1528
1529Writing to this will cause the kernel to drop clean caches, dentries and
1530inodes from memory, causing that memory to become free.
1531
1532To free pagecache:
1533 echo 1 > /proc/sys/vm/drop_caches
1534To free dentries and inodes:
1535 echo 2 > /proc/sys/vm/drop_caches
1536To free pagecache, dentries and inodes:
1537 echo 3 > /proc/sys/vm/drop_caches
1538
1539As this is a non-destructive operation and dirty objects are not freeable, the
1540user should run `sync' first.
1541
1542
Linus Torvalds1da177e2005-04-16 15:20:36 -070015432.5 /proc/sys/dev - Device specific parameters
1544----------------------------------------------
1545
1546Currently there is only support for CDROM drives, and for those, there is only
1547one read-only file containing information about the CD-ROM drives attached to
1548the system:
1549
1550 >cat /proc/sys/dev/cdrom/info
1551 CD-ROM information, Id: cdrom.c 2.55 1999/04/25
1552
1553 drive name: sr0 hdb
1554 drive speed: 32 40
1555 drive # of slots: 1 0
1556 Can close tray: 1 1
1557 Can open tray: 1 1
1558 Can lock tray: 1 1
1559 Can change speed: 1 1
1560 Can select disk: 0 1
1561 Can read multisession: 1 1
1562 Can read MCN: 1 1
1563 Reports media changed: 1 1
1564 Can play audio: 1 1
1565
1566
1567You see two drives, sr0 and hdb, along with a list of their features.
1568
15692.6 /proc/sys/sunrpc - Remote procedure calls
1570---------------------------------------------
1571
1572This directory contains four files, which enable or disable debugging for the
1573RPC functions NFS, NFS-daemon, RPC and NLM. The default values are 0. They can
1574be set to one to turn debugging on. (The default value is 0 for each)
1575
15762.7 /proc/sys/net - Networking stuff
1577------------------------------------
1578
1579The interface to the networking parts of the kernel is located in
1580/proc/sys/net. Table 2-3 shows all possible subdirectories. You may see only
1581some of them, depending on your kernel's configuration.
1582
1583
1584Table 2-3: Subdirectories in /proc/sys/net
1585..............................................................................
1586 Directory Content Directory Content
1587 core General parameter appletalk Appletalk protocol
1588 unix Unix domain sockets netrom NET/ROM
1589 802 E802 protocol ax25 AX25
1590 ethernet Ethernet protocol rose X.25 PLP layer
1591 ipv4 IP version 4 x25 X.25 protocol
1592 ipx IPX token-ring IBM token ring
1593 bridge Bridging decnet DEC net
1594 ipv6 IP version 6
1595..............................................................................
1596
1597We will concentrate on IP networking here. Since AX15, X.25, and DEC Net are
1598only minor players in the Linux world, we'll skip them in this chapter. You'll
1599find some short info on Appletalk and IPX further on in this chapter. Review
1600the online documentation and the kernel source to get a detailed view of the
1601parameters for those protocols. In this section we'll discuss the
1602subdirectories printed in bold letters in the table above. As default values
1603are suitable for most needs, there is no need to change these values.
1604
1605/proc/sys/net/core - Network core options
1606-----------------------------------------
1607
1608rmem_default
1609------------
1610
1611The default setting of the socket receive buffer in bytes.
1612
1613rmem_max
1614--------
1615
1616The maximum receive socket buffer size in bytes.
1617
1618wmem_default
1619------------
1620
1621The default setting (in bytes) of the socket send buffer.
1622
1623wmem_max
1624--------
1625
1626The maximum send socket buffer size in bytes.
1627
1628message_burst and message_cost
1629------------------------------
1630
1631These parameters are used to limit the warning messages written to the kernel
1632log from the networking code. They enforce a rate limit to make a
1633denial-of-service attack impossible. A higher message_cost factor, results in
1634fewer messages that will be written. Message_burst controls when messages will
1635be dropped. The default settings limit warning messages to one every five
1636seconds.
1637
Stephen Hemmingera2a316f2007-03-08 20:41:08 -08001638warnings
1639--------
1640
1641This controls console messages from the networking stack that can occur because
1642of problems on the network like duplicate address or bad checksums. Normally,
1643this should be enabled, but if the problem persists the messages can be
1644disabled.
1645
1646
Linus Torvalds1da177e2005-04-16 15:20:36 -07001647netdev_max_backlog
1648------------------
1649
1650Maximum number of packets, queued on the INPUT side, when the interface
1651receives packets faster than kernel can process them.
1652
1653optmem_max
1654----------
1655
1656Maximum ancillary buffer size allowed per socket. Ancillary data is a sequence
1657of struct cmsghdr structures with appended data.
1658
1659/proc/sys/net/unix - Parameters for Unix domain sockets
1660-------------------------------------------------------
1661
1662There are only two files in this subdirectory. They control the delays for
1663deleting and destroying socket descriptors.
1664
16652.8 /proc/sys/net/ipv4 - IPV4 settings
1666--------------------------------------
1667
1668IP version 4 is still the most used protocol in Unix networking. It will be
1669replaced by IP version 6 in the next couple of years, but for the moment it's
1670the de facto standard for the internet and is used in most networking
1671environments around the world. Because of the importance of this protocol,
1672we'll have a deeper look into the subtree controlling the behavior of the IPv4
1673subsystem of the Linux kernel.
1674
1675Let's start with the entries in /proc/sys/net/ipv4.
1676
1677ICMP settings
1678-------------
1679
1680icmp_echo_ignore_all and icmp_echo_ignore_broadcasts
1681----------------------------------------------------
1682
1683Turn on (1) or off (0), if the kernel should ignore all ICMP ECHO requests, or
1684just those to broadcast and multicast addresses.
1685
1686Please note that if you accept ICMP echo requests with a broadcast/multi\-cast
1687destination address your network may be used as an exploder for denial of
1688service packet flooding attacks to other hosts.
1689
1690icmp_destunreach_rate, icmp_echoreply_rate, icmp_paramprob_rate and icmp_timeexeed_rate
1691---------------------------------------------------------------------------------------
1692
1693Sets limits for sending ICMP packets to specific targets. A value of zero
1694disables all limiting. Any positive value sets the maximum package rate in
1695hundredth of a second (on Intel systems).
1696
1697IP settings
1698-----------
1699
1700ip_autoconfig
1701-------------
1702
1703This file contains the number one if the host received its IP configuration by
1704RARP, BOOTP, DHCP or a similar mechanism. Otherwise it is zero.
1705
1706ip_default_ttl
1707--------------
1708
1709TTL (Time To Live) for IPv4 interfaces. This is simply the maximum number of
1710hops a packet may travel.
1711
1712ip_dynaddr
1713----------
1714
1715Enable dynamic socket address rewriting on interface address change. This is
1716useful for dialup interface with changing IP addresses.
1717
1718ip_forward
1719----------
1720
1721Enable or disable forwarding of IP packages between interfaces. Changing this
1722value resets all other parameters to their default values. They differ if the
1723kernel is configured as host or router.
1724
1725ip_local_port_range
1726-------------------
1727
1728Range of ports used by TCP and UDP to choose the local port. Contains two
1729numbers, the first number is the lowest port, the second number the highest
1730local port. Default is 1024-4999. Should be changed to 32768-61000 for
1731high-usage systems.
1732
1733ip_no_pmtu_disc
1734---------------
1735
1736Global switch to turn path MTU discovery off. It can also be set on a per
1737socket basis by the applications or on a per route basis.
1738
1739ip_masq_debug
1740-------------
1741
1742Enable/disable debugging of IP masquerading.
1743
1744IP fragmentation settings
1745-------------------------
1746
1747ipfrag_high_trash and ipfrag_low_trash
1748--------------------------------------
1749
1750Maximum memory used to reassemble IP fragments. When ipfrag_high_thresh bytes
1751of memory is allocated for this purpose, the fragment handler will toss
1752packets until ipfrag_low_thresh is reached.
1753
1754ipfrag_time
1755-----------
1756
1757Time in seconds to keep an IP fragment in memory.
1758
1759TCP settings
1760------------
1761
1762tcp_ecn
1763-------
1764
Matt LaPlantefa00e7e2006-11-30 04:55:36 +01001765This file controls the use of the ECN bit in the IPv4 headers. This is a new
Linus Torvalds1da177e2005-04-16 15:20:36 -07001766feature about Explicit Congestion Notification, but some routers and firewalls
Matt LaPlantefa00e7e2006-11-30 04:55:36 +01001767block traffic that has this bit set, so it could be necessary to echo 0 to
1768/proc/sys/net/ipv4/tcp_ecn if you want to talk to these sites. For more info
Linus Torvalds1da177e2005-04-16 15:20:36 -07001769you could read RFC2481.
1770
1771tcp_retrans_collapse
1772--------------------
1773
1774Bug-to-bug compatibility with some broken printers. On retransmit, try to send
1775larger packets to work around bugs in certain TCP stacks. Can be turned off by
1776setting it to zero.
1777
1778tcp_keepalive_probes
1779--------------------
1780
1781Number of keep alive probes TCP sends out, until it decides that the
1782connection is broken.
1783
1784tcp_keepalive_time
1785------------------
1786
1787How often TCP sends out keep alive messages, when keep alive is enabled. The
1788default is 2 hours.
1789
1790tcp_syn_retries
1791---------------
1792
1793Number of times initial SYNs for a TCP connection attempt will be
1794retransmitted. Should not be higher than 255. This is only the timeout for
1795outgoing connections, for incoming connections the number of retransmits is
1796defined by tcp_retries1.
1797
1798tcp_sack
1799--------
1800
1801Enable select acknowledgments after RFC2018.
1802
1803tcp_timestamps
1804--------------
1805
1806Enable timestamps as defined in RFC1323.
1807
1808tcp_stdurg
1809----------
1810
1811Enable the strict RFC793 interpretation of the TCP urgent pointer field. The
1812default is to use the BSD compatible interpretation of the urgent pointer
1813pointing to the first byte after the urgent data. The RFC793 interpretation is
1814to have it point to the last byte of urgent data. Enabling this option may
Matt LaPlante2fe0ae72006-10-03 22:50:39 +02001815lead to interoperability problems. Disabled by default.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001816
1817tcp_syncookies
1818--------------
1819
1820Only valid when the kernel was compiled with CONFIG_SYNCOOKIES. Send out
1821syncookies when the syn backlog queue of a socket overflows. This is to ward
1822off the common 'syn flood attack'. Disabled by default.
1823
1824Note that the concept of a socket backlog is abandoned. This means the peer
1825may not receive reliable error messages from an over loaded server with
1826syncookies enabled.
1827
1828tcp_window_scaling
1829------------------
1830
1831Enable window scaling as defined in RFC1323.
1832
1833tcp_fin_timeout
1834---------------
1835
1836The length of time in seconds it takes to receive a final FIN before the
1837socket is always closed. This is strictly a violation of the TCP
1838specification, but required to prevent denial-of-service attacks.
1839
1840tcp_max_ka_probes
1841-----------------
1842
1843Indicates how many keep alive probes are sent per slow timer run. Should not
1844be set too high to prevent bursts.
1845
1846tcp_max_syn_backlog
1847-------------------
1848
1849Length of the per socket backlog queue. Since Linux 2.2 the backlog specified
1850in listen(2) only specifies the length of the backlog queue of already
1851established sockets. When more connection requests arrive Linux starts to drop
1852packets. When syncookies are enabled the packets are still answered and the
1853maximum queue is effectively ignored.
1854
1855tcp_retries1
1856------------
1857
1858Defines how often an answer to a TCP connection request is retransmitted
1859before giving up.
1860
1861tcp_retries2
1862------------
1863
1864Defines how often a TCP packet is retransmitted before giving up.
1865
1866Interface specific settings
1867---------------------------
1868
1869In the directory /proc/sys/net/ipv4/conf you'll find one subdirectory for each
1870interface the system knows about and one directory calls all. Changes in the
1871all subdirectory affect all interfaces, whereas changes in the other
1872subdirectories affect only one interface. All directories have the same
1873entries:
1874
1875accept_redirects
1876----------------
1877
1878This switch decides if the kernel accepts ICMP redirect messages or not. The
1879default is 'yes' if the kernel is configured for a regular host and 'no' for a
1880router configuration.
1881
1882accept_source_route
1883-------------------
1884
1885Should source routed packages be accepted or declined. The default is
1886dependent on the kernel configuration. It's 'yes' for routers and 'no' for
1887hosts.
1888
1889bootp_relay
1890~~~~~~~~~~~
1891
1892Accept packets with source address 0.b.c.d with destinations not to this host
1893as local ones. It is supposed that a BOOTP relay daemon will catch and forward
1894such packets.
1895
1896The default is 0, since this feature is not implemented yet (kernel version
18972.2.12).
1898
1899forwarding
1900----------
1901
1902Enable or disable IP forwarding on this interface.
1903
1904log_martians
1905------------
1906
1907Log packets with source addresses with no known route to kernel log.
1908
1909mc_forwarding
1910-------------
1911
1912Do multicast routing. The kernel needs to be compiled with CONFIG_MROUTE and a
1913multicast routing daemon is required.
1914
1915proxy_arp
1916---------
1917
1918Does (1) or does not (0) perform proxy ARP.
1919
1920rp_filter
1921---------
1922
1923Integer value determines if a source validation should be made. 1 means yes, 0
1924means no. Disabled by default, but local/broadcast address spoofing is always
1925on.
1926
1927If you set this to 1 on a router that is the only connection for a network to
1928the net, it will prevent spoofing attacks against your internal networks
1929(external addresses can still be spoofed), without the need for additional
1930firewall rules.
1931
1932secure_redirects
1933----------------
1934
1935Accept ICMP redirect messages only for gateways, listed in default gateway
1936list. Enabled by default.
1937
1938shared_media
1939------------
1940
1941If it is not set the kernel does not assume that different subnets on this
1942device can communicate directly. Default setting is 'yes'.
1943
1944send_redirects
1945--------------
1946
1947Determines whether to send ICMP redirects to other hosts.
1948
1949Routing settings
1950----------------
1951
1952The directory /proc/sys/net/ipv4/route contains several file to control
1953routing issues.
1954
1955error_burst and error_cost
1956--------------------------
1957
1958These parameters are used to limit how many ICMP destination unreachable to
1959send from the host in question. ICMP destination unreachable messages are
Matt LaPlante84eb8d02006-10-03 22:53:09 +02001960sent when we cannot reach the next hop while trying to transmit a packet.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001961It will also print some error messages to kernel logs if someone is ignoring
1962our ICMP redirects. The higher the error_cost factor is, the fewer
1963destination unreachable and error messages will be let through. Error_burst
1964controls when destination unreachable messages and error messages will be
1965dropped. The default settings limit warning messages to five every second.
1966
1967flush
1968-----
1969
1970Writing to this file results in a flush of the routing cache.
1971
1972gc_elasticity, gc_interval, gc_min_interval_ms, gc_timeout, gc_thresh
1973---------------------------------------------------------------------
1974
1975Values to control the frequency and behavior of the garbage collection
1976algorithm for the routing cache. gc_min_interval is deprecated and replaced
1977by gc_min_interval_ms.
1978
1979
1980max_size
1981--------
1982
1983Maximum size of the routing cache. Old entries will be purged once the cache
1984reached has this size.
1985
Linus Torvalds1da177e2005-04-16 15:20:36 -07001986redirect_load, redirect_number
1987------------------------------
1988
1989Factors which determine if more ICPM redirects should be sent to a specific
1990host. No redirects will be sent once the load limit or the maximum number of
1991redirects has been reached.
1992
1993redirect_silence
1994----------------
1995
1996Timeout for redirects. After this period redirects will be sent again, even if
1997this has been stopped, because the load or number limit has been reached.
1998
1999Network Neighbor handling
2000-------------------------
2001
2002Settings about how to handle connections with direct neighbors (nodes attached
2003to the same link) can be found in the directory /proc/sys/net/ipv4/neigh.
2004
2005As we saw it in the conf directory, there is a default subdirectory which
2006holds the default values, and one directory for each interface. The contents
2007of the directories are identical, with the single exception that the default
2008settings contain additional options to set garbage collection parameters.
2009
2010In the interface directories you'll find the following entries:
2011
2012base_reachable_time, base_reachable_time_ms
2013-------------------------------------------
2014
2015A base value used for computing the random reachable time value as specified
2016in RFC2461.
2017
2018Expression of base_reachable_time, which is deprecated, is in seconds.
2019Expression of base_reachable_time_ms is in milliseconds.
2020
2021retrans_time, retrans_time_ms
2022-----------------------------
2023
2024The time between retransmitted Neighbor Solicitation messages.
2025Used for address resolution and to determine if a neighbor is
2026unreachable.
2027
2028Expression of retrans_time, which is deprecated, is in 1/100 seconds (for
2029IPv4) or in jiffies (for IPv6).
2030Expression of retrans_time_ms is in milliseconds.
2031
2032unres_qlen
2033----------
2034
2035Maximum queue length for a pending arp request - the number of packets which
2036are accepted from other layers while the ARP address is still resolved.
2037
2038anycast_delay
2039-------------
2040
2041Maximum for random delay of answers to neighbor solicitation messages in
2042jiffies (1/100 sec). Not yet implemented (Linux does not have anycast support
2043yet).
2044
2045ucast_solicit
2046-------------
2047
2048Maximum number of retries for unicast solicitation.
2049
2050mcast_solicit
2051-------------
2052
2053Maximum number of retries for multicast solicitation.
2054
2055delay_first_probe_time
2056----------------------
2057
2058Delay for the first time probe if the neighbor is reachable. (see
2059gc_stale_time)
2060
2061locktime
2062--------
2063
2064An ARP/neighbor entry is only replaced with a new one if the old is at least
2065locktime old. This prevents ARP cache thrashing.
2066
2067proxy_delay
2068-----------
2069
2070Maximum time (real time is random [0..proxytime]) before answering to an ARP
2071request for which we have an proxy ARP entry. In some cases, this is used to
2072prevent network flooding.
2073
2074proxy_qlen
2075----------
2076
2077Maximum queue length of the delayed proxy arp timer. (see proxy_delay).
2078
Matt LaPlante53cb4722006-10-03 22:55:17 +02002079app_solicit
Linus Torvalds1da177e2005-04-16 15:20:36 -07002080----------
2081
2082Determines the number of requests to send to the user level ARP daemon. Use 0
2083to turn off.
2084
2085gc_stale_time
2086-------------
2087
2088Determines how often to check for stale ARP entries. After an ARP entry is
2089stale it will be resolved again (which is useful when an IP address migrates
2090to another machine). When ucast_solicit is greater than 0 it first tries to
2091send an ARP packet directly to the known host When that fails and
2092mcast_solicit is greater than 0, an ARP request is broadcasted.
2093
20942.9 Appletalk
2095-------------
2096
2097The /proc/sys/net/appletalk directory holds the Appletalk configuration data
2098when Appletalk is loaded. The configurable parameters are:
2099
2100aarp-expiry-time
2101----------------
2102
2103The amount of time we keep an ARP entry before expiring it. Used to age out
2104old hosts.
2105
2106aarp-resolve-time
2107-----------------
2108
2109The amount of time we will spend trying to resolve an Appletalk address.
2110
2111aarp-retransmit-limit
2112---------------------
2113
2114The number of times we will retransmit a query before giving up.
2115
2116aarp-tick-time
2117--------------
2118
2119Controls the rate at which expires are checked.
2120
2121The directory /proc/net/appletalk holds the list of active Appletalk sockets
2122on a machine.
2123
2124The fields indicate the DDP type, the local address (in network:node format)
2125the remote address, the size of the transmit pending queue, the size of the
2126received queue (bytes waiting for applications to read) the state and the uid
2127owning the socket.
2128
2129/proc/net/atalk_iface lists all the interfaces configured for appletalk.It
2130shows the name of the interface, its Appletalk address, the network range on
2131that address (or network number for phase 1 networks), and the status of the
2132interface.
2133
2134/proc/net/atalk_route lists each known network route. It lists the target
2135(network) that the route leads to, the router (may be directly connected), the
2136route flags, and the device the route is using.
2137
21382.10 IPX
2139--------
2140
2141The IPX protocol has no tunable values in proc/sys/net.
2142
2143The IPX protocol does, however, provide proc/net/ipx. This lists each IPX
2144socket giving the local and remote addresses in Novell format (that is
2145network:node:port). In accordance with the strange Novell tradition,
2146everything but the port is in hex. Not_Connected is displayed for sockets that
2147are not tied to a specific remote address. The Tx and Rx queue sizes indicate
2148the number of bytes pending for transmission and reception. The state
2149indicates the state the socket is in and the uid is the owning uid of the
2150socket.
2151
2152The /proc/net/ipx_interface file lists all IPX interfaces. For each interface
2153it gives the network number, the node number, and indicates if the network is
2154the primary network. It also indicates which device it is bound to (or
2155Internal for internal networks) and the Frame Type if appropriate. Linux
2156supports 802.3, 802.2, 802.2 SNAP and DIX (Blue Book) ethernet framing for
2157IPX.
2158
2159The /proc/net/ipx_route table holds a list of IPX routes. For each route it
2160gives the destination network, the router node (or Directly) and the network
2161address of the router (or Connected) for internal networks.
2162
21632.11 /proc/sys/fs/mqueue - POSIX message queues filesystem
2164----------------------------------------------------------
2165
2166The "mqueue" filesystem provides the necessary kernel features to enable the
2167creation of a user space library that implements the POSIX message queues
2168API (as noted by the MSG tag in the POSIX 1003.1-2001 version of the System
2169Interfaces specification.)
2170
2171The "mqueue" filesystem contains values for determining/setting the amount of
2172resources used by the file system.
2173
2174/proc/sys/fs/mqueue/queues_max is a read/write file for setting/getting the
2175maximum number of message queues allowed on the system.
2176
2177/proc/sys/fs/mqueue/msg_max is a read/write file for setting/getting the
2178maximum number of messages in a queue value. In fact it is the limiting value
2179for another (user) limit which is set in mq_open invocation. This attribute of
2180a queue must be less or equal then msg_max.
2181
2182/proc/sys/fs/mqueue/msgsize_max is a read/write file for setting/getting the
2183maximum message size value (it is every message queue's attribute set during
2184its creation).
2185
Jan-Frode Myklebustd7ff0db2006-09-29 01:59:45 -070021862.12 /proc/<pid>/oom_adj - Adjust the oom-killer score
2187------------------------------------------------------
2188
2189This file can be used to adjust the score used to select which processes
2190should be killed in an out-of-memory situation. Giving it a high score will
2191increase the likelihood of this process being killed by the oom-killer. Valid
2192values are in the range -16 to +15, plus the special value -17, which disables
2193oom-killing altogether for this process.
2194
21952.13 /proc/<pid>/oom_score - Display current oom-killer score
2196-------------------------------------------------------------
2197
2198------------------------------------------------------------------------------
2199This file can be used to check the current score used by the oom-killer is for
2200any given <pid>. Use it together with /proc/<pid>/oom_adj to tune which
2201process should be killed in an out-of-memory situation.
Linus Torvalds1da177e2005-04-16 15:20:36 -07002202
2203------------------------------------------------------------------------------
2204Summary
2205------------------------------------------------------------------------------
2206Certain aspects of kernel behavior can be modified at runtime, without the
2207need to recompile the kernel, or even to reboot the system. The files in the
2208/proc/sys tree can not only be read, but also modified. You can use the echo
2209command to write value into these files, thereby changing the default settings
2210of the kernel.
2211------------------------------------------------------------------------------
Roland Kletzingf9c99462007-03-05 00:30:54 -08002212
22132.14 /proc/<pid>/io - Display the IO accounting fields
2214-------------------------------------------------------
2215
2216This file contains IO statistics for each running process
2217
2218Example
2219-------
2220
2221test:/tmp # dd if=/dev/zero of=/tmp/test.dat &
2222[1] 3828
2223
2224test:/tmp # cat /proc/3828/io
2225rchar: 323934931
2226wchar: 323929600
2227syscr: 632687
2228syscw: 632675
2229read_bytes: 0
2230write_bytes: 323932160
2231cancelled_write_bytes: 0
2232
2233
2234Description
2235-----------
2236
2237rchar
2238-----
2239
2240I/O counter: chars read
2241The number of bytes which this task has caused to be read from storage. This
2242is simply the sum of bytes which this process passed to read() and pread().
2243It includes things like tty IO and it is unaffected by whether or not actual
2244physical disk IO was required (the read might have been satisfied from
2245pagecache)
2246
2247
2248wchar
2249-----
2250
2251I/O counter: chars written
2252The number of bytes which this task has caused, or shall cause to be written
2253to disk. Similar caveats apply here as with rchar.
2254
2255
2256syscr
2257-----
2258
2259I/O counter: read syscalls
2260Attempt to count the number of read I/O operations, i.e. syscalls like read()
2261and pread().
2262
2263
2264syscw
2265-----
2266
2267I/O counter: write syscalls
2268Attempt to count the number of write I/O operations, i.e. syscalls like
2269write() and pwrite().
2270
2271
2272read_bytes
2273----------
2274
2275I/O counter: bytes read
2276Attempt to count the number of bytes which this process really did cause to
2277be fetched from the storage layer. Done at the submit_bio() level, so it is
2278accurate for block-backed filesystems. <please add status regarding NFS and
2279CIFS at a later time>
2280
2281
2282write_bytes
2283-----------
2284
2285I/O counter: bytes written
2286Attempt to count the number of bytes which this process caused to be sent to
2287the storage layer. This is done at page-dirtying time.
2288
2289
2290cancelled_write_bytes
2291---------------------
2292
2293The big inaccuracy here is truncate. If a process writes 1MB to a file and
2294then deletes the file, it will in fact perform no writeout. But it will have
2295been accounted as having caused 1MB of write.
2296In other words: The number of bytes which this process caused to not happen,
2297by truncating pagecache. A task can cause "negative" IO too. If this task
2298truncates some dirty pagecache, some IO which another task has been accounted
2299for (in it's write_bytes) will not be happening. We _could_ just subtract that
2300from the truncating task's write_bytes, but there is information loss in doing
2301that.
2302
2303
2304Note
2305----
2306
2307At its current implementation state, this is a bit racy on 32-bit machines: if
2308process A reads process B's /proc/pid/io while process B is updating one of
2309those 64-bit counters, process A could see an intermediate result.
2310
2311
2312More information about this can be found within the taskstats documentation in
2313Documentation/accounting.
2314
Kawai, Hidehirobb901102007-07-19 01:48:31 -070023152.15 /proc/<pid>/coredump_filter - Core dump filtering settings
2316---------------------------------------------------------------
2317When a process is dumped, all anonymous memory is written to a core file as
2318long as the size of the core file isn't limited. But sometimes we don't want
2319to dump some memory segments, for example, huge shared memory. Conversely,
2320sometimes we want to save file-backed memory segments into a core file, not
2321only the individual files.
2322
2323/proc/<pid>/coredump_filter allows you to customize which memory segments
2324will be dumped when the <pid> process is dumped. coredump_filter is a bitmask
2325of memory types. If a bit of the bitmask is set, memory segments of the
2326corresponding memory type are dumped, otherwise they are not dumped.
2327
2328The following 4 memory types are supported:
2329 - (bit 0) anonymous private memory
2330 - (bit 1) anonymous shared memory
2331 - (bit 2) file-backed private memory
2332 - (bit 3) file-backed shared memory
2333
2334 Note that MMIO pages such as frame buffer are never dumped and vDSO pages
2335 are always dumped regardless of the bitmask status.
2336
2337Default value of coredump_filter is 0x3; this means all anonymous memory
2338segments are dumped.
2339
2340If you don't want to dump all shared memory segments attached to pid 1234,
2341write 1 to the process's proc file.
2342
2343 $ echo 0x1 > /proc/1234/coredump_filter
2344
2345When a new process is created, the process inherits the bitmask status from its
2346parent. It is useful to set up coredump_filter before the program runs.
2347For example:
2348
2349 $ echo 0x7 > /proc/self/coredump_filter
2350 $ ./some_program
2351
Ram Pai2d4d4862008-03-27 13:06:25 +010023522.16 /proc/<pid>/mountinfo - Information about mounts
2353--------------------------------------------------------
2354
2355This file contains lines of the form:
2356
235736 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
2358(1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
2359
2360(1) mount ID: unique identifier of the mount (may be reused after umount)
2361(2) parent ID: ID of parent (or of self for the top of the mount tree)
2362(3) major:minor: value of st_dev for files on filesystem
2363(4) root: root of the mount within the filesystem
2364(5) mount point: mount point relative to the process's root
2365(6) mount options: per mount options
2366(7) optional fields: zero or more fields of the form "tag[:value]"
2367(8) separator: marks the end of the optional fields
2368(9) filesystem type: name of filesystem of the form "type[.subtype]"
2369(10) mount source: filesystem specific information or "none"
2370(11) super options: per super block options
2371
2372Parsers should ignore all unrecognised optional fields. Currently the
2373possible optional fields are:
2374
2375shared:X mount is shared in peer group X
2376master:X mount is slave to peer group X
Miklos Szeredi97e7e0f2008-03-27 13:06:26 +01002377propagate_from:X mount is slave and receives propagation from peer group X (*)
Ram Pai2d4d4862008-03-27 13:06:25 +01002378unbindable mount is unbindable
2379
Miklos Szeredi97e7e0f2008-03-27 13:06:26 +01002380(*) X is the closest dominant peer group under the process's root. If
2381X is the immediate master of the mount, or if there's no dominant peer
2382group under the same root, then only the "master:X" field is present
2383and not the "propagate_from:X" field.
2384
Ram Pai2d4d4862008-03-27 13:06:25 +01002385For more information on mount propagation see:
2386
2387 Documentation/filesystems/sharedsubtree.txt
2388
Roland Kletzingf9c99462007-03-05 00:30:54 -08002389------------------------------------------------------------------------------