Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.26-rc2 2402 lines 96 kB view raw
1------------------------------------------------------------------------------ 2 T H E /proc F I L E S Y S T E M 3------------------------------------------------------------------------------ 4/proc/sys Terrehon Bowden <terrehon@pacbell.net> October 7 1999 5 Bodo Bauer <bb@ricochet.net> 6 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 42 2.12 /proc/<pid>/oom_adj - Adjust the oom-killer score 43 2.13 /proc/<pid>/oom_score - Display current oom-killer score 44 2.14 /proc/<pid>/io - Display the IO accounting fields 45 2.15 /proc/<pid>/coredump_filter - Core dump filtering settings 46 2.16 /proc/<pid>/mountinfo - Information about mounts 47 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.............................................................................. 127 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 143.............................................................................. 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 176process 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. 179 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 195 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 220 it_real_value (obsolete, always 0) 221 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 2451.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 250/proc and are listed in Table 1-4. Not all of these will be present in your 251system. It depends on the kernel configuration and the loaded modules, which 252files are there, and which are missing. 253 254Table 1-4: Kernel info in /proc 255.............................................................................. 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 286 pci Deprecated info of PCI bus (new way -> /proc/bus/pci/, 287 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 352In 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. 381It 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 398It's a bitmask, in which you can specify which CPUs can handle the IRQ, you can 399set 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 404which means that only the first and fourth CPU can handle the IRQ. 405 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 466AnonPages: 861800 kB 467Mapped: 280372 kB 468Slab: 284364 kB 469SReclaimable: 159856 kB 470SUnreclaim: 124508 kB 471PageTables: 24448 kB 472NFS_Unstable: 0 kB 473Bounce: 0 kB 474WritebackTmp: 0 kB 475CommitLimit: 7669796 kB 476Committed_AS: 100056 kB 477VmallocTotal: 112216 kB 478VmallocUsed: 428 kB 479VmallocChunk: 111088 kB 480 481 MemTotal: Total usable ram (i.e. physical ram minus a few reserved 482 bits and the kernel binary code) 483 MemFree: The sum of LowFree+HighFree 484 Buffers: Relatively temporary storage for raw disk blocks 485 shouldn't get tremendously large (20MB or so) 486 Cached: in-memory cache for files read from the disk (the 487 pagecache). Doesn't include SwapCached 488 SwapCached: Memory that once was swapped out, is swapped back in but 489 still also is in the swapfile (if memory is needed it 490 doesn't need to be swapped out AGAIN because it is already 491 in the swapfile. This saves I/O) 492 Active: Memory that has been used more recently and usually not 493 reclaimed unless absolutely necessary. 494 Inactive: Memory which has been less recently used. It is more 495 eligible to be reclaimed for other purposes 496 HighTotal: 497 HighFree: Highmem is all memory above ~860MB of physical memory 498 Highmem areas are for use by userspace programs, or 499 for the pagecache. The kernel must use tricks to access 500 this memory, making it slower to access than lowmem. 501 LowTotal: 502 LowFree: Lowmem is memory which can be used for everything that 503 highmem can be used for, but it is also available for the 504 kernel's use for its own data structures. Among many 505 other things, it is where everything from the Slab is 506 allocated. Bad things happen when you're out of lowmem. 507 SwapTotal: total amount of swap space available 508 SwapFree: Memory which has been evicted from RAM, and is temporarily 509 on the disk 510 Dirty: Memory which is waiting to get written back to the disk 511 Writeback: Memory which is actively being written back to the disk 512 AnonPages: Non-file backed pages mapped into userspace page tables 513 Mapped: files which have been mmaped, such as libraries 514 Slab: in-kernel data structures cache 515SReclaimable: Part of Slab, that might be reclaimed, such as caches 516 SUnreclaim: Part of Slab, that cannot be reclaimed on memory pressure 517 PageTables: amount of memory dedicated to the lowest level of page 518 tables. 519NFS_Unstable: NFS pages sent to the server, but not yet committed to stable 520 storage 521 Bounce: Memory used for block device "bounce buffers" 522WritebackTmp: Memory used by FUSE for temporary writeback buffers 523 CommitLimit: Based on the overcommit ratio ('vm.overcommit_ratio'), 524 this is the total amount of memory currently available to 525 be allocated on the system. This limit is only adhered to 526 if strict overcommit accounting is enabled (mode 2 in 527 'vm.overcommit_memory'). 528 The CommitLimit is calculated with the following formula: 529 CommitLimit = ('vm.overcommit_ratio' * Physical RAM) + Swap 530 For example, on a system with 1G of physical RAM and 7G 531 of swap with a `vm.overcommit_ratio` of 30 it would 532 yield a CommitLimit of 7.3G. 533 For more details, see the memory overcommit documentation 534 in vm/overcommit-accounting. 535Committed_AS: The amount of memory presently allocated on the system. 536 The committed memory is a sum of all of the memory which 537 has been allocated by processes, even if it has not been 538 "used" by them as of yet. A process which malloc()'s 1G 539 of memory, but only touches 300M of it will only show up 540 as using 300M of memory even if it has the address space 541 allocated for the entire 1G. This 1G is memory which has 542 been "committed" to by the VM and can be used at any time 543 by the allocating application. With strict overcommit 544 enabled on the system (mode 2 in 'vm.overcommit_memory'), 545 allocations which would exceed the CommitLimit (detailed 546 above) will not be permitted. This is useful if one needs 547 to guarantee that processes will not fail due to lack of 548 memory once that memory has been successfully allocated. 549VmallocTotal: total size of vmalloc memory area 550 VmallocUsed: amount of vmalloc area which is used 551VmallocChunk: largest contigious block of vmalloc area which is free 552 553 5541.3 IDE devices in /proc/ide 555---------------------------- 556 557The subdirectory /proc/ide contains information about all IDE devices of which 558the kernel is aware. There is one subdirectory for each IDE controller, the 559file drivers and a link for each IDE device, pointing to the device directory 560in the controller specific subtree. 561 562The file drivers contains general information about the drivers used for the 563IDE devices: 564 565 > cat /proc/ide/drivers 566 ide-cdrom version 4.53 567 ide-disk version 1.08 568 569More detailed information can be found in the controller specific 570subdirectories. These are named ide0, ide1 and so on. Each of these 571directories contains the files shown in table 1-5. 572 573 574Table 1-5: IDE controller info in /proc/ide/ide? 575.............................................................................. 576 File Content 577 channel IDE channel (0 or 1) 578 config Configuration (only for PCI/IDE bridge) 579 mate Mate name 580 model Type/Chipset of IDE controller 581.............................................................................. 582 583Each device connected to a controller has a separate subdirectory in the 584controllers directory. The files listed in table 1-6 are contained in these 585directories. 586 587 588Table 1-6: IDE device information 589.............................................................................. 590 File Content 591 cache The cache 592 capacity Capacity of the medium (in 512Byte blocks) 593 driver driver and version 594 geometry physical and logical geometry 595 identify device identify block 596 media media type 597 model device identifier 598 settings device setup 599 smart_thresholds IDE disk management thresholds 600 smart_values IDE disk management values 601.............................................................................. 602 603The most interesting file is settings. This file contains a nice overview of 604the drive parameters: 605 606 # cat /proc/ide/ide0/hda/settings 607 name value min max mode 608 ---- ----- --- --- ---- 609 bios_cyl 526 0 65535 rw 610 bios_head 255 0 255 rw 611 bios_sect 63 0 63 rw 612 breada_readahead 4 0 127 rw 613 bswap 0 0 1 r 614 file_readahead 72 0 2097151 rw 615 io_32bit 0 0 3 rw 616 keepsettings 0 0 1 rw 617 max_kb_per_request 122 1 127 rw 618 multcount 0 0 8 rw 619 nice1 1 0 1 rw 620 nowerr 0 0 1 rw 621 pio_mode write-only 0 255 w 622 slow 0 0 1 rw 623 unmaskirq 0 0 1 rw 624 using_dma 0 0 1 rw 625 626 6271.4 Networking info in /proc/net 628-------------------------------- 629 630The subdirectory /proc/net follows the usual pattern. Table 1-6 shows the 631additional values you get for IP version 6 if you configure the kernel to 632support this. Table 1-7 lists the files and their meaning. 633 634 635Table 1-6: IPv6 info in /proc/net 636.............................................................................. 637 File Content 638 udp6 UDP sockets (IPv6) 639 tcp6 TCP sockets (IPv6) 640 raw6 Raw device statistics (IPv6) 641 igmp6 IP multicast addresses, which this host joined (IPv6) 642 if_inet6 List of IPv6 interface addresses 643 ipv6_route Kernel routing table for IPv6 644 rt6_stats Global IPv6 routing tables statistics 645 sockstat6 Socket statistics (IPv6) 646 snmp6 Snmp data (IPv6) 647.............................................................................. 648 649 650Table 1-7: Network info in /proc/net 651.............................................................................. 652 File Content 653 arp Kernel ARP table 654 dev network devices with statistics 655 dev_mcast the Layer2 multicast groups a device is listening too 656 (interface index, label, number of references, number of bound 657 addresses). 658 dev_stat network device status 659 ip_fwchains Firewall chain linkage 660 ip_fwnames Firewall chain names 661 ip_masq Directory containing the masquerading tables 662 ip_masquerade Major masquerading table 663 netstat Network statistics 664 raw raw device statistics 665 route Kernel routing table 666 rpc Directory containing rpc info 667 rt_cache Routing cache 668 snmp SNMP data 669 sockstat Socket statistics 670 tcp TCP sockets 671 tr_rif Token ring RIF routing table 672 udp UDP sockets 673 unix UNIX domain sockets 674 wireless Wireless interface data (Wavelan etc) 675 igmp IP multicast addresses, which this host joined 676 psched Global packet scheduler parameters. 677 netlink List of PF_NETLINK sockets 678 ip_mr_vifs List of multicast virtual interfaces 679 ip_mr_cache List of multicast routing cache 680.............................................................................. 681 682You can use this information to see which network devices are available in 683your system and how much traffic was routed over those devices: 684 685 > cat /proc/net/dev 686 Inter-|Receive |[... 687 face |bytes packets errs drop fifo frame compressed multicast|[... 688 lo: 908188 5596 0 0 0 0 0 0 [... 689 ppp0:15475140 20721 410 0 0 410 0 0 [... 690 eth0: 614530 7085 0 0 0 0 0 1 [... 691 692 ...] Transmit 693 ...] bytes packets errs drop fifo colls carrier compressed 694 ...] 908188 5596 0 0 0 0 0 0 695 ...] 1375103 17405 0 0 0 0 0 0 696 ...] 1703981 5535 0 0 0 3 0 0 697 698In addition, each Channel Bond interface has it's own directory. For 699example, the bond0 device will have a directory called /proc/net/bond0/. 700It will contain information that is specific to that bond, such as the 701current slaves of the bond, the link status of the slaves, and how 702many times the slaves link has failed. 703 7041.5 SCSI info 705------------- 706 707If you have a SCSI host adapter in your system, you'll find a subdirectory 708named after the driver for this adapter in /proc/scsi. You'll also see a list 709of all recognized SCSI devices in /proc/scsi: 710 711 >cat /proc/scsi/scsi 712 Attached devices: 713 Host: scsi0 Channel: 00 Id: 00 Lun: 00 714 Vendor: IBM Model: DGHS09U Rev: 03E0 715 Type: Direct-Access ANSI SCSI revision: 03 716 Host: scsi0 Channel: 00 Id: 06 Lun: 00 717 Vendor: PIONEER Model: CD-ROM DR-U06S Rev: 1.04 718 Type: CD-ROM ANSI SCSI revision: 02 719 720 721The directory named after the driver has one file for each adapter found in 722the system. These files contain information about the controller, including 723the used IRQ and the IO address range. The amount of information shown is 724dependent on the adapter you use. The example shows the output for an Adaptec 725AHA-2940 SCSI adapter: 726 727 > cat /proc/scsi/aic7xxx/0 728 729 Adaptec AIC7xxx driver version: 5.1.19/3.2.4 730 Compile Options: 731 TCQ Enabled By Default : Disabled 732 AIC7XXX_PROC_STATS : Disabled 733 AIC7XXX_RESET_DELAY : 5 734 Adapter Configuration: 735 SCSI Adapter: Adaptec AHA-294X Ultra SCSI host adapter 736 Ultra Wide Controller 737 PCI MMAPed I/O Base: 0xeb001000 738 Adapter SEEPROM Config: SEEPROM found and used. 739 Adaptec SCSI BIOS: Enabled 740 IRQ: 10 741 SCBs: Active 0, Max Active 2, 742 Allocated 15, HW 16, Page 255 743 Interrupts: 160328 744 BIOS Control Word: 0x18b6 745 Adapter Control Word: 0x005b 746 Extended Translation: Enabled 747 Disconnect Enable Flags: 0xffff 748 Ultra Enable Flags: 0x0001 749 Tag Queue Enable Flags: 0x0000 750 Ordered Queue Tag Flags: 0x0000 751 Default Tag Queue Depth: 8 752 Tagged Queue By Device array for aic7xxx host instance 0: 753 {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255} 754 Actual queue depth per device for aic7xxx host instance 0: 755 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} 756 Statistics: 757 (scsi0:0:0:0) 758 Device using Wide/Sync transfers at 40.0 MByte/sec, offset 8 759 Transinfo settings: current(12/8/1/0), goal(12/8/1/0), user(12/15/1/0) 760 Total transfers 160151 (74577 reads and 85574 writes) 761 (scsi0:0:6:0) 762 Device using Narrow/Sync transfers at 5.0 MByte/sec, offset 15 763 Transinfo settings: current(50/15/0/0), goal(50/15/0/0), user(50/15/0/0) 764 Total transfers 0 (0 reads and 0 writes) 765 766 7671.6 Parallel port info in /proc/parport 768--------------------------------------- 769 770The directory /proc/parport contains information about the parallel ports of 771your system. It has one subdirectory for each port, named after the port 772number (0,1,2,...). 773 774These directories contain the four files shown in Table 1-8. 775 776 777Table 1-8: Files in /proc/parport 778.............................................................................. 779 File Content 780 autoprobe Any IEEE-1284 device ID information that has been acquired. 781 devices list of the device drivers using that port. A + will appear by the 782 name of the device currently using the port (it might not appear 783 against any). 784 hardware Parallel port's base address, IRQ line and DMA channel. 785 irq IRQ that parport is using for that port. This is in a separate 786 file to allow you to alter it by writing a new value in (IRQ 787 number or none). 788.............................................................................. 789 7901.7 TTY info in /proc/tty 791------------------------- 792 793Information about the available and actually used tty's can be found in the 794directory /proc/tty.You'll find entries for drivers and line disciplines in 795this directory, as shown in Table 1-9. 796 797 798Table 1-9: Files in /proc/tty 799.............................................................................. 800 File Content 801 drivers list of drivers and their usage 802 ldiscs registered line disciplines 803 driver/serial usage statistic and status of single tty lines 804.............................................................................. 805 806To see which tty's are currently in use, you can simply look into the file 807/proc/tty/drivers: 808 809 > cat /proc/tty/drivers 810 pty_slave /dev/pts 136 0-255 pty:slave 811 pty_master /dev/ptm 128 0-255 pty:master 812 pty_slave /dev/ttyp 3 0-255 pty:slave 813 pty_master /dev/pty 2 0-255 pty:master 814 serial /dev/cua 5 64-67 serial:callout 815 serial /dev/ttyS 4 64-67 serial 816 /dev/tty0 /dev/tty0 4 0 system:vtmaster 817 /dev/ptmx /dev/ptmx 5 2 system 818 /dev/console /dev/console 5 1 system:console 819 /dev/tty /dev/tty 5 0 system:/dev/tty 820 unknown /dev/tty 4 1-63 console 821 822 8231.8 Miscellaneous kernel statistics in /proc/stat 824------------------------------------------------- 825 826Various pieces of information about kernel activity are available in the 827/proc/stat file. All of the numbers reported in this file are aggregates 828since the system first booted. For a quick look, simply cat the file: 829 830 > cat /proc/stat 831 cpu 2255 34 2290 22625563 6290 127 456 0 832 cpu0 1132 34 1441 11311718 3675 127 438 0 833 cpu1 1123 0 849 11313845 2614 0 18 0 834 intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...] 835 ctxt 1990473 836 btime 1062191376 837 processes 2915 838 procs_running 1 839 procs_blocked 0 840 841The very first "cpu" line aggregates the numbers in all of the other "cpuN" 842lines. These numbers identify the amount of time the CPU has spent performing 843different kinds of work. Time units are in USER_HZ (typically hundredths of a 844second). The meanings of the columns are as follows, from left to right: 845 846- user: normal processes executing in user mode 847- nice: niced processes executing in user mode 848- system: processes executing in kernel mode 849- idle: twiddling thumbs 850- iowait: waiting for I/O to complete 851- irq: servicing interrupts 852- softirq: servicing softirqs 853- steal: involuntary wait 854 855The "intr" line gives counts of interrupts serviced since boot time, for each 856of the possible system interrupts. The first column is the total of all 857interrupts serviced; each subsequent column is the total for that particular 858interrupt. 859 860The "ctxt" line gives the total number of context switches across all CPUs. 861 862The "btime" line gives the time at which the system booted, in seconds since 863the Unix epoch. 864 865The "processes" line gives the number of processes and threads created, which 866includes (but is not limited to) those created by calls to the fork() and 867clone() system calls. 868 869The "procs_running" line gives the number of processes currently running on 870CPUs. 871 872The "procs_blocked" line gives the number of processes currently blocked, 873waiting for I/O to complete. 874 8751.9 Ext4 file system parameters 876------------------------------ 877Ext4 file system have one directory per partition under /proc/fs/ext4/ 878# ls /proc/fs/ext4/hdc/ 879group_prealloc max_to_scan mb_groups mb_history min_to_scan order2_req 880stats stream_req 881 882mb_groups: 883This file gives the details of mutiblock allocator buddy cache of free blocks 884 885mb_history: 886Multiblock allocation history. 887 888stats: 889This file indicate whether the multiblock allocator should start collecting 890statistics. The statistics are shown during unmount 891 892group_prealloc: 893The multiblock allocator normalize the block allocation request to 894group_prealloc filesystem blocks if we don't have strip value set. 895The stripe value can be specified at mount time or during mke2fs. 896 897max_to_scan: 898How long multiblock allocator can look for a best extent (in found extents) 899 900min_to_scan: 901How long multiblock allocator must look for a best extent 902 903order2_req: 904Multiblock allocator use 2^N search using buddies only for requests greater 905than or equal to order2_req. The request size is specfied in file system 906blocks. A value of 2 indicate only if the requests are greater than or equal 907to 4 blocks. 908 909stream_req: 910Files smaller than stream_req are served by the stream allocator, whose 911purpose is to pack requests as close each to other as possible to 912produce smooth I/O traffic. Avalue of 16 indicate that file smaller than 16 913filesystem block size will use group based preallocation. 914 915------------------------------------------------------------------------------ 916Summary 917------------------------------------------------------------------------------ 918The /proc file system serves information about the running system. It not only 919allows access to process data but also allows you to request the kernel status 920by reading files in the hierarchy. 921 922The directory structure of /proc reflects the types of information and makes 923it easy, if not obvious, where to look for specific data. 924------------------------------------------------------------------------------ 925 926------------------------------------------------------------------------------ 927CHAPTER 2: MODIFYING SYSTEM PARAMETERS 928------------------------------------------------------------------------------ 929 930------------------------------------------------------------------------------ 931In This Chapter 932------------------------------------------------------------------------------ 933* Modifying kernel parameters by writing into files found in /proc/sys 934* Exploring the files which modify certain parameters 935* Review of the /proc/sys file tree 936------------------------------------------------------------------------------ 937 938 939A very interesting part of /proc is the directory /proc/sys. This is not only 940a source of information, it also allows you to change parameters within the 941kernel. Be very careful when attempting this. You can optimize your system, 942but you can also cause it to crash. Never alter kernel parameters on a 943production system. Set up a development machine and test to make sure that 944everything works the way you want it to. You may have no alternative but to 945reboot the machine once an error has been made. 946 947To change a value, simply echo the new value into the file. An example is 948given below in the section on the file system data. You need to be root to do 949this. You can create your own boot script to perform this every time your 950system boots. 951 952The files in /proc/sys can be used to fine tune and monitor miscellaneous and 953general things in the operation of the Linux kernel. Since some of the files 954can inadvertently disrupt your system, it is advisable to read both 955documentation and source before actually making adjustments. In any case, be 956very careful when writing to any of these files. The entries in /proc may 957change slightly between the 2.1.* and the 2.2 kernel, so if there is any doubt 958review the kernel documentation in the directory /usr/src/linux/Documentation. 959This chapter is heavily based on the documentation included in the pre 2.2 960kernels, and became part of it in version 2.2.1 of the Linux kernel. 961 9622.1 /proc/sys/fs - File system data 963----------------------------------- 964 965This subdirectory contains specific file system, file handle, inode, dentry 966and quota information. 967 968Currently, these files are in /proc/sys/fs: 969 970dentry-state 971------------ 972 973Status of the directory cache. Since directory entries are dynamically 974allocated and deallocated, this file indicates the current status. It holds 975six values, in which the last two are not used and are always zero. The others 976are listed in table 2-1. 977 978 979Table 2-1: Status files of the directory cache 980.............................................................................. 981 File Content 982 nr_dentry Almost always zero 983 nr_unused Number of unused cache entries 984 age_limit 985 in seconds after the entry may be reclaimed, when memory is short 986 want_pages internally 987.............................................................................. 988 989dquot-nr and dquot-max 990---------------------- 991 992The file dquot-max shows the maximum number of cached disk quota entries. 993 994The file dquot-nr shows the number of allocated disk quota entries and the 995number of free disk quota entries. 996 997If the number of available cached disk quotas is very low and you have a large 998number of simultaneous system users, you might want to raise the limit. 999 1000file-nr and file-max 1001-------------------- 1002 1003The kernel allocates file handles dynamically, but doesn't free them again at 1004this time. 1005 1006The value in file-max denotes the maximum number of file handles that the 1007Linux kernel will allocate. When you get a lot of error messages about running 1008out of file handles, you might want to raise this limit. The default value is 100910% of RAM in kilobytes. To change it, just write the new number into the 1010file: 1011 1012 # cat /proc/sys/fs/file-max 1013 4096 1014 # echo 8192 > /proc/sys/fs/file-max 1015 # cat /proc/sys/fs/file-max 1016 8192 1017 1018 1019This method of revision is useful for all customizable parameters of the 1020kernel - simply echo the new value to the corresponding file. 1021 1022Historically, the three values in file-nr denoted the number of allocated file 1023handles, the number of allocated but unused file handles, and the maximum 1024number of file handles. Linux 2.6 always reports 0 as the number of free file 1025handles -- this is not an error, it just means that the number of allocated 1026file handles exactly matches the number of used file handles. 1027 1028Attempts to allocate more file descriptors than file-max are reported with 1029printk, look for "VFS: file-max limit <number> reached". 1030 1031inode-state and inode-nr 1032------------------------ 1033 1034The file inode-nr contains the first two items from inode-state, so we'll skip 1035to that file... 1036 1037inode-state contains two actual numbers and five dummy values. The numbers 1038are nr_inodes and nr_free_inodes (in order of appearance). 1039 1040nr_inodes 1041~~~~~~~~~ 1042 1043Denotes the number of inodes the system has allocated. This number will 1044grow and shrink dynamically. 1045 1046nr_open 1047------- 1048 1049Denotes the maximum number of file-handles a process can 1050allocate. Default value is 1024*1024 (1048576) which should be 1051enough for most machines. Actual limit depends on RLIMIT_NOFILE 1052resource limit. 1053 1054nr_free_inodes 1055-------------- 1056 1057Represents the number of free inodes. Ie. The number of inuse inodes is 1058(nr_inodes - nr_free_inodes). 1059 1060aio-nr and aio-max-nr 1061--------------------- 1062 1063aio-nr is the running total of the number of events specified on the 1064io_setup system call for all currently active aio contexts. If aio-nr 1065reaches aio-max-nr then io_setup will fail with EAGAIN. Note that 1066raising aio-max-nr does not result in the pre-allocation or re-sizing 1067of any kernel data structures. 1068 10692.2 /proc/sys/fs/binfmt_misc - Miscellaneous binary formats 1070----------------------------------------------------------- 1071 1072Besides these files, there is the subdirectory /proc/sys/fs/binfmt_misc. This 1073handles the kernel support for miscellaneous binary formats. 1074 1075Binfmt_misc provides the ability to register additional binary formats to the 1076Kernel without compiling an additional module/kernel. Therefore, binfmt_misc 1077needs to know magic numbers at the beginning or the filename extension of the 1078binary. 1079 1080It works by maintaining a linked list of structs that contain a description of 1081a binary format, including a magic with size (or the filename extension), 1082offset and mask, and the interpreter name. On request it invokes the given 1083interpreter with the original program as argument, as binfmt_java and 1084binfmt_em86 and binfmt_mz do. Since binfmt_misc does not define any default 1085binary-formats, you have to register an additional binary-format. 1086 1087There are two general files in binfmt_misc and one file per registered format. 1088The two general files are register and status. 1089 1090Registering a new binary format 1091------------------------------- 1092 1093To register a new binary format you have to issue the command 1094 1095 echo :name:type:offset:magic:mask:interpreter: > /proc/sys/fs/binfmt_misc/register 1096 1097 1098 1099with appropriate name (the name for the /proc-dir entry), offset (defaults to 11000, if omitted), magic, mask (which can be omitted, defaults to all 0xff) and 1101last but not least, the interpreter that is to be invoked (for example and 1102testing /bin/echo). Type can be M for usual magic matching or E for filename 1103extension matching (give extension in place of magic). 1104 1105Check or reset the status of the binary format handler 1106------------------------------------------------------ 1107 1108If you do a cat on the file /proc/sys/fs/binfmt_misc/status, you will get the 1109current status (enabled/disabled) of binfmt_misc. Change the status by echoing 11100 (disables) or 1 (enables) or -1 (caution: this clears all previously 1111registered binary formats) to status. For example echo 0 > status to disable 1112binfmt_misc (temporarily). 1113 1114Status of a single handler 1115-------------------------- 1116 1117Each registered handler has an entry in /proc/sys/fs/binfmt_misc. These files 1118perform the same function as status, but their scope is limited to the actual 1119binary format. By cating this file, you also receive all related information 1120about the interpreter/magic of the binfmt. 1121 1122Example usage of binfmt_misc (emulate binfmt_java) 1123-------------------------------------------------- 1124 1125 cd /proc/sys/fs/binfmt_misc 1126 echo ':Java:M::\xca\xfe\xba\xbe::/usr/local/java/bin/javawrapper:' > register 1127 echo ':HTML:E::html::/usr/local/java/bin/appletviewer:' > register 1128 echo ':Applet:M::<!--applet::/usr/local/java/bin/appletviewer:' > register 1129 echo ':DEXE:M::\x0eDEX::/usr/bin/dosexec:' > register 1130 1131 1132These four lines add support for Java executables and Java applets (like 1133binfmt_java, additionally recognizing the .html extension with no need to put 1134<!--applet> to every applet file). You have to install the JDK and the 1135shell-script /usr/local/java/bin/javawrapper too. It works around the 1136brokenness of the Java filename handling. To add a Java binary, just create a 1137link to the class-file somewhere in the path. 1138 11392.3 /proc/sys/kernel - general kernel parameters 1140------------------------------------------------ 1141 1142This directory reflects general kernel behaviors. As I've said before, the 1143contents depend on your configuration. Here you'll find the most important 1144files, along with descriptions of what they mean and how to use them. 1145 1146acct 1147---- 1148 1149The file contains three values; highwater, lowwater, and frequency. 1150 1151It exists only when BSD-style process accounting is enabled. These values 1152control its behavior. If the free space on the file system where the log lives 1153goes below lowwater percentage, accounting suspends. If it goes above 1154highwater percentage, accounting resumes. Frequency determines how often you 1155check the amount of free space (value is in seconds). Default settings are: 4, 11562, and 30. That is, suspend accounting if there is less than 2 percent free; 1157resume it if we have a value of 3 or more percent; consider information about 1158the amount of free space valid for 30 seconds 1159 1160ctrl-alt-del 1161------------ 1162 1163When the value in this file is 0, ctrl-alt-del is trapped and sent to the init 1164program to handle a graceful restart. However, when the value is greater that 1165zero, Linux's reaction to this key combination will be an immediate reboot, 1166without syncing its dirty buffers. 1167 1168[NOTE] 1169 When a program (like dosemu) has the keyboard in raw mode, the 1170 ctrl-alt-del is intercepted by the program before it ever reaches the 1171 kernel tty layer, and it is up to the program to decide what to do with 1172 it. 1173 1174domainname and hostname 1175----------------------- 1176 1177These files can be controlled to set the NIS domainname and hostname of your 1178box. For the classic darkstar.frop.org a simple: 1179 1180 # echo "darkstar" > /proc/sys/kernel/hostname 1181 # echo "frop.org" > /proc/sys/kernel/domainname 1182 1183 1184would suffice to set your hostname and NIS domainname. 1185 1186osrelease, ostype and version 1187----------------------------- 1188 1189The names make it pretty obvious what these fields contain: 1190 1191 > cat /proc/sys/kernel/osrelease 1192 2.2.12 1193 1194 > cat /proc/sys/kernel/ostype 1195 Linux 1196 1197 > cat /proc/sys/kernel/version 1198 #4 Fri Oct 1 12:41:14 PDT 1999 1199 1200 1201The files osrelease and ostype should be clear enough. Version needs a little 1202more clarification. The #4 means that this is the 4th kernel built from this 1203source base and the date after it indicates the time the kernel was built. The 1204only way to tune these values is to rebuild the kernel. 1205 1206panic 1207----- 1208 1209The value in this file represents the number of seconds the kernel waits 1210before rebooting on a panic. When you use the software watchdog, the 1211recommended setting is 60. If set to 0, the auto reboot after a kernel panic 1212is disabled, which is the default setting. 1213 1214printk 1215------ 1216 1217The four values in printk denote 1218* console_loglevel, 1219* default_message_loglevel, 1220* minimum_console_loglevel and 1221* default_console_loglevel 1222respectively. 1223 1224These values influence printk() behavior when printing or logging error 1225messages, which come from inside the kernel. See syslog(2) for more 1226information on the different log levels. 1227 1228console_loglevel 1229---------------- 1230 1231Messages with a higher priority than this will be printed to the console. 1232 1233default_message_level 1234--------------------- 1235 1236Messages without an explicit priority will be printed with this priority. 1237 1238minimum_console_loglevel 1239------------------------ 1240 1241Minimum (highest) value to which the console_loglevel can be set. 1242 1243default_console_loglevel 1244------------------------ 1245 1246Default value for console_loglevel. 1247 1248sg-big-buff 1249----------- 1250 1251This file shows the size of the generic SCSI (sg) buffer. At this point, you 1252can't tune it yet, but you can change it at compile time by editing 1253include/scsi/sg.h and changing the value of SG_BIG_BUFF. 1254 1255If you use a scanner with SANE (Scanner Access Now Easy) you might want to set 1256this to a higher value. Refer to the SANE documentation on this issue. 1257 1258modprobe 1259-------- 1260 1261The location where the modprobe binary is located. The kernel uses this 1262program to load modules on demand. 1263 1264unknown_nmi_panic 1265----------------- 1266 1267The value in this file affects behavior of handling NMI. When the value is 1268non-zero, unknown NMI is trapped and then panic occurs. At that time, kernel 1269debugging information is displayed on console. 1270 1271NMI switch that most IA32 servers have fires unknown NMI up, for example. 1272If a system hangs up, try pressing the NMI switch. 1273 1274nmi_watchdog 1275------------ 1276 1277Enables/Disables the NMI watchdog on x86 systems. When the value is non-zero 1278the NMI watchdog is enabled and will continuously test all online cpus to 1279determine whether or not they are still functioning properly. 1280 1281Because the NMI watchdog shares registers with oprofile, by disabling the NMI 1282watchdog, oprofile may have more registers to utilize. 1283 1284maps_protect 1285------------ 1286 1287Enables/Disables the protection of the per-process proc entries "maps" and 1288"smaps". When enabled, the contents of these files are visible only to 1289readers that are allowed to ptrace() the given process. 1290 1291 12922.4 /proc/sys/vm - The virtual memory subsystem 1293----------------------------------------------- 1294 1295The files in this directory can be used to tune the operation of the virtual 1296memory (VM) subsystem of the Linux kernel. 1297 1298vfs_cache_pressure 1299------------------ 1300 1301Controls the tendency of the kernel to reclaim the memory which is used for 1302caching of directory and inode objects. 1303 1304At the default value of vfs_cache_pressure=100 the kernel will attempt to 1305reclaim dentries and inodes at a "fair" rate with respect to pagecache and 1306swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer 1307to retain dentry and inode caches. Increasing vfs_cache_pressure beyond 100 1308causes the kernel to prefer to reclaim dentries and inodes. 1309 1310dirty_background_ratio 1311---------------------- 1312 1313Contains, as a percentage of total system memory, the number of pages at which 1314the pdflush background writeback daemon will start writing out dirty data. 1315 1316dirty_ratio 1317----------------- 1318 1319Contains, as a percentage of total system memory, the number of pages at which 1320a process which is generating disk writes will itself start writing out dirty 1321data. 1322 1323dirty_writeback_centisecs 1324------------------------- 1325 1326The pdflush writeback daemons will periodically wake up and write `old' data 1327out to disk. This tunable expresses the interval between those wakeups, in 1328100'ths of a second. 1329 1330Setting this to zero disables periodic writeback altogether. 1331 1332dirty_expire_centisecs 1333---------------------- 1334 1335This tunable is used to define when dirty data is old enough to be eligible 1336for writeout by the pdflush daemons. It is expressed in 100'ths of a second. 1337Data which has been dirty in-memory for longer than this interval will be 1338written out next time a pdflush daemon wakes up. 1339 1340highmem_is_dirtyable 1341-------------------- 1342 1343Only present if CONFIG_HIGHMEM is set. 1344 1345This defaults to 0 (false), meaning that the ratios set above are calculated 1346as a percentage of lowmem only. This protects against excessive scanning 1347in page reclaim, swapping and general VM distress. 1348 1349Setting this to 1 can be useful on 32 bit machines where you want to make 1350random changes within an MMAPed file that is larger than your available 1351lowmem without causing large quantities of random IO. Is is safe if the 1352behavior of all programs running on the machine is known and memory will 1353not be otherwise stressed. 1354 1355legacy_va_layout 1356---------------- 1357 1358If non-zero, this sysctl disables the new 32-bit mmap mmap layout - the kernel 1359will use the legacy (2.4) layout for all processes. 1360 1361lowmem_reserve_ratio 1362--------------------- 1363 1364For some specialised workloads on highmem machines it is dangerous for 1365the kernel to allow process memory to be allocated from the "lowmem" 1366zone. This is because that memory could then be pinned via the mlock() 1367system call, or by unavailability of swapspace. 1368 1369And on large highmem machines this lack of reclaimable lowmem memory 1370can be fatal. 1371 1372So the Linux page allocator has a mechanism which prevents allocations 1373which _could_ use highmem from using too much lowmem. This means that 1374a certain amount of lowmem is defended from the possibility of being 1375captured into pinned user memory. 1376 1377(The same argument applies to the old 16 megabyte ISA DMA region. This 1378mechanism will also defend that region from allocations which could use 1379highmem or lowmem). 1380 1381The `lowmem_reserve_ratio' tunable determines how aggressive the kernel is 1382in defending these lower zones. 1383 1384If you have a machine which uses highmem or ISA DMA and your 1385applications are using mlock(), or if you are running with no swap then 1386you probably should change the lowmem_reserve_ratio setting. 1387 1388The lowmem_reserve_ratio is an array. You can see them by reading this file. 1389- 1390% cat /proc/sys/vm/lowmem_reserve_ratio 1391256 256 32 1392- 1393Note: # of this elements is one fewer than number of zones. Because the highest 1394 zone's value is not necessary for following calculation. 1395 1396But, these values are not used directly. The kernel calculates # of protection 1397pages for each zones from them. These are shown as array of protection pages 1398in /proc/zoneinfo like followings. (This is an example of x86-64 box). 1399Each zone has an array of protection pages like this. 1400 1401- 1402Node 0, zone DMA 1403 pages free 1355 1404 min 3 1405 low 3 1406 high 4 1407 : 1408 : 1409 numa_other 0 1410 protection: (0, 2004, 2004, 2004) 1411 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1412 pagesets 1413 cpu: 0 pcp: 0 1414 : 1415- 1416These protections are added to score to judge whether this zone should be used 1417for page allocation or should be reclaimed. 1418 1419In this example, if normal pages (index=2) are required to this DMA zone and 1420pages_high is used for watermark, the kernel judges this zone should not be 1421used because pages_free(1355) is smaller than watermark + protection[2] 1422(4 + 2004 = 2008). If this protection value is 0, this zone would be used for 1423normal page requirement. If requirement is DMA zone(index=0), protection[0] 1424(=0) is used. 1425 1426zone[i]'s protection[j] is calculated by following exprssion. 1427 1428(i < j): 1429 zone[i]->protection[j] 1430 = (total sums of present_pages from zone[i+1] to zone[j] on the node) 1431 / lowmem_reserve_ratio[i]; 1432(i = j): 1433 (should not be protected. = 0; 1434(i > j): 1435 (not necessary, but looks 0) 1436 1437The default values of lowmem_reserve_ratio[i] are 1438 256 (if zone[i] means DMA or DMA32 zone) 1439 32 (others). 1440As above expression, they are reciprocal number of ratio. 1441256 means 1/256. # of protection pages becomes about "0.39%" of total present 1442pages of higher zones on the node. 1443 1444If you would like to protect more pages, smaller values are effective. 1445The minimum value is 1 (1/1 -> 100%). 1446 1447page-cluster 1448------------ 1449 1450page-cluster controls the number of pages which are written to swap in 1451a single attempt. The swap I/O size. 1452 1453It is a logarithmic value - setting it to zero means "1 page", setting 1454it to 1 means "2 pages", setting it to 2 means "4 pages", etc. 1455 1456The default value is three (eight pages at a time). There may be some 1457small benefits in tuning this to a different value if your workload is 1458swap-intensive. 1459 1460overcommit_memory 1461----------------- 1462 1463Controls overcommit of system memory, possibly allowing processes 1464to allocate (but not use) more memory than is actually available. 1465 1466 14670 - Heuristic overcommit handling. Obvious overcommits of 1468 address space are refused. Used for a typical system. It 1469 ensures a seriously wild allocation fails while allowing 1470 overcommit to reduce swap usage. root is allowed to 1471 allocate slightly more memory in this mode. This is the 1472 default. 1473 14741 - Always overcommit. Appropriate for some scientific 1475 applications. 1476 14772 - Don't overcommit. The total address space commit 1478 for the system is not permitted to exceed swap plus a 1479 configurable percentage (default is 50) of physical RAM. 1480 Depending on the percentage you use, in most situations 1481 this means a process will not be killed while attempting 1482 to use already-allocated memory but will receive errors 1483 on memory allocation as appropriate. 1484 1485overcommit_ratio 1486---------------- 1487 1488Percentage of physical memory size to include in overcommit calculations 1489(see above.) 1490 1491Memory allocation limit = swapspace + physmem * (overcommit_ratio / 100) 1492 1493 swapspace = total size of all swap areas 1494 physmem = size of physical memory in system 1495 1496nr_hugepages and hugetlb_shm_group 1497---------------------------------- 1498 1499nr_hugepages configures number of hugetlb page reserved for the system. 1500 1501hugetlb_shm_group contains group id that is allowed to create SysV shared 1502memory segment using hugetlb page. 1503 1504hugepages_treat_as_movable 1505-------------------------- 1506 1507This parameter is only useful when kernelcore= is specified at boot time to 1508create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages 1509are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero 1510value written to hugepages_treat_as_movable allows huge pages to be allocated 1511from ZONE_MOVABLE. 1512 1513Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge 1514pages pool can easily grow or shrink within. Assuming that applications are 1515not running that mlock() a lot of memory, it is likely the huge pages pool 1516can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value 1517into nr_hugepages and triggering page reclaim. 1518 1519laptop_mode 1520----------- 1521 1522laptop_mode is a knob that controls "laptop mode". All the things that are 1523controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt. 1524 1525block_dump 1526---------- 1527 1528block_dump enables block I/O debugging when set to a nonzero value. More 1529information on block I/O debugging is in Documentation/laptops/laptop-mode.txt. 1530 1531swap_token_timeout 1532------------------ 1533 1534This file contains valid hold time of swap out protection token. The Linux 1535VM has token based thrashing control mechanism and uses the token to prevent 1536unnecessary page faults in thrashing situation. The unit of the value is 1537second. The value would be useful to tune thrashing behavior. 1538 1539drop_caches 1540----------- 1541 1542Writing to this will cause the kernel to drop clean caches, dentries and 1543inodes from memory, causing that memory to become free. 1544 1545To free pagecache: 1546 echo 1 > /proc/sys/vm/drop_caches 1547To free dentries and inodes: 1548 echo 2 > /proc/sys/vm/drop_caches 1549To free pagecache, dentries and inodes: 1550 echo 3 > /proc/sys/vm/drop_caches 1551 1552As this is a non-destructive operation and dirty objects are not freeable, the 1553user should run `sync' first. 1554 1555 15562.5 /proc/sys/dev - Device specific parameters 1557---------------------------------------------- 1558 1559Currently there is only support for CDROM drives, and for those, there is only 1560one read-only file containing information about the CD-ROM drives attached to 1561the system: 1562 1563 >cat /proc/sys/dev/cdrom/info 1564 CD-ROM information, Id: cdrom.c 2.55 1999/04/25 1565 1566 drive name: sr0 hdb 1567 drive speed: 32 40 1568 drive # of slots: 1 0 1569 Can close tray: 1 1 1570 Can open tray: 1 1 1571 Can lock tray: 1 1 1572 Can change speed: 1 1 1573 Can select disk: 0 1 1574 Can read multisession: 1 1 1575 Can read MCN: 1 1 1576 Reports media changed: 1 1 1577 Can play audio: 1 1 1578 1579 1580You see two drives, sr0 and hdb, along with a list of their features. 1581 15822.6 /proc/sys/sunrpc - Remote procedure calls 1583--------------------------------------------- 1584 1585This directory contains four files, which enable or disable debugging for the 1586RPC functions NFS, NFS-daemon, RPC and NLM. The default values are 0. They can 1587be set to one to turn debugging on. (The default value is 0 for each) 1588 15892.7 /proc/sys/net - Networking stuff 1590------------------------------------ 1591 1592The interface to the networking parts of the kernel is located in 1593/proc/sys/net. Table 2-3 shows all possible subdirectories. You may see only 1594some of them, depending on your kernel's configuration. 1595 1596 1597Table 2-3: Subdirectories in /proc/sys/net 1598.............................................................................. 1599 Directory Content Directory Content 1600 core General parameter appletalk Appletalk protocol 1601 unix Unix domain sockets netrom NET/ROM 1602 802 E802 protocol ax25 AX25 1603 ethernet Ethernet protocol rose X.25 PLP layer 1604 ipv4 IP version 4 x25 X.25 protocol 1605 ipx IPX token-ring IBM token ring 1606 bridge Bridging decnet DEC net 1607 ipv6 IP version 6 1608.............................................................................. 1609 1610We will concentrate on IP networking here. Since AX15, X.25, and DEC Net are 1611only minor players in the Linux world, we'll skip them in this chapter. You'll 1612find some short info on Appletalk and IPX further on in this chapter. Review 1613the online documentation and the kernel source to get a detailed view of the 1614parameters for those protocols. In this section we'll discuss the 1615subdirectories printed in bold letters in the table above. As default values 1616are suitable for most needs, there is no need to change these values. 1617 1618/proc/sys/net/core - Network core options 1619----------------------------------------- 1620 1621rmem_default 1622------------ 1623 1624The default setting of the socket receive buffer in bytes. 1625 1626rmem_max 1627-------- 1628 1629The maximum receive socket buffer size in bytes. 1630 1631wmem_default 1632------------ 1633 1634The default setting (in bytes) of the socket send buffer. 1635 1636wmem_max 1637-------- 1638 1639The maximum send socket buffer size in bytes. 1640 1641message_burst and message_cost 1642------------------------------ 1643 1644These parameters are used to limit the warning messages written to the kernel 1645log from the networking code. They enforce a rate limit to make a 1646denial-of-service attack impossible. A higher message_cost factor, results in 1647fewer messages that will be written. Message_burst controls when messages will 1648be dropped. The default settings limit warning messages to one every five 1649seconds. 1650 1651warnings 1652-------- 1653 1654This controls console messages from the networking stack that can occur because 1655of problems on the network like duplicate address or bad checksums. Normally, 1656this should be enabled, but if the problem persists the messages can be 1657disabled. 1658 1659 1660netdev_max_backlog 1661------------------ 1662 1663Maximum number of packets, queued on the INPUT side, when the interface 1664receives packets faster than kernel can process them. 1665 1666optmem_max 1667---------- 1668 1669Maximum ancillary buffer size allowed per socket. Ancillary data is a sequence 1670of struct cmsghdr structures with appended data. 1671 1672/proc/sys/net/unix - Parameters for Unix domain sockets 1673------------------------------------------------------- 1674 1675There are only two files in this subdirectory. They control the delays for 1676deleting and destroying socket descriptors. 1677 16782.8 /proc/sys/net/ipv4 - IPV4 settings 1679-------------------------------------- 1680 1681IP version 4 is still the most used protocol in Unix networking. It will be 1682replaced by IP version 6 in the next couple of years, but for the moment it's 1683the de facto standard for the internet and is used in most networking 1684environments around the world. Because of the importance of this protocol, 1685we'll have a deeper look into the subtree controlling the behavior of the IPv4 1686subsystem of the Linux kernel. 1687 1688Let's start with the entries in /proc/sys/net/ipv4. 1689 1690ICMP settings 1691------------- 1692 1693icmp_echo_ignore_all and icmp_echo_ignore_broadcasts 1694---------------------------------------------------- 1695 1696Turn on (1) or off (0), if the kernel should ignore all ICMP ECHO requests, or 1697just those to broadcast and multicast addresses. 1698 1699Please note that if you accept ICMP echo requests with a broadcast/multi\-cast 1700destination address your network may be used as an exploder for denial of 1701service packet flooding attacks to other hosts. 1702 1703icmp_destunreach_rate, icmp_echoreply_rate, icmp_paramprob_rate and icmp_timeexeed_rate 1704--------------------------------------------------------------------------------------- 1705 1706Sets limits for sending ICMP packets to specific targets. A value of zero 1707disables all limiting. Any positive value sets the maximum package rate in 1708hundredth of a second (on Intel systems). 1709 1710IP settings 1711----------- 1712 1713ip_autoconfig 1714------------- 1715 1716This file contains the number one if the host received its IP configuration by 1717RARP, BOOTP, DHCP or a similar mechanism. Otherwise it is zero. 1718 1719ip_default_ttl 1720-------------- 1721 1722TTL (Time To Live) for IPv4 interfaces. This is simply the maximum number of 1723hops a packet may travel. 1724 1725ip_dynaddr 1726---------- 1727 1728Enable dynamic socket address rewriting on interface address change. This is 1729useful for dialup interface with changing IP addresses. 1730 1731ip_forward 1732---------- 1733 1734Enable or disable forwarding of IP packages between interfaces. Changing this 1735value resets all other parameters to their default values. They differ if the 1736kernel is configured as host or router. 1737 1738ip_local_port_range 1739------------------- 1740 1741Range of ports used by TCP and UDP to choose the local port. Contains two 1742numbers, the first number is the lowest port, the second number the highest 1743local port. Default is 1024-4999. Should be changed to 32768-61000 for 1744high-usage systems. 1745 1746ip_no_pmtu_disc 1747--------------- 1748 1749Global switch to turn path MTU discovery off. It can also be set on a per 1750socket basis by the applications or on a per route basis. 1751 1752ip_masq_debug 1753------------- 1754 1755Enable/disable debugging of IP masquerading. 1756 1757IP fragmentation settings 1758------------------------- 1759 1760ipfrag_high_trash and ipfrag_low_trash 1761-------------------------------------- 1762 1763Maximum memory used to reassemble IP fragments. When ipfrag_high_thresh bytes 1764of memory is allocated for this purpose, the fragment handler will toss 1765packets until ipfrag_low_thresh is reached. 1766 1767ipfrag_time 1768----------- 1769 1770Time in seconds to keep an IP fragment in memory. 1771 1772TCP settings 1773------------ 1774 1775tcp_ecn 1776------- 1777 1778This file controls the use of the ECN bit in the IPv4 headers. This is a new 1779feature about Explicit Congestion Notification, but some routers and firewalls 1780block traffic that has this bit set, so it could be necessary to echo 0 to 1781/proc/sys/net/ipv4/tcp_ecn if you want to talk to these sites. For more info 1782you could read RFC2481. 1783 1784tcp_retrans_collapse 1785-------------------- 1786 1787Bug-to-bug compatibility with some broken printers. On retransmit, try to send 1788larger packets to work around bugs in certain TCP stacks. Can be turned off by 1789setting it to zero. 1790 1791tcp_keepalive_probes 1792-------------------- 1793 1794Number of keep alive probes TCP sends out, until it decides that the 1795connection is broken. 1796 1797tcp_keepalive_time 1798------------------ 1799 1800How often TCP sends out keep alive messages, when keep alive is enabled. The 1801default is 2 hours. 1802 1803tcp_syn_retries 1804--------------- 1805 1806Number of times initial SYNs for a TCP connection attempt will be 1807retransmitted. Should not be higher than 255. This is only the timeout for 1808outgoing connections, for incoming connections the number of retransmits is 1809defined by tcp_retries1. 1810 1811tcp_sack 1812-------- 1813 1814Enable select acknowledgments after RFC2018. 1815 1816tcp_timestamps 1817-------------- 1818 1819Enable timestamps as defined in RFC1323. 1820 1821tcp_stdurg 1822---------- 1823 1824Enable the strict RFC793 interpretation of the TCP urgent pointer field. The 1825default is to use the BSD compatible interpretation of the urgent pointer 1826pointing to the first byte after the urgent data. The RFC793 interpretation is 1827to have it point to the last byte of urgent data. Enabling this option may 1828lead to interoperability problems. Disabled by default. 1829 1830tcp_syncookies 1831-------------- 1832 1833Only valid when the kernel was compiled with CONFIG_SYNCOOKIES. Send out 1834syncookies when the syn backlog queue of a socket overflows. This is to ward 1835off the common 'syn flood attack'. Disabled by default. 1836 1837Note that the concept of a socket backlog is abandoned. This means the peer 1838may not receive reliable error messages from an over loaded server with 1839syncookies enabled. 1840 1841tcp_window_scaling 1842------------------ 1843 1844Enable window scaling as defined in RFC1323. 1845 1846tcp_fin_timeout 1847--------------- 1848 1849The length of time in seconds it takes to receive a final FIN before the 1850socket is always closed. This is strictly a violation of the TCP 1851specification, but required to prevent denial-of-service attacks. 1852 1853tcp_max_ka_probes 1854----------------- 1855 1856Indicates how many keep alive probes are sent per slow timer run. Should not 1857be set too high to prevent bursts. 1858 1859tcp_max_syn_backlog 1860------------------- 1861 1862Length of the per socket backlog queue. Since Linux 2.2 the backlog specified 1863in listen(2) only specifies the length of the backlog queue of already 1864established sockets. When more connection requests arrive Linux starts to drop 1865packets. When syncookies are enabled the packets are still answered and the 1866maximum queue is effectively ignored. 1867 1868tcp_retries1 1869------------ 1870 1871Defines how often an answer to a TCP connection request is retransmitted 1872before giving up. 1873 1874tcp_retries2 1875------------ 1876 1877Defines how often a TCP packet is retransmitted before giving up. 1878 1879Interface specific settings 1880--------------------------- 1881 1882In the directory /proc/sys/net/ipv4/conf you'll find one subdirectory for each 1883interface the system knows about and one directory calls all. Changes in the 1884all subdirectory affect all interfaces, whereas changes in the other 1885subdirectories affect only one interface. All directories have the same 1886entries: 1887 1888accept_redirects 1889---------------- 1890 1891This switch decides if the kernel accepts ICMP redirect messages or not. The 1892default is 'yes' if the kernel is configured for a regular host and 'no' for a 1893router configuration. 1894 1895accept_source_route 1896------------------- 1897 1898Should source routed packages be accepted or declined. The default is 1899dependent on the kernel configuration. It's 'yes' for routers and 'no' for 1900hosts. 1901 1902bootp_relay 1903~~~~~~~~~~~ 1904 1905Accept packets with source address 0.b.c.d with destinations not to this host 1906as local ones. It is supposed that a BOOTP relay daemon will catch and forward 1907such packets. 1908 1909The default is 0, since this feature is not implemented yet (kernel version 19102.2.12). 1911 1912forwarding 1913---------- 1914 1915Enable or disable IP forwarding on this interface. 1916 1917log_martians 1918------------ 1919 1920Log packets with source addresses with no known route to kernel log. 1921 1922mc_forwarding 1923------------- 1924 1925Do multicast routing. The kernel needs to be compiled with CONFIG_MROUTE and a 1926multicast routing daemon is required. 1927 1928proxy_arp 1929--------- 1930 1931Does (1) or does not (0) perform proxy ARP. 1932 1933rp_filter 1934--------- 1935 1936Integer value determines if a source validation should be made. 1 means yes, 0 1937means no. Disabled by default, but local/broadcast address spoofing is always 1938on. 1939 1940If you set this to 1 on a router that is the only connection for a network to 1941the net, it will prevent spoofing attacks against your internal networks 1942(external addresses can still be spoofed), without the need for additional 1943firewall rules. 1944 1945secure_redirects 1946---------------- 1947 1948Accept ICMP redirect messages only for gateways, listed in default gateway 1949list. Enabled by default. 1950 1951shared_media 1952------------ 1953 1954If it is not set the kernel does not assume that different subnets on this 1955device can communicate directly. Default setting is 'yes'. 1956 1957send_redirects 1958-------------- 1959 1960Determines whether to send ICMP redirects to other hosts. 1961 1962Routing settings 1963---------------- 1964 1965The directory /proc/sys/net/ipv4/route contains several file to control 1966routing issues. 1967 1968error_burst and error_cost 1969-------------------------- 1970 1971These parameters are used to limit how many ICMP destination unreachable to 1972send from the host in question. ICMP destination unreachable messages are 1973sent when we cannot reach the next hop while trying to transmit a packet. 1974It will also print some error messages to kernel logs if someone is ignoring 1975our ICMP redirects. The higher the error_cost factor is, the fewer 1976destination unreachable and error messages will be let through. Error_burst 1977controls when destination unreachable messages and error messages will be 1978dropped. The default settings limit warning messages to five every second. 1979 1980flush 1981----- 1982 1983Writing to this file results in a flush of the routing cache. 1984 1985gc_elasticity, gc_interval, gc_min_interval_ms, gc_timeout, gc_thresh 1986--------------------------------------------------------------------- 1987 1988Values to control the frequency and behavior of the garbage collection 1989algorithm for the routing cache. gc_min_interval is deprecated and replaced 1990by gc_min_interval_ms. 1991 1992 1993max_size 1994-------- 1995 1996Maximum size of the routing cache. Old entries will be purged once the cache 1997reached has this size. 1998 1999redirect_load, redirect_number 2000------------------------------ 2001 2002Factors which determine if more ICPM redirects should be sent to a specific 2003host. No redirects will be sent once the load limit or the maximum number of 2004redirects has been reached. 2005 2006redirect_silence 2007---------------- 2008 2009Timeout for redirects. After this period redirects will be sent again, even if 2010this has been stopped, because the load or number limit has been reached. 2011 2012Network Neighbor handling 2013------------------------- 2014 2015Settings about how to handle connections with direct neighbors (nodes attached 2016to the same link) can be found in the directory /proc/sys/net/ipv4/neigh. 2017 2018As we saw it in the conf directory, there is a default subdirectory which 2019holds the default values, and one directory for each interface. The contents 2020of the directories are identical, with the single exception that the default 2021settings contain additional options to set garbage collection parameters. 2022 2023In the interface directories you'll find the following entries: 2024 2025base_reachable_time, base_reachable_time_ms 2026------------------------------------------- 2027 2028A base value used for computing the random reachable time value as specified 2029in RFC2461. 2030 2031Expression of base_reachable_time, which is deprecated, is in seconds. 2032Expression of base_reachable_time_ms is in milliseconds. 2033 2034retrans_time, retrans_time_ms 2035----------------------------- 2036 2037The time between retransmitted Neighbor Solicitation messages. 2038Used for address resolution and to determine if a neighbor is 2039unreachable. 2040 2041Expression of retrans_time, which is deprecated, is in 1/100 seconds (for 2042IPv4) or in jiffies (for IPv6). 2043Expression of retrans_time_ms is in milliseconds. 2044 2045unres_qlen 2046---------- 2047 2048Maximum queue length for a pending arp request - the number of packets which 2049are accepted from other layers while the ARP address is still resolved. 2050 2051anycast_delay 2052------------- 2053 2054Maximum for random delay of answers to neighbor solicitation messages in 2055jiffies (1/100 sec). Not yet implemented (Linux does not have anycast support 2056yet). 2057 2058ucast_solicit 2059------------- 2060 2061Maximum number of retries for unicast solicitation. 2062 2063mcast_solicit 2064------------- 2065 2066Maximum number of retries for multicast solicitation. 2067 2068delay_first_probe_time 2069---------------------- 2070 2071Delay for the first time probe if the neighbor is reachable. (see 2072gc_stale_time) 2073 2074locktime 2075-------- 2076 2077An ARP/neighbor entry is only replaced with a new one if the old is at least 2078locktime old. This prevents ARP cache thrashing. 2079 2080proxy_delay 2081----------- 2082 2083Maximum time (real time is random [0..proxytime]) before answering to an ARP 2084request for which we have an proxy ARP entry. In some cases, this is used to 2085prevent network flooding. 2086 2087proxy_qlen 2088---------- 2089 2090Maximum queue length of the delayed proxy arp timer. (see proxy_delay). 2091 2092app_solicit 2093---------- 2094 2095Determines the number of requests to send to the user level ARP daemon. Use 0 2096to turn off. 2097 2098gc_stale_time 2099------------- 2100 2101Determines how often to check for stale ARP entries. After an ARP entry is 2102stale it will be resolved again (which is useful when an IP address migrates 2103to another machine). When ucast_solicit is greater than 0 it first tries to 2104send an ARP packet directly to the known host When that fails and 2105mcast_solicit is greater than 0, an ARP request is broadcasted. 2106 21072.9 Appletalk 2108------------- 2109 2110The /proc/sys/net/appletalk directory holds the Appletalk configuration data 2111when Appletalk is loaded. The configurable parameters are: 2112 2113aarp-expiry-time 2114---------------- 2115 2116The amount of time we keep an ARP entry before expiring it. Used to age out 2117old hosts. 2118 2119aarp-resolve-time 2120----------------- 2121 2122The amount of time we will spend trying to resolve an Appletalk address. 2123 2124aarp-retransmit-limit 2125--------------------- 2126 2127The number of times we will retransmit a query before giving up. 2128 2129aarp-tick-time 2130-------------- 2131 2132Controls the rate at which expires are checked. 2133 2134The directory /proc/net/appletalk holds the list of active Appletalk sockets 2135on a machine. 2136 2137The fields indicate the DDP type, the local address (in network:node format) 2138the remote address, the size of the transmit pending queue, the size of the 2139received queue (bytes waiting for applications to read) the state and the uid 2140owning the socket. 2141 2142/proc/net/atalk_iface lists all the interfaces configured for appletalk.It 2143shows the name of the interface, its Appletalk address, the network range on 2144that address (or network number for phase 1 networks), and the status of the 2145interface. 2146 2147/proc/net/atalk_route lists each known network route. It lists the target 2148(network) that the route leads to, the router (may be directly connected), the 2149route flags, and the device the route is using. 2150 21512.10 IPX 2152-------- 2153 2154The IPX protocol has no tunable values in proc/sys/net. 2155 2156The IPX protocol does, however, provide proc/net/ipx. This lists each IPX 2157socket giving the local and remote addresses in Novell format (that is 2158network:node:port). In accordance with the strange Novell tradition, 2159everything but the port is in hex. Not_Connected is displayed for sockets that 2160are not tied to a specific remote address. The Tx and Rx queue sizes indicate 2161the number of bytes pending for transmission and reception. The state 2162indicates the state the socket is in and the uid is the owning uid of the 2163socket. 2164 2165The /proc/net/ipx_interface file lists all IPX interfaces. For each interface 2166it gives the network number, the node number, and indicates if the network is 2167the primary network. It also indicates which device it is bound to (or 2168Internal for internal networks) and the Frame Type if appropriate. Linux 2169supports 802.3, 802.2, 802.2 SNAP and DIX (Blue Book) ethernet framing for 2170IPX. 2171 2172The /proc/net/ipx_route table holds a list of IPX routes. For each route it 2173gives the destination network, the router node (or Directly) and the network 2174address of the router (or Connected) for internal networks. 2175 21762.11 /proc/sys/fs/mqueue - POSIX message queues filesystem 2177---------------------------------------------------------- 2178 2179The "mqueue" filesystem provides the necessary kernel features to enable the 2180creation of a user space library that implements the POSIX message queues 2181API (as noted by the MSG tag in the POSIX 1003.1-2001 version of the System 2182Interfaces specification.) 2183 2184The "mqueue" filesystem contains values for determining/setting the amount of 2185resources used by the file system. 2186 2187/proc/sys/fs/mqueue/queues_max is a read/write file for setting/getting the 2188maximum number of message queues allowed on the system. 2189 2190/proc/sys/fs/mqueue/msg_max is a read/write file for setting/getting the 2191maximum number of messages in a queue value. In fact it is the limiting value 2192for another (user) limit which is set in mq_open invocation. This attribute of 2193a queue must be less or equal then msg_max. 2194 2195/proc/sys/fs/mqueue/msgsize_max is a read/write file for setting/getting the 2196maximum message size value (it is every message queue's attribute set during 2197its creation). 2198 21992.12 /proc/<pid>/oom_adj - Adjust the oom-killer score 2200------------------------------------------------------ 2201 2202This file can be used to adjust the score used to select which processes 2203should be killed in an out-of-memory situation. Giving it a high score will 2204increase the likelihood of this process being killed by the oom-killer. Valid 2205values are in the range -16 to +15, plus the special value -17, which disables 2206oom-killing altogether for this process. 2207 22082.13 /proc/<pid>/oom_score - Display current oom-killer score 2209------------------------------------------------------------- 2210 2211------------------------------------------------------------------------------ 2212This file can be used to check the current score used by the oom-killer is for 2213any given <pid>. Use it together with /proc/<pid>/oom_adj to tune which 2214process should be killed in an out-of-memory situation. 2215 2216------------------------------------------------------------------------------ 2217Summary 2218------------------------------------------------------------------------------ 2219Certain aspects of kernel behavior can be modified at runtime, without the 2220need to recompile the kernel, or even to reboot the system. The files in the 2221/proc/sys tree can not only be read, but also modified. You can use the echo 2222command to write value into these files, thereby changing the default settings 2223of the kernel. 2224------------------------------------------------------------------------------ 2225 22262.14 /proc/<pid>/io - Display the IO accounting fields 2227------------------------------------------------------- 2228 2229This file contains IO statistics for each running process 2230 2231Example 2232------- 2233 2234test:/tmp # dd if=/dev/zero of=/tmp/test.dat & 2235[1] 3828 2236 2237test:/tmp # cat /proc/3828/io 2238rchar: 323934931 2239wchar: 323929600 2240syscr: 632687 2241syscw: 632675 2242read_bytes: 0 2243write_bytes: 323932160 2244cancelled_write_bytes: 0 2245 2246 2247Description 2248----------- 2249 2250rchar 2251----- 2252 2253I/O counter: chars read 2254The number of bytes which this task has caused to be read from storage. This 2255is simply the sum of bytes which this process passed to read() and pread(). 2256It includes things like tty IO and it is unaffected by whether or not actual 2257physical disk IO was required (the read might have been satisfied from 2258pagecache) 2259 2260 2261wchar 2262----- 2263 2264I/O counter: chars written 2265The number of bytes which this task has caused, or shall cause to be written 2266to disk. Similar caveats apply here as with rchar. 2267 2268 2269syscr 2270----- 2271 2272I/O counter: read syscalls 2273Attempt to count the number of read I/O operations, i.e. syscalls like read() 2274and pread(). 2275 2276 2277syscw 2278----- 2279 2280I/O counter: write syscalls 2281Attempt to count the number of write I/O operations, i.e. syscalls like 2282write() and pwrite(). 2283 2284 2285read_bytes 2286---------- 2287 2288I/O counter: bytes read 2289Attempt to count the number of bytes which this process really did cause to 2290be fetched from the storage layer. Done at the submit_bio() level, so it is 2291accurate for block-backed filesystems. <please add status regarding NFS and 2292CIFS at a later time> 2293 2294 2295write_bytes 2296----------- 2297 2298I/O counter: bytes written 2299Attempt to count the number of bytes which this process caused to be sent to 2300the storage layer. This is done at page-dirtying time. 2301 2302 2303cancelled_write_bytes 2304--------------------- 2305 2306The big inaccuracy here is truncate. If a process writes 1MB to a file and 2307then deletes the file, it will in fact perform no writeout. But it will have 2308been accounted as having caused 1MB of write. 2309In other words: The number of bytes which this process caused to not happen, 2310by truncating pagecache. A task can cause "negative" IO too. If this task 2311truncates some dirty pagecache, some IO which another task has been accounted 2312for (in it's write_bytes) will not be happening. We _could_ just subtract that 2313from the truncating task's write_bytes, but there is information loss in doing 2314that. 2315 2316 2317Note 2318---- 2319 2320At its current implementation state, this is a bit racy on 32-bit machines: if 2321process A reads process B's /proc/pid/io while process B is updating one of 2322those 64-bit counters, process A could see an intermediate result. 2323 2324 2325More information about this can be found within the taskstats documentation in 2326Documentation/accounting. 2327 23282.15 /proc/<pid>/coredump_filter - Core dump filtering settings 2329--------------------------------------------------------------- 2330When a process is dumped, all anonymous memory is written to a core file as 2331long as the size of the core file isn't limited. But sometimes we don't want 2332to dump some memory segments, for example, huge shared memory. Conversely, 2333sometimes we want to save file-backed memory segments into a core file, not 2334only the individual files. 2335 2336/proc/<pid>/coredump_filter allows you to customize which memory segments 2337will be dumped when the <pid> process is dumped. coredump_filter is a bitmask 2338of memory types. If a bit of the bitmask is set, memory segments of the 2339corresponding memory type are dumped, otherwise they are not dumped. 2340 2341The following 4 memory types are supported: 2342 - (bit 0) anonymous private memory 2343 - (bit 1) anonymous shared memory 2344 - (bit 2) file-backed private memory 2345 - (bit 3) file-backed shared memory 2346 2347 Note that MMIO pages such as frame buffer are never dumped and vDSO pages 2348 are always dumped regardless of the bitmask status. 2349 2350Default value of coredump_filter is 0x3; this means all anonymous memory 2351segments are dumped. 2352 2353If you don't want to dump all shared memory segments attached to pid 1234, 2354write 1 to the process's proc file. 2355 2356 $ echo 0x1 > /proc/1234/coredump_filter 2357 2358When a new process is created, the process inherits the bitmask status from its 2359parent. It is useful to set up coredump_filter before the program runs. 2360For example: 2361 2362 $ echo 0x7 > /proc/self/coredump_filter 2363 $ ./some_program 2364 23652.16 /proc/<pid>/mountinfo - Information about mounts 2366-------------------------------------------------------- 2367 2368This file contains lines of the form: 2369 237036 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue 2371(1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11) 2372 2373(1) mount ID: unique identifier of the mount (may be reused after umount) 2374(2) parent ID: ID of parent (or of self for the top of the mount tree) 2375(3) major:minor: value of st_dev for files on filesystem 2376(4) root: root of the mount within the filesystem 2377(5) mount point: mount point relative to the process's root 2378(6) mount options: per mount options 2379(7) optional fields: zero or more fields of the form "tag[:value]" 2380(8) separator: marks the end of the optional fields 2381(9) filesystem type: name of filesystem of the form "type[.subtype]" 2382(10) mount source: filesystem specific information or "none" 2383(11) super options: per super block options 2384 2385Parsers should ignore all unrecognised optional fields. Currently the 2386possible optional fields are: 2387 2388shared:X mount is shared in peer group X 2389master:X mount is slave to peer group X 2390propagate_from:X mount is slave and receives propagation from peer group X (*) 2391unbindable mount is unbindable 2392 2393(*) X is the closest dominant peer group under the process's root. If 2394X is the immediate master of the mount, or if there's no dominant peer 2395group under the same root, then only the "master:X" field is present 2396and not the "propagate_from:X" field. 2397 2398For more information on mount propagation see: 2399 2400 Documentation/filesystems/sharedsubtree.txt 2401 2402------------------------------------------------------------------------------