patch-2.3.22 linux/Documentation/filesystems/proc.txt

Next file: linux/Documentation/filesystems/smbfs.txt
Previous file: linux/Documentation/SMP.txt
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.21/linux/Documentation/filesystems/proc.txt linux/Documentation/filesystems/proc.txt
@@ -1,1379 +1,1714 @@
+------------------------------------------------------------------------------
+                       T H E  /proc   F I L E S Y S T E M
+------------------------------------------------------------------------------
+/proc/sys         Terrehon Bowden <terrehon@pacbell.net>        October 7 1999
+                  Bodo Bauer <bb@ricochet.net>
+------------------------------------------------------------------------------
+Version 1.2                                              Kernel version 2.2.12
+------------------------------------------------------------------------------
+
+Table of Contents
+-----------------
+
+  0     Preface
+  0.1	Introduction/Credits
+  0.2	Legal Stuff
+
+  1	Collecting System Information
+  1.1	Process-Specific Subdirectories
+  1.2	Kernel data
+  1.3	IDE devices in /proc/ide
+  1.4	Networking info in /proc/net
+  1.5	SCSI info
+  1.6	Parallel port info in /proc/parport
+  1.7	TTY info in /proc/tty
+
+  2	Modifying System Parameters
+  2.1	/proc/sys/fs - File system data
+  2.2	/proc/sys/fs/binfmt_misc - Miscellaneous binary formats
+  2.3	/proc/sys/kernel - general kernel parameters
+  2.4	/proc/sys/vm - The virtual memory subsystem
+  2.5	/proc/sys/dev - Device specific parameters
+  2.6	/proc/sys/sunrpc - Remote procedure calls
+  2.7	/proc/sys/net - Networking stuff
+  2.8	/proc/sys/net/ipv4 - IPV4 settings
+  2.9	Appletalk
+  2.10	IPX
+
+------------------------------------------------------------------------------
+Preface
+------------------------------------------------------------------------------
+
+0.1 Introduction/Credits
+------------------------
+
+This documentation  is  part  of a soon (or so we hope) to be released book on
+the SuSE  Linux  distribution.  As  there is no complete documentation for the
+/proc file  system and we've used many freely available sources to write these
+chapters, it  seems  only  fair  to give the work back to the Linux community.
+This work is based on the 2.2.* kernel version. I'm afraid it's still far from
+complete, but  we  hope  it will be useful. As far as we know, it is the first
+'all-in-one' document  about the /proc file system. It is focused on the Intel
+x86 hardware,  so if you are looking for PPC, ARM, SPARC, APX, etc., features,
+you probably  won't  find  what  you are looking for. It also only covers IPv4
+networking, not  IPv6  nor  other protocols - sorry. But additions and patches
+are welcome and will be added to this document if you mail them to Bodo.
+
+We'd like  to  thank Alan Cox, Rik van Riel, and Alexey Kuznetsov and a lot of
+other people for help compiling this documentation. We'd also like to extend a
+special thank  you to Andi Kleen for documentation, which we relied on heavily
+to create  this  document,  as well as the additional information he provided.
+Thanks to  everybody  else  who contributed source or docs to the Linux kernel
+and helped create a great piece of software... :)
+
+If you  have  any comments, corrections or additions, please don't hesitate to
+contact Bodo  Bauer  at  bb@ricochet.net.  We'll  be happy to add them to this
+document.
+
+The latest  version  of  this  document  is  available  online  at
+http://skaro.nightcrawler.com/~bb/Docs/Proc as HTML version.
+
+0.2 Legal Stuff
+---------------
+
+We don't  guarantee  the  correctness  of this document, and if you come to us
+complaining about  how  you  screwed  up  your  system  because  of  incorrect
+documentation, we won't feel responsible...
+
+------------------------------------------------------------------------------
+CHAPTER 1: COLLECTING SYSTEM INFORMATION
+------------------------------------------------------------------------------
+
+------------------------------------------------------------------------------
+In This Chapter
+------------------------------------------------------------------------------
+* Investigating  the  properties  of  the  pseudo  file  system  /proc and its
+  ability to provide information on the running Linux system
+* Examining /proc's structure
+* Uncovering  various  information  about the kernel and the processes running
+  on the system
+------------------------------------------------------------------------------
+
+
+The proc  file  system acts as an interface to internal data structures in the
+kernel. It  can  be  used to obtain information about the system and to change
+certain kernel parameters at runtime.
+
+First, we'll  take  a  look  at the read-only parts of /proc. In Chapter 2, we
+show you how you can use /proc/sys to change settings.
+
+1.1 Process-Specific Subdirectories
+-----------------------------------
+
+The directory  /proc  contains  (among other things) one subdirectory for each
+process running on the system, which is named after the process ID (PID).
+
+The link  self  points  to  the  process reading the file system. Each process
+subdirectory has the entries listed in Table 1-1.
+
+
+Table 1-1: Process specific entries in /proc 
+..............................................................................
+ File    Content                                        
+ cmdline Command line arguments                         
+ environ Values of environment variables                
+ fd      Directory, which contains all file descriptors 
+ mem     Memory held by this process                    
+ stat    Process status                                 
+ status  Process status in human readable form          
+ cwd     Link to the current working directory          
+ exe     Link to the executable of this process         
+ maps    Memory maps                                    
+ root    Link to the root directory of this process     
+ statm   Process memory status information              
+..............................................................................
+
+For example, to get the status information of a process, all you have to do is
+read the file /proc/PID/status:
+
+  >cat /proc/self/status 
+  Name:   cat 
+  State:  R (running) 
+  Pid:    5452 
+  PPid:   743 
+  Uid:    501     501     501     501 
+  Gid:    100     100     100     100 
+  Groups: 100 14 16 
+  VmSize:     1112 kB 
+  VmLck:         0 kB 
+  VmRSS:       348 kB 
+  VmData:       24 kB 
+  VmStk:        12 kB 
+  VmExe:         8 kB 
+  VmLib:      1044 kB 
+  SigPnd: 0000000000000000 
+  SigBlk: 0000000000000000 
+  SigIgn: 0000000000000000 
+  SigCgt: 0000000000000000 
+  CapInh: 00000000fffffeff 
+  CapPrm: 0000000000000000 
+  CapEff: 0000000000000000 
+
+
+This shows you nearly the same information you would get if you viewed it with
+the ps  command.  In  fact,  ps  uses  the  proc  file  system  to  obtain its
+information. The  statm  file  contains  more  detailed  information about the
+process memory usage. Its seven fields are explained in Table 1-2.
+
+
+Table 1-2: Contents of the statm files 
+..............................................................................
+ File     Content                         
+ size     total program size              
+ resident size of memory portions         
+ shared   number of pages that are shared 
+ trs      number of pages that are 'code' 
+ drs      number of pages of data/stack   
+ lrs      number of pages of library      
+ dt       number of dirty pages           
+..............................................................................
+
+1.2 Kernel data
+---------------
+
+Similar to  the  process entries, the kernel data files give information about
+the running kernel. The files used to obtain this information are contained in
+/proc and  are  listed  in Table 1-3. Not all of these will be present in your
+system. It  depends  on the kernel configuration and the loaded modules, which
+files are there, and which are missing.
+
+Table 1-3: Kernel info in /proc 
+..............................................................................
+ File        Content                                           
+ apm         Advanced power management info                    
+ bus         Directory containing bus specific information     
+ cmdline     Kernel command line                               
+ cpuinfo     Info about the CPU                                
+ devices     Available devices (block and character)           
+ dma         Used DMS channels                                 
+ filesystems Supported filesystems                             
+ ide         Directory containing info about the IDE subsystem 
+ interrupts  Interrupt usage                                   
+ ioports     I/O port usage                                    
+ kcore       Kernel core image                                 
+ kmsg        Kernel messages                                   
+ ksyms       Kernel symbol table                               
+ loadavg     Load average                                      
+ locks       Kernel locks                                      
+ meminfo     Memory info                                       
+ misc        Miscellaneous                                     
+ modules     List of loaded modules                            
+ mounts      Mounted filesystems                               
+ net         Networking info (see text)                        
+ partitions  Table of partitions known to the system           
+ rtc         Real time clock                                   
+ scsi        SCSI info (see text)                              
+ slabinfo    Slab pool info                                    
+ stat        Overall statistics                                
+ swaps       Swap space utilization                            
+ sys         See chapter 2                                     
+ uptime      System uptime                                     
+ version     Kernel version                                    
+..............................................................................
+
+You can,  for  example,  check  which interrupts are currently in use and what
+they are used for by looking in the file /proc/interrupts:
+
+  > cat /proc/interrupts 
+             CPU0        
+    0:    8728810          XT-PIC  timer 
+    1:        895          XT-PIC  keyboard 
+    2:          0          XT-PIC  cascade 
+    3:     531695          XT-PIC  aha152x 
+    4:    2014133          XT-PIC  serial 
+    5:      44401          XT-PIC  pcnet_cs 
+    8:          2          XT-PIC  rtc 
+   11:          8          XT-PIC  i82365 
+   12:     182918          XT-PIC  PS/2 Mouse 
+   13:          1          XT-PIC  fpu 
+   14:    1232265          XT-PIC  ide0 
+   15:          7          XT-PIC  ide1 
+  NMI:          0 
+
+
+There are  three  more  important subdirectories in /proc: net, scsi, and sys.
+The general  rule  is  that  the  contents,  or  even  the  existence of these
+directories, depend  on your kernel configuration. If SCSI is not enabled, the
+directory scsi  may  not  exist. The same is true with the net, which is there
+only when networking support is present in the running kernel.
+
+The slabinfo  file  gives  information  about  memory usage at the slab level.
+Linux uses  slab  pools for memory management above page level in version 2.2.
+Commonly used  objects  have  their  own  slab  pool (such as network buffers,
+directory cache, and so on).
+
+1.3 IDE devices in /proc/ide
+----------------------------
+
+The subdirectory /proc/ide contains information about all IDE devices of which
+the kernel  is  aware.  There is one subdirectory for each IDE controller, the
+file drivers  and a link for each IDE device, pointing to the device directory
+in the controller specific subtree.
+
+The file  drivers  contains general information about the drivers used for the
+IDE devices:
+
+  > cat /proc/ide/drivers 
+  ide-cdrom version 4.53 
+  ide-disk version 1.08 
+
+
+More detailed  information  can  be  found  in  the  controller  specific
+subdirectories. These  are  named  ide0,  ide1  and  so  on.  Each  of  these
+directories contains the files shown in table 1-4.
+
+
+Table 1-4: IDE controller info in  /proc/ide/ide? 
+..............................................................................
+ File    Content                                 
+ channel IDE channel (0 or 1)                    
+ config  Configuration (only for PCI/IDE bridge) 
+ mate    Mate name                               
+ model   Type/Chipset of IDE controller          
+..............................................................................
+
+Each device  connected  to  a  controller  has  a separate subdirectory in the
+controllers directory.  The  files  listed in table 1-5 are contained in these
+directories.
+
+
+Table 1-5: IDE device information 
+..............................................................................
+ File             Content                                    
+ cache            The cache                                  
+ capacity         Capacity of the medium (in 512Byte blocks) 
+ driver           driver and version                         
+ geometry         physical and logical geometry              
+ identify         device identify block                      
+ media            media type                                 
+ model            device identifier                          
+ settings         device setup                               
+ smart_thresholds IDE disk management thresholds             
+ smart_values     IDE disk management values                 
+..............................................................................
+
+The most  interesting  file is settings. This file contains a nice overview of
+the drive parameters:
+
+  # cat /proc/ide/ide0/hda/settings 
+  name                    value           min             max             mode 
+  ----                    -----           ---             ---             ---- 
+  bios_cyl                526             0               65535           rw 
+  bios_head               255             0               255             rw 
+  bios_sect               63              0               63              rw 
+  breada_readahead        4               0               127             rw 
+  bswap                   0               0               1               r 
+  file_readahead          72              0               2097151         rw 
+  io_32bit                0               0               3               rw 
+  keepsettings            0               0               1               rw 
+  max_kb_per_request      122             1               127             rw 
+  multcount               0               0               8               rw 
+  nice1                   1               0               1               rw 
+  nowerr                  0               0               1               rw 
+  pio_mode                write-only      0               255             w 
+  slow                    0               0               1               rw 
+  unmaskirq               0               0               1               rw 
+  using_dma               0               0               1               rw 
+
+
+1.4 Networking info in /proc/net
+--------------------------------
+
+The subdirectory  /proc/net  follows  the  usual  pattern. Table 1-6 shows the
+additional values  you  get  for  IP  version 6 if you configure the kernel to
+support this. Table 1-7 lists the files and their meaning.
+
+
+Table 1-6: IPv6 info in /proc/net 
+..............................................................................
+ File       Content                                               
+ udp6       UDP sockets (IPv6)                                    
+ tcp6       TCP sockets (IPv6)                                    
+ raw6       Raw device statistics (IPv6)                          
+ igmp6      IP multicast addresses, which this host joined (IPv6) 
+ if_inet6   List of IPv6 interface addresses                      
+ ipv6_route Kernel routing table for IPv6                         
+ rt6_stats  Global IPv6 routing tables statistics                 
+ sockstat6  Socket statistics (IPv6)                              
+ snmp6      Snmp data (IPv6)                                      
+..............................................................................
+
+
+Table 1-7: Network info in /proc/net 
+..............................................................................
+ File          Content                                                         
+ arp           Kernel  ARP table                                               
+ dev           network devices with statistics                                 
+ dev_mcast     the Layer2 multicast groups a device is listening too
+               (interface index, label, number of references, number of bound
+               addresses). 
+ dev_stat      network device status                                           
+ ip_fwchains   Firewall chain linkage                                          
+ ip_fwnames    Firewall chain names                                            
+ ip_masq       Directory containing the masquerading tables                    
+ ip_masquerade Major masquerading table                                        
+ netstat       Network statistics                                              
+ raw           raw device statistics                                           
+ route         Kernel routing table                                            
+ rpc           Directory containing rpc info                                   
+ rt_cache      Routing cache                                                   
+ snmp          SNMP data                                                       
+ sockstat      Socket statistics                                               
+ tcp           TCP  sockets                                                    
+ tr_rif        Token ring RIF routing table                                    
+ udp           UDP sockets                                                     
+ unix          UNIX domain sockets                                             
+ wireless      Wireless interface data (Wavelan etc)                           
+ igmp          IP multicast addresses, which this host joined                  
+ psched        Global packet scheduler parameters.                             
+ netlink       List of PF_NETLINK sockets                                      
+ ip_mr_vifs    List of multicast virtual interfaces                            
+ ip_mr_cache   List of multicast routing cache                                 
+..............................................................................
+
+You can  use  this  information  to see which network devices are available in
+your system and how much traffic was routed over those devices:
+
+  > cat /proc/net/dev 
+  Inter-|Receive                                                   |[... 
+   face |bytes    packets errs drop fifo frame compressed multicast|[... 
+      lo:  908188   5596     0    0    0     0          0         0 [...         
+    ppp0:15475140  20721   410    0    0   410          0         0 [...  
+    eth0:  614530   7085     0    0    0     0          0         1 [... 
+   
+  ...] Transmit 
+  ...] bytes    packets errs drop fifo colls carrier compressed 
+  ...]  908188     5596    0    0    0     0       0          0 
+  ...] 1375103    17405    0    0    0     0       0          0 
+  ...] 1703981     5535    0    0    0     3       0          0 
+
+
+1.5 SCSI info
+-------------
+
+If you  have  a  SCSI  host adapter in your system, you'll find a subdirectory
+named after  the driver for this adapter in /proc/scsi. You'll also see a list
+of all recognized SCSI devices in /proc/scsi:
+
+  >cat /proc/scsi/scsi 
+  Attached devices: 
+  Host: scsi0 Channel: 00 Id: 00 Lun: 00 
+    Vendor: IBM      Model: DGHS09U          Rev: 03E0 
+    Type:   Direct-Access                    ANSI SCSI revision: 03 
+  Host: scsi0 Channel: 00 Id: 06 Lun: 00 
+    Vendor: PIONEER  Model: CD-ROM DR-U06S   Rev: 1.04 
+    Type:   CD-ROM                           ANSI SCSI revision: 02 
+
+
+The directory  named  after  the driver has one file for each adapter found in
+the system.  These  files  contain information about the controller, including
+the used  IRQ  and  the  IO  address range. The amount of information shown is
+dependent on  the adapter you use. The example shows the output for an Adaptec
+AHA-2940 SCSI adapter:
+
+  > cat /proc/scsi/aic7xxx/0 
+   
+  Adaptec AIC7xxx driver version: 5.1.19/3.2.4 
+  Compile Options: 
+    TCQ Enabled By Default : Disabled 
+    AIC7XXX_PROC_STATS     : Disabled 
+    AIC7XXX_RESET_DELAY    : 5 
+  Adapter Configuration: 
+             SCSI Adapter: Adaptec AHA-294X Ultra SCSI host adapter 
+                             Ultra Wide Controller 
+      PCI MMAPed I/O Base: 0xeb001000 
+   Adapter SEEPROM Config: SEEPROM found and used. 
+        Adaptec SCSI BIOS: Enabled 
+                      IRQ: 10 
+                     SCBs: Active 0, Max Active 2, 
+                           Allocated 15, HW 16, Page 255 
+               Interrupts: 160328 
+        BIOS Control Word: 0x18b6 
+     Adapter Control Word: 0x005b 
+     Extended Translation: Enabled 
+  Disconnect Enable Flags: 0xffff 
+       Ultra Enable Flags: 0x0001 
+   Tag Queue Enable Flags: 0x0000 
+  Ordered Queue Tag Flags: 0x0000 
+  Default Tag Queue Depth: 8 
+      Tagged Queue By Device array for aic7xxx host instance 0: 
+        {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255} 
+      Actual queue depth per device for aic7xxx host instance 0: 
+        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} 
+  Statistics: 
+  (scsi0:0:0:0) 
+    Device using Wide/Sync transfers at 40.0 MByte/sec, offset 8 
+    Transinfo settings: current(12/8/1/0), goal(12/8/1/0), user(12/15/1/0) 
+    Total transfers 160151 (74577 reads and 85574 writes) 
+  (scsi0:0:6:0) 
+    Device using Narrow/Sync transfers at 5.0 MByte/sec, offset 15 
+    Transinfo settings: current(50/15/0/0), goal(50/15/0/0), user(50/15/0/0) 
+    Total transfers 0 (0 reads and 0 writes) 
+
+
+1.6 Parallel port info in /proc/parport
+---------------------------------------
+
+The directory  /proc/parport  contains information about the parallel ports of
+your system.  It  has  one  subdirectory  for  each port, named after the port
+number (0,1,2,...).
+
+These directories contain the four files shown in Table 1-8.
+
+
+Table 1-8: Files in /proc/parport 
+..............................................................................
+ File      Content                                                             
+ autoprobe Any IEEE-1284 device ID information that has been acquired.         
+ devices   list of the device drivers using that port. A + will appear by the
+           name of the device currently using the port (it might not appear
+           against any). 
+ hardware  Parallel port's base address, IRQ line and DMA channel.             
+ irq       IRQ that parport is using for that port. This is in a separate
+           file to allow you to alter it by writing a new value in (IRQ
+           number or none). 
+..............................................................................
+
+1.7 TTY info in /proc/tty
+-------------------------
+
+Information about  the  available  and actually used tty's can be found in the
+directory /proc/tty.You'll  find  entries  for drivers and line disciplines in
+this directory, as shown in Table 1-9.
+
+
+Table 1-9: Files in /proc/tty 
+..............................................................................
+ File          Content                                        
+ drivers       list of drivers and their usage                
+ ldiscs        registered line disciplines                    
+ driver/serial usage statistic and status of single tty lines 
+..............................................................................
+
+To see  which  tty's  are  currently in use, you can simply look into the file
+/proc/tty/drivers:
+
+  > cat /proc/tty/drivers 
+  pty_slave            /dev/pts      136   0-255 pty:slave 
+  pty_master           /dev/ptm      128   0-255 pty:master 
+  pty_slave            /dev/ttyp       3   0-255 pty:slave 
+  pty_master           /dev/pty        2   0-255 pty:master 
+  serial               /dev/cua        5   64-67 serial:callout 
+  serial               /dev/ttyS       4   64-67 serial 
+  /dev/tty0            /dev/tty0       4       0 system:vtmaster 
+  /dev/ptmx            /dev/ptmx       5       2 system 
+  /dev/console         /dev/console    5       1 system:console 
+  /dev/tty             /dev/tty        5       0 system:/dev/tty 
+  unknown              /dev/tty        4    1-63 console 
+
+
+------------------------------------------------------------------------------
+Summary
+------------------------------------------------------------------------------
+The /proc file system serves information about the running system. It not only
+allows access to process data but also allows you to request the kernel status
+by reading files in the hierarchy.
+
+The directory  structure  of /proc reflects the types of information and makes
+it easy, if not obvious, where to look for specific data.
+------------------------------------------------------------------------------
+
+------------------------------------------------------------------------------
+CHAPTER 2: MODIFYING SYSTEM PARAMETERS
+------------------------------------------------------------------------------
+
+------------------------------------------------------------------------------
+In This Chapter
+------------------------------------------------------------------------------
+* Modifying kernel parameters by writing into files found in /proc/sys
+* Exploring the files which modify certain parameters
+* Review of the /proc/sys file tree
+------------------------------------------------------------------------------
+
+
+A very  interesting part of /proc is the directory /proc/sys. This is not only
+a source  of  information,  it also allows you to change parameters within the
+kernel. Be  very  careful  when attempting this. You can optimize your system,
+but you  can  also  cause  it  to  crash.  Never  alter kernel parameters on a
+production system.  Set  up  a  development machine and test to make sure that
+everything works  the  way  you want it to. You may have no alternative but to
+reboot the machine once an error has been made.
+
+To change  a  value,  simply  echo  the new value into the file. An example is
+given below  in the section on the file system data. You need to be root to do
+this. You  can  create  your  own  boot script to perform this every time your
+system boots.
+
+The files  in /proc/sys can be used to fine tune and monitor miscellaneous and
+general things  in  the operation of the Linux kernel. Since some of the files
+can inadvertently  disrupt  your  system,  it  is  advisable  to  read  both
+documentation and  source  before actually making adjustments. In any case, be
+very careful  when  writing  to  any  of these files. The entries in /proc may
+change slightly between the 2.1.* and the 2.2 kernel, so if there is any doubt
+review the kernel documentation in the directory /usr/src/linux/Documentation.
+This chapter  is  heavily  based  on the documentation included in the pre 2.2
+kernels, and became part of it in version 2.2.1 of the Linux kernel.
 
------------------------------------------------------------------------
+2.1 /proc/sys/fs - File system data
+-----------------------------------
 
-                T H E  /proc   F I L E S Y S T E M
-
------------------------------------------------------------------------
-/proc/sys      Terrehon Bowden <terrehon@wpi.com>       January 27 1999
-               Bodo Bauer <bb@ricochet.net>                
------------------------------------------------------------------------
-Version 1.1                                         Kernel version 2.2
------------------------------------------------------------------------
-Contents
-
-1   Introduction/Credits
-
-1.1  Legal Issues
-
-2   The /proc file system
-
-2.1  Process specific subdirectories
-2.2  Kernel data
-2.3  IDE devices in /proc/ide
-2.4  Networking info in /proc/net
-2.5  SCSI info
-2.6  Parallel port info in /proc/parport
-2.7  TTY info in /proc/tty
-
-3   Reading and modifying kernel parameters
-
-3.1  /proc/sys/debug and /proc/sys/proc
-3.2  /proc/fs - File system data
-3.3  /proc/fs/binfmt_misc - Miscellaneous binary formats
-3.4  /proc/sys/kernel - General kernel parameters
-3.5  /proc/sys/vm - The virtual memory subsystem
-3.6  /proc/sys/dev - Device specific parameters
-3.7  /proc/sys/sunrpc - Remote procedure calls
-3.8  /proc/sys/net - Networking stuff
-3.9  /proc/sys/net/ipv4 - IPV4 settings=20
-3.10 Appletalk
-3.11 IPX
-
------------------------------------------------------------------------
-
-1   Introduction/Credits
-
-This documentation is part of a soon to be released book published by
-IDG Books on the SuSE Linux distribution. As there is no complete
-documentation for the /proc file system and we've used many freely
-available sources to write this chapter, it seems only fair to give
-the work back to the Linux community. This work is based on the
-2.1.132 and 2.2.0-pre-kernel versions. I'm afraid it's still far from
-complete, but we hope it will be useful. As far as we know, it is the
-first 'all-in-one' document about the /proc file system. It is
-focused on the Intel x86 hardware, so if you are looking for PPC, ARM,
-SPARC, APX, etc., features, you probably won't find what you are
-looking for. It also only covers IPv4 networking, not IPv6 nor other
-protocols - sorry.
-
-We'd like to thank Alan Cox, Rik van Riel, and Alexey Kuznetsov.  We'd
-also like to extend a special thank you to Andi Kleen for
-documentation, which we relied on heavily to create this document, as
-well as the additional information he provided. Thanks to everybody
-else who contributed source or docs to the Linux kernel and helped
-create a great piece of software... :)
-
-If you have any comments, corrections or additions, please don't
-hesitate to contact Bodo Bauer at bb@ricochet.net. We'll be happy to
-add them to this document.
-
-The latest version of this document is available online at
-http://www.suse.com/~bb/Docs/proc.html in HTML, ASCII, and as 
-Postscript file. 
-
-1.1  Legal Stuff
-
-We don't guarantee the correctness of this document, and if you come
-to us complaining about how you screwed up your system because of
-incorrect documentation, we won't feel responsible...
-
------------------------------------------------------------------------
-
-2   The /proc file system
-
-The proc file system acts as an interface to internal data structures
-in the kernel. It can be used to obtain information about the system
-and to change certain kernel parameters at runtime.  It contains
-(among other things) one subdirectory for each process running on the
-system which is named after the process id (PID) of the process. The
-link self points to the process reading the file system.
-
-2.1  Process specific subdirectories
-
-Each process subdirectory has the in table 1.1 listed entries.
-
-      _________________________________________________
-      cmdline Command line arguments
-      environ Values of environment variables
-      fd    Directory, which contains all file descriptors
-      mem   Memory held by this process
-      stat   Process status
-      status  Process status in human readable form
-      cwd   Link to the current working directory
-      exe   Link to the executable of this process
-      maps   Memory maps
-      root   Link to the root directory of this process
-      statm  Process memory status information
-     _________________________________________________
-      Table 1.1: Process specific entries in /proc
-
-For example, to get the status information of a process, all you have
-to do is read the file /proc/PID/status:
-
-> cat /proc/self/status
-Name:   cat
-State:  R (running)
-Pid:    5633
-PPid:   5609
-Uid:    501     501     501     501
-Gid:    100     100     100     100
-Groups: 100 16 
-VmSize:      804 kB
-VmLck:         0 kB
-VmRSS:       344 kB
-VmData:       68 kB
-VmStk:        20 kB
-VmExe:        12 kB
-VmLib:       660 kB
-SigPnd: 0000000000000000
-SigBlk: 0000000000000000
-SigIgn: 0000000000000000
-SigCgt: 0000000000000000
-CapInh: 00000000fffffeff
-CapPrm: 0000000000000000
-CapEff: 0000000000000000
-
-This shows you almost the same information as you would get if you
-viewed it with the ps command. In fact, ps uses the proc file system
-to obtain its information.
-
-The statm file contains more detailed information about the process
-memory usage. It contains seven values with the following meanings:
-
-size       total program size
-resident   size of in memory portions
-shared     number of the pages that are shared
-trs        number of pages that are 'code'
-drs        number of pages of data/stack
-lrs        number of pages of library
-dt	   number of dirty pages
-
-The ratio text/data/library is approximate only by heuristics.
-
-2.2  Kernel data
-
-Similar to the process entries, these are files which give information
-about the running kernel. The files used to obtain this information
-are contained in /proc and are listed in table 1.2. Not all of these
-will be present in your system. It depends on the kernel configuration
-and the loaded modules, which files are there, and which are missing.
-
-      ________________________________________________
-      apm           Advanced power management info
-      cmdline       Kernel command line
-      cpuinfo       Info about the CPU
-      devices       Available devices (block and character)
-      dma           Used DMS channels
-      filesystems   Supported filesystems
-      interrupts    Interrupt usage
-      ioports       I/O port usage
-      kcore         Kernel core image
-      kmsg          Kernel messages
-      ksyms         Kernel symbol table
-      loadavg       Load average
-      locks         Kernel locks
-      meminfo       Memory info
-      misc          Miscellaneous
-      modules       List of loaded modules
-      mounts        Mounted filesystems
-      partitions    Table of partitions known to the system
-      rtc           Real time clock
-      slabinfo      Slab pool info
-      stat          Overall statistics
-      swaps         Swap space utilization
-      uptime        System uptime
-      version       Kernel version
-      ________________________________________________
-           Table 1.2: Kernel info in /proc
-
-You can, for example, check which interrupts are currently in use and
-what they are used for by looking in the file /proc/interrupts:
-
-> cat /proc/interrupts
-           CPU0       
-  0:    8728810          XT-PIC  timer
-  1:        895          XT-PIC  keyboard
-  2:          0          XT-PIC  cascade
-  3:     531695          XT-PIC  aha152x
-  4:    2014133          XT-PIC  serial
-  5:      44401          XT-PIC  pcnet_cs
-  8:          2          XT-PIC  rtc
- 11:          8          XT-PIC  i82365
- 12:     182918          XT-PIC  PS/2 Mouse
- 13:          1          XT-PIC  fpu
- 14:    1232265          XT-PIC  ide0
- 15:          7          XT-PIC  ide1
-NMI:          0
-
-There three more important subdirectories in /proc: net, scsi and
-sys. The general rule is that the contents, or even the existence of
-these directories, depends on your kernel configuration. If SCSI is
-not enabled, the directory scsi may not exist. The same is true with
-the net, which is only there when networking support is present in the
-running kernel.
-
-The slabinfo file gives information about memory usage on the slab
-level.  Linux uses slab pools for memory management above page level
-in version 2.2. Commonly used objects have their own slab pool (like
-network buffers, directory cache, etc.).
-
-2.3  IDE devices in /proc/ide
-
-This subdirectory contains information about all IDE devices that the
-kernel is aware of.  There is one subdirectory for each device
-(i.e. hard disk) containing the following files:
-
-       cache             The cache
-       capacity          Capacity of the medium
-       driver            Driver and version
-       geometry          Physical and logical geometry
-       identify          Device identify block
-       media             Media type
-       model             Device identifier
-       settings          Device setup
-       smart_thresholds  IDE disk management thresholds
-       smart_values      IDE disk management values
-
-2.4  Networking info in /proc/net
-
-This directory follows the usual pattern. Table 1.3 lists the files
-and their meaning.
-
-     ____________________________________________________
-     arp             Kernel ARP table
-     dev             network devices with statistics
-     dev_mcast       Lists the Layer2 multicast groups a
-                     device is listening to (interface index,
-                     label, number of references, number of
-                     bound addresses).
-     dev_stat        network device status
-     ip_fwchains     Firewall chain linkage
-     ip_fwnames      Firewall chains
-     ip_masq         Directory containing the masquerading
-                     tables.
-     ip_masquerade   Major masquerading table
-     netstat         Network statistics
-     raw             Raw device statistics
-     route           Kernel routing table
-     rpc             Directory containing rpc info
-     rt_cache        Routing cache
-     snmp            SNMP data
-     sockstat        Socket statistics
-     tcp             TCP sockets
-     tr_rif          Token ring RIF routing table
-     udp             UDP sockets
-     unix            UNIX domain sockets
-     wireless        Wireless interface data (Wavelan etc)
-     igmp            IP multicast addresses, which this host joined
-     psched          Global packet scheduler parameters.
-     netlink         List of PF_NETLINK sockets.
-     ip_mr_vifs      List of multicast virtual interfaces.
-     ip_mr_cache     List of multicast routing cache.
-     udp6            UDP sockets (IPv6)
-     tcp6            TCP sockets (IPv6)
-     raw6            Raw device statistics (IPv6)
-     igmp6	     IP multicast addresses, which this host joineed (IPv6)
-     if_inet6        List of IPv6 interface addresses.
-     ipv6_route      Kernel routing table for IPv6
-     rt6_stats       global IPv6 routing tables statistics.
-     sockstat6       Socket statistics (IPv6)
-     snmp6           Snmp data (IPv6)
-     ____________________________________________________
-         Table 1.3: Network info in /proc/net
-
-You can use this information to see which network devices are
-available in your system and how much traffic was routed over those
-devices:
-
-> cat /proc/net/dev
-Inter-|Receive                                                   |[...
- face |bytes    packets errs drop fifo frame compressed multicast|[...
-    lo:  908188   5596     0    0    0     0          0         0 [...        
-  ppp0:15475140  20721   410    0    0   410          0         0 [... 
-  eth0:  614530   7085     0    0    0     0          0         1 [...
-
-...] Transmit
-...] bytes    packets errs drop fifo colls carrier compressed
-...]  908188     5596    0    0    0     0       0          0
-...] 1375103    17405    0    0    0     0       0          0
-...] 1703981     5535    0    0    0     3       0          0
-
-2.5  SCSI info
-
-If you have a SCSI host adapter in your system, you'll find a
-subdirectory named after the driver for this adapter in /proc/scsi. 
-You'll also see a list of all recognized SCSI devices in /proc/scsi:
-
->cat /proc/scsi/scsi
-Attached devices: 
-Host: scsi0 Channel: 00 Id: 00 Lun: 00
-  Vendor: QUANTUM  Model: XP34550W         Rev: LXY4
-  Type:   Direct-Access                    ANSI SCSI revision: 02
-Host: scsi0 Channel: 00 Id: 01 Lun: 00
-  Vendor: SEAGATE  Model: ST34501W         Rev: 0018
-  Type:   Direct-Access                    ANSI SCSI revision: 02
-Host: scsi0 Channel: 00 Id: 02 Lun: 00
-  Vendor: SEAGATE  Model: ST34501W         Rev: 0017
-  Type:   Direct-Access                    ANSI SCSI revision: 02
-Host: scsi0 Channel: 00 Id: 04 Lun: 00
-  Vendor: ARCHIVE  Model: Python 04106-XXX Rev: 703b
-  Type:   Sequential-Access                ANSI SCSI revision: 02
-
-The directory named after the driver has one file for each adapter
-found in the system. These files contain information about
-the controller, including the used IRQ and the IO address range:
-
->cat /proc/scsi/ncr53c8xx/0
-General information:
- Chip NCR53C875, device id 0xf, revision id 0x4
- IO port address 0xec00, IRQ number 11
- Synchronous period factor 12, max commands per lun 4
-
-2.6  Parallel port info in /proc/parport
-
-The directory /proc/parport contains information about the parallel
-ports of your system. It has one subdirectory for each port, named
-after the port number (0,1,2,...).
-
-This directory contains four files:
-
-    autoprobe   Autoprobe results of this port
-    devices     Connected device modules
-    hardware    Hardware info (port type, io-port, DMA, IRQ, etc.)
-    irq         Used interrupt, if any
-
-2.7  TTY info in /proc/tty
-
-Information about the available and the actually used tty's can be
-found in /proc/tty. You'll find entries for drivers and line
-disciplines in this directory, as shown in the table below:
-
-     drivers       List of drivers and their usage
-     ldiscs        Registered line disciplines
-     driver/serial Usage statistic and status of single tty lines
-
-To see which tty's are currently in use, you can simply look into the
-file /proc/tty/drivers:
-
->cat /proc/tty/drivers
-pty_slave            /dev/pts      136   0-255 pty:slave
-pty_master           /dev/ptm      128   0-255 pty:master
-pty_slave            /dev/ttyp       3   0-255 pty:slave
-pty_master           /dev/pty        2   0-255 pty:master
-serial               /dev/cua        5   64-67 serial:callout
-serial               /dev/ttyS       4   64-67 serial
-/dev/tty0            /dev/tty0       4       0 system:vtmaster
-/dev/ptmx            /dev/ptmx       5       2 system
-/dev/console         /dev/console    5       1 system:console
-/dev/tty             /dev/tty        5       0 system:/dev/tty
-unknown              /dev/tty        4    1-63 console
-
------------------------------------------------------------------------
-
-3   Reading and modifying kernel parameters
-
-A very interesting part of /proc is the directory /proc/sys. This not
-only provides information, it also allows you to change parameters
-within the kernel. Be very careful when trying this. You can optimize
-your system, but you also can crash it. Never play around with kernel
-parameters on a production system. Set up a development machine and
-test to make sure that everything works the way you want it to.  You
-may have no alternative but to reboot the machine once an error has
-been made.
-
-To change a value, simply echo the new value into the file. An example
-is given below in the section on the file system data. You need to be
-root to do this. You can create your own boot script to get this done
-every time your system boots. 
-
-The files in /proc/sys can be used to tune and monitor miscellaneous
-and general things in the operation of the Linux kernel.  Since some
-of the files can inadvertently disrupt your system, it is advisable to
-read both documentation and source before actually making
-adjustments. In any case, be very careful when writing to any of these
-files. The entries in /proc may change slightly between the 2.1.* and
-the 2.2 kernel, so review the kernel documentation if there is any
-doubt. You'll find the documentation in the directory
-/usr/src/linux/Documentation/sys. This chapter is heavily based on the
-documentation included in the pre 2.2 kernels. Thanks to Rick van Riel
-for providing this information.
-
-3.1  /proc/sys/debug and /proc/sys/proc
-
-These two subdirectories are empty.
-
-3.2  /proc/fs - File system data
-
-This subdirectory contains specific file system, file handle, inode,
-dentry and quota information.
+This subdirectory  contains  specific  file system, file handle, inode, dentry
+and quota information.
 
 Currently, these files are in /proc/sys/fs:
 
 dentry-state
-   Status of the directory cache. Since directory entries are
-   dynamically allocated and deallocated, this file gives information
-   about the current status. It holds six values, in which the last
-   two are not used and are always zero. The other four mean:
-
-       nr_dentry   Seems to be zero all the time
-       nr_unused   Number of unused cache entries
-       age_limit   Age in seconds after the entry may be
-                   reclaimed, when memory is short
-       want_pages  internal
+------------
+
+Status of  the  directory  cache.  Since  directory  entries  are  dynamically
+allocated and  deallocated,  this  file indicates the current status. It holds
+six values, in which the last two are not used and are always zero. The others
+are listed in table 2-1.
+
+
+Table 2-1: Status files of the directory cache 
+..............................................................................
+ File       Content                                                            
+ nr_dentry  Almost always zero                                                 
+ nr_unused  Number of unused cache entries                                     
+ age_limit  
+            in seconds after the entry may be reclaimed, when memory is short 
+ want_pages internally                                                         
+..............................................................................
 
 dquot-nr and dquot-max
-   The file dquot-max shows the maximum number of cached disk quota
-   entries.
+----------------------
+
+The file dquot-max shows the maximum number of cached disk quota entries.
 
-   The file dquot-nr shows the number of allocated disk quota
-   entries and the number of free disk quota entries.
+The file  dquot-nr  shows  the  number of allocated disk quota entries and the
+number of free disk quota entries.
 
-   If the number of free cached disk quotas is very low and you have
-   a large number of simultaneous system users, you might want
-   to raise the limit.
+If the number of available cached disk quotas is very low and you have a large
+number of simultaneous system users, you might want to raise the limit.
 
 file-nr and file-max
-   The kernel allocates file handles dynamically, but as yet
-   doesn't free them again.
+--------------------
 
-   The value in file-max denotes the maximum number of file handles
-   that the Linux kernel will allocate. When you get a lot of error
-   messages about running out of file handles, you might want to raise
-   this limit. The default value is 4096. To change it, just write the
-   new number into the file:
-
-   # cat /proc/sys/fs/file-max
-   4096
-   # echo 8192 > /proc/sys/fs/file-max
-   # cat /proc/sys/fs/file-max
-   8192
-
-   This method of revision is useful for all customizable parameters
-   of the kernel - simply echo the new value to the corresponding
-   file.
-  
-   The three values in file-nr denote the number of allocated file
-   handles, the number of used file handles, and the maximum number of
-   file handles. When the allocated file handles come close to the
-   maximum, but the number of actually used ones is far behind, you've
-   encountered a peak in your usage of file handles and you don't need
-   to increase the maximum.
-
-   However, there is still a per process limit of open files, which
-   unfortunatly can't be changed that easily. It is set to 1024 by
-   default. To change this you have to edit the files limits.h and
-   fs.h in the directory /usr/src/linux/include/linux. Change the
-   definition of NR_OPEN and recompile the kernel.
+The kernel  allocates file handles dynamically, but doesn't free them again at
+this time.
+
+The value  in  file-max  denotes  the  maximum number of file handles that the
+Linux kernel will allocate. When you get a lot of error messages about running
+out of  file handles, you might want to raise this limit. The default value is
+4096. To change it, just write the new number into the file:
+
+  # cat /proc/sys/fs/file-max 
+  4096 
+  # echo 8192 > /proc/sys/fs/file-max 
+  # cat /proc/sys/fs/file-max 
+  8192 
+
+
+This method  of  revision  is  useful  for  all customizable parameters of the
+kernel - simply echo the new value to the corresponding file.
+
+The three  values  in file-nr denote the number of allocated file handles, the
+number of  used file handles, and the maximum number of file handles. When the
+allocated file  handles  come close to the maximum, but the number of actually
+used ones  is  far  behind,  you've  encountered  a peak in your usage of file
+handles and you don't need to increase the maximum.
+
+However, there is still a per process limit of open files, which unfortunately
+can't be changed that easily. It is set to 1024 by default. To change this you
+have to  edit  the files limits.h and fs.h in the kernel source tree. Finally,
+change the definition of NR_OPEN and recompile the kernel.
 
 inode-state, inode-nr and inode-max
-   As with file handles, the kernel allocates the inode structures
-   dynamically, but can't free them yet.
+-----------------------------------
+
+As with  file  handles, the kernel allocates the inode structures dynamically,
+but can't free them yet.
+
+The value  in  inode-max  denotes  the  maximum number of inode handlers. This
+value should  be  3 to 4 times larger than the value in file-max, since stdin,
+stdout, and  network  sockets also need an inode struct to handle them. If you
+regularly run out of inodes, you should increase this value.
+
+The file inode-nr contains the first two items from inode-state, so we'll skip
+to that file...
+
+inode-state contains  three  actual numbers and four dummy values. The numbers
+are nr_inodes, nr_free_inodes, and preshrink (in order of appearance).
+
+nr_inodes
+~~~~~~~~~
+
+Denotes the  number  of  inodes the system has allocated. This can be slightly
+more than inode-max because Linux allocates them one pageful at a time.
+
+nr_free_inodes
+--------------
+
+Represents the  number  of free inodes and preshrink is nonzero when nr_inodes
+is greater than inode-max and the system needs to prune the inode list instead
+of allocating more.
 
-   The value in inode-max denotes the maximum number of inode
-   handlers. This value should be 3 to 4 times larger than the value
-   in file-max, since stdin, stdout, and network sockets also need an
-   inode struct to handle them. If you regularly run out of inodes,
-   you should increase this value.
-
-   The file inode-nr contains the first two items from inode-state, so
-   we'll skip to that file...
-
-   inode-state contains three actual numbers and four dummy values. The 
-   actual numbers are (in order of appearance) nr_inodes, nr_free_inodes,
-   and preshrink.
-
-   nr_inodes 
-     Denotes the number of inodes the system has allocated. This can
-     be slightly more than inode-max because Linux allocates them one
-     pageful at a time.
-
-   nr_free_inodes 
-     Represents the number of free inodes and pre shrink is nonzero
-     when the nr_inodes > inode-max and the system needs to prune the
-     inode list instead of allocating more.
 
 super-nr and super-max
-   Again, super block structures are allocated by the kernel,
-   but not freed. The file super-max contains the maximum number of
-   super block handlers, where super-nr shows the number of
-   currently allocated ones.
-
-   Every mounted file system needs a super block, so if you plan to
-   mount lots of file systems, you may want to increase these
-   numbers.
-
-3.3  /proc/fs/binfmt_misc - Miscellaneous binary formats
-
-Besides these files, there is the subdirectory
-/proc/sys/fs/binfmt_misc. This handles the kernel support for
-miscellaneous binary formats.
-
-Binfmt_misc provides the ability to register additional binary formats
-to the Kernel without compiling an additional module/kernel. Therefore
-binfmt_misc needs to know magic numbers at the beginning or the
-filename extension of the binary.
-
-It works by maintaining a linked list of structs, that contain a
-description of a binary format, including a magic with size (or the
-filename extension), offset and mask, and the interpreter name. On
-request it invokes the given interpreter with the original program as
-argument, as binfmt_java and binfmt_em86 and binfmt_mz do.
-Since binfmt_misc does not define any default binary-formats, you have to
-register an additional binary-format.
+----------------------
+
+Again, super  block structures are allocated by the kernel, but not freed. The
+file super-max  contains  the  maximum  number  of super block handlers, where
+super-nr shows the number of currently allocated ones.
+
+Every mounted file system needs a super block, so if you plan to mount lots of
+file systems, you may want to increase these numbers.
+
+2.2 /proc/sys/fs/binfmt_misc - Miscellaneous binary formats
+-----------------------------------------------------------
+
+Besides these  files, there is the subdirectory /proc/sys/fs/binfmt_misc. This
+handles the kernel support for miscellaneous binary formats.
+
+Binfmt_misc provides  the ability to register additional binary formats to the
+Kernel without  compiling  an additional module/kernel. Therefore, binfmt_misc
+needs to  know magic numbers at the beginning or the filename extension of the
+binary.
+
+It works by maintaining a linked list of structs that contain a description of
+a binary  format,  including  a  magic  with size (or the filename extension),
+offset and  mask,  and  the  interpreter name. On request it invokes the given
+interpreter with  the  original  program  as  argument,  as  binfmt_java  and
+binfmt_em86 and  binfmt_mz  do.  Since binfmt_misc does not define any default
+binary-formats, you have to register an additional binary-format.
 
-There are two general files in binfmt_misc and one file per registered
-format. The two general files are register and status.
+There are two general files in binfmt_misc and one file per registered format.
+The two general files are register and status.
 
 Registering a new binary format
+-------------------------------
 
-echo :name:type:offset:magic:mask:interpreter: > /proc/sys/fs/binfmt_misc/register 
+To register a new binary format you have to issue the command
 
-with appropriate name (the name for the /proc-dir entry), offset
-(defaults to 0, if omitted), magic and mask (which can be omitted,
-defaults to all 0xff) and last but not least, the interpreter that is
-to be invoked (for example and testing '/bin/echo'). Type can be M for
-usual magic matching or E for filename extension matching (give
-extension in place of magic).
-
-To check or reset the status of the binary format handler:
-
-If you do a cat on the file /proc/sys/fs/binfmt_misc/status, you will
-get the current status (enabled/disabled) of binfmt_misc. Change the
-status by echoing 0 (disables) or 1 (enables) or -1 (caution: this
-clears all previously registered binary formats) to status. For
-example echo 0 > status to disable binfmt_misc (temporarily).
+  echo :name:type:offset:magic:mask:interpreter: > /proc/sys/fs/binfmt_misc/register 
+
+
+
+with appropriate  name (the name for the /proc-dir entry), offset (defaults to
+0, if  omitted),  magic, mask (which can be omitted, defaults to all 0xff) and
+last but  not  least,  the  interpreter that is to be invoked (for example and
+testing /bin/echo).  Type  can be M for usual magic matching or E for filename
+extension matching (give extension in place of magic).
+
+Check or reset the status of the binary format handler
+------------------------------------------------------
+
+If you  do a cat on the file /proc/sys/fs/binfmt_misc/status, you will get the
+current status (enabled/disabled) of binfmt_misc. Change the status by echoing
+0 (disables)  or  1  (enables)  or  -1  (caution:  this  clears all previously
+registered binary  formats)  to status. For example echo 0 > status to disable
+binfmt_misc (temporarily).
 
 Status of a single handler
+--------------------------
 
-Each registered handler has an entry in /proc/sys/fs/binfmt_misc.
-These files perform the same function as status, but their scope is
-limited to the actual binary format. By cating this file, you also
-receive all related information about the interpreter/magic of the
-binfmt.
+Each registered  handler has an entry in /proc/sys/fs/binfmt_misc. These files
+perform the  same function as status, but their scope is limited to the actual
+binary format.  By  cating this file, you also receive all related information
+about the interpreter/magic of the binfmt.
 
 Example usage of binfmt_misc (emulate binfmt_java)
+--------------------------------------------------
 
-cd /proc/sys/fs/binfmt_misc
-echo ':Java:M::\xca\xfe\xba\xbe::/usr/local/java/bin/javawrapper:' > register
-echo ':HTML:E::html::/usr/local/java/bin/appletviewer:' > register
-echo ':Applet:M::<!--applet::/usr/local/java/bin/appletviewer:' > register
-echo ':DEXE:M::\x0eDEX::/usr/bin/dosexec:' > register
-
-These three lines add support for Java executables and Java applets
-(like binfmt_java, additionally recognizing the .html extension with
-no need to put <!--applet> to every applet file). You have to install
-the JDK and the shell-script /usr/local/java/bin/javawrapper too. It
-works around the brokenness of the Java filename handling. To add a
-Java binary, just create a link to the class-file somewhere in the
-path.
-
-3.4  /proc/sys/kernel - general kernel parameters
-
-This directory reflects general kernel behaviors. As I've said before,
-the contents are depend on your configuration. I'll list the most
-important files, along with descriptions of what they mean and how to
-use them.
+  cd /proc/sys/fs/binfmt_misc  
+  echo ':Java:M::\xca\xfe\xba\xbe::/usr/local/java/bin/javawrapper:' > register  
+  echo ':HTML:E::html::/usr/local/java/bin/appletviewer:' > register  
+  echo ':Applet:M::<!--applet::/usr/local/java/bin/appletviewer:' > register 
+  echo ':DEXE:M::\x0eDEX::/usr/bin/dosexec:' > register 
+
+
+These four  lines  add  support  for  Java  executables and Java applets (like
+binfmt_java, additionally  recognizing the .html extension with no need to put
+<!--applet> to  every  applet  file).  You  have  to  install  the JDK and the
+shell-script /usr/local/java/bin/javawrapper  too.  It  works  around  the
+brokenness of  the Java filename handling. To add a Java binary, just create a
+link to the class-file somewhere in the path.
+
+2.3 /proc/sys/kernel - general kernel parameters
+------------------------------------------------
+
+This directory  reflects  general  kernel  behaviors. As I've said before, the
+contents depend  on  your  configuration.  Here you'll find the most important
+files, along with descriptions of what they mean and how to use them.
 
 acct
-   The file contains three values; highwater, lowwater, and
-   frequency.
+----
 
-   It exists only when BSD-style process accounting is enabled. These
-   values control its behavior. If the free space on the file system
-   where the log lives goes below lowwater%, accounting suspends. If
-   it goes above highwater%, accounting resumes. Frequency determines
-   how often you check the amount of free space (value is in
-   seconds). Default settings are: 4, 2, and 30. That is, suspend
-   accounting if there left <= 2% free; resume it if we have a value
-   >=3%; consider information about the amount of free space valid
-   for 30 seconds
+The file contains three values; highwater, lowwater, and frequency.
+
+It exists  only  when  BSD-style  process  accounting is enabled. These values
+control its behavior. If the free space on the file system where the log lives
+goes below  lowwater  percentage,  accounting  suspends.  If  it  goes  above
+highwater percentage,  accounting  resumes. Frequency determines how often you
+check the amount of free space (value is in seconds). Default settings are: 4,
+2, and  30.  That is, suspend accounting if there is less than 2 percent free;
+resume it  if we have a value of 3 or more percent; consider information about
+the amount of free space valid for 30 seconds
 
 ctrl-alt-del
-   When the value in this file is 0, ctrl-alt-del is trapped and sent
-   to the init(1) program to handle a graceful restart. However, when
-   the value is > 0, Linux's reaction to this key combination will be
-   an immediate reboot, without syncing its dirty buffers.
-
-   Note: when a program (like dosemu) has the keyboard in raw mode,
-   the ctrl-alt-del is intercepted by the program before it ever
-   reaches the kernel tty layer, and it is up to the program to decide
-   what to do with it.
+------------
+
+When the value in this file is 0, ctrl-alt-del is trapped and sent to the init
+program to  handle a graceful restart. However, when the value is greater that
+zero, Linux's  reaction  to  this key combination will be an immediate reboot,
+without syncing its dirty buffers.
+
+[NOTE]
+    When a  program  (like  dosemu)  has  the  keyboard  in  raw  mode,  the
+    ctrl-alt-del is  intercepted  by  the  program  before it ever reaches the
+    kernel tty  layer,  and  it is up to the program to decide what to do with
+    it.
 
 domainname and hostname
-   These files can be controlled to set the NIS domainname and
-   hostname of your box. For the classic darkstar.frop.org a simple:
+-----------------------
+
+These files  can  be controlled to set the NIS domainname and hostname of your
+box. For the classic darkstar.frop.org a simple:
+
+  # echo "darkstar" > /proc/sys/kernel/hostname 
+  # echo "frop.org" > /proc/sys/kernel/domainname 
 
-   # echo "darkstar" > /proc/sys/kernel/hostname
-   # echo "frop.org" > /proc/sys/kernel/domainname
 
-   would suffice to set your hostname and NIS domainname.
+would suffice to set your hostname and NIS domainname.
 
 osrelease, ostype and version
+-----------------------------
 
-   The names make it pretty obvious what these fields contain:
+The names make it pretty obvious what these fields contain:
 
-   >cat /proc/sys/kernel/osrelease
-   2.1.131
-   >cat /proc/sys/kernel/ostype
-   Linux
-   >cat /proc/sys/kernel/version
-   #8 Mon Jan 25 19:45:02 PST 1999
- 
-   The files osrelease and ostype should be clear enough. Version
-   needs a little more clarification however. The #8 means that this
-   is the 8th kernel built from this source base and the date behind
-   it indicates the time the kernel was built. The only way to tune
-   these values is to rebuild the kernel.
-
-panic 
-   The value in this file represents the number of seconds the kernel
-   waits before rebooting on a panic. When you use the software
-   watchdog, the recommended setting is 60. If set to 0, the auto
-   reboot after a kernel panic is disabled, this is the default
-   setting.
+  > cat /proc/sys/kernel/osrelease 
+  2.2.12 
+   
+  > cat /proc/sys/kernel/ostype 
+  Linux 
+   
+  > cat /proc/sys/kernel/version 
+  #4 Fri Oct 1 12:41:14 PDT 1999 
+
+
+The files  osrelease and ostype should be clear enough. Version needs a little
+more clarification.  The  #4 means that this is the 4th kernel built from this
+source base and the date after it indicates the time the kernel was built. The
+only way to tune these values is to rebuild the kernel.
+
+panic
+-----
+
+The value  in  this  file  represents  the  number of seconds the kernel waits
+before rebooting  on  a  panic.  When  you  use  the  software  watchdog,  the
+recommended setting  is  60. If set to 0, the auto reboot after a kernel panic
+is disabled, which is the default setting.
 
 printk
-   The four values in printk denote console_loglevel,
-   default_message_loglevel, minimum_console_level, and
-   default_console_loglevel respectively.
-
-   These values influence printk() behavior when printing or logging
-   error messages, which come from inside the kernel. See syslog(2)
-   for more information on the different log levels.
-
-   console_loglevel
-     Messages with a higher priority than this will be printed to
-     the console.
-
-   default_message_level
-     Messages without an explicit priority will be printed with
-     this priority.
+------
+
+The four values in printk denote
+* console_loglevel,
+* default_message_loglevel,
+* minimum_console_level and
+* default_console_loglevel
+respectively.
+
+These values  influence  printk()  behavior  when  printing  or  logging error
+messages, which  come  from  inside  the  kernel.  See  syslog(2)  for  more
+information on the different log levels.
+
+console_loglevel
+----------------
+
+Messages with a higher priority than this will be printed to the console.
+
+default_message_level
+---------------------
+
+Messages without an explicit priority will be printed with this priority.
+
+minimum_console_loglevel
+------------------------
+
+Minimum (highest) value to which the console_loglevel can be set.
 
-   minimum_console_loglevel
-     Minimum (highest) value to which the console_loglevel can be set.
+default_console_loglevel
+------------------------
 
-   default_console_loglevel
-     Default value for console_loglevel.
+Default value for console_loglevel.
 
 sg-big-buff
-   This file shows the size of the generic SCSI (sg) buffer. At this
-   point, you can't tune it yet, but you can change it at compile time
-   by editing include/scsi/sg.h and changing the value of
-   SG_BIG_BUFF.
-
-   If you use a scanner with SANE (Scanner Access now easy) you
-   might want to set this to a higher value. Look into the SANE
-   documentation on this issue.
+-----------
+
+This file  shows  the size of the generic SCSI (sg) buffer. At this point, you
+can't tune  it  yet,  but  you  can  change  it  at  compile  time  by editing
+include/scsi/sg.h and changing the value of SG_BIG_BUFF.
+
+If you use a scanner with SANE (Scanner Access Now Easy) you might want to set
+this to a higher value. Refer to the SANE documentation on this issue.
 
 modprobe
-   The location where the modprobe binary is located. The kernel
-   uses this program to load modules on demand.
+--------
+
+The location  where  the  modprobe  binary  is  located.  The kernel uses this
+program to load modules on demand.
 
-3.5  /proc/sys/vm - The virtual memory subsystem
+2.4 /proc/sys/vm - The virtual memory subsystem
+-----------------------------------------------
 
-The files in this directory can be used to tune the operation of the
-virtual memory (VM) subsystem of the Linux kernel. In addition, one of
-the files (bdflush) has a little influence on disk usage.
+The files  in  this directory can be used to tune the operation of the virtual
+memory (VM)  subsystem  of  the  Linux  kernel.  In addition, one of the files
+(bdflush) has some influence on disk usage.
 
 bdflush
-   This file controls the operation of the bdflush kernel daemon. It
-   currently contains 9 integer values, 6 of which are actually used
-   by the kernel:
-
-    nfract      Percentage of buffer cache dirty to
-                activate bdflush
-    ndirty      Maximum number of dirty blocks to
-                write out per-wake-cycle
-    nrefill     Number of clean buffers to try to obtain
-                each time we call refill
-    nref_dirt   Dirty buffer threshold for activating bdflush
-                when trying to refill buffers.
-    dummy       unused
-    age_buffer  Time for normal buffer to age before you flush it
-    age_super   Time for superblock to age before you flush it
-    dummy       unused
-    dummy       unused
-
-   nfract
-     This parameter governs the maximum number of dirty buffers
-     in the buffer cache. Dirty means that the contents of the
-     buffer still have to be written to disk (as opposed to a
-     clean buffer, which can just be forgotten about). Setting
-     this to a high value means that Linux can delay disk writes
-     for a long time, but it also means that it will have to do a
-     lot of I/O at once when memory becomes short. A low value
-     will spread out disk I/O more evenly.
-
-   ndirty
-     Ndirty gives the maximum number of dirty buffers that
-     bdflush can write to the disk at one time. A high value will
-     mean delayed, bursty I/O, while a small value can lead to
-     memory shortage when bdflush isn't woken up often enough.
-
-   nrefill
-     This the number of buffers that bdflush will add to the list
-     of free buffers when refill_freelist() is called. It is
-     necessary to allocate free buffers beforehand, since the
-     buffers are often different sizes than the memory pages
-     and some bookkeeping needs to be done beforehand. The
-     higher the number, the more memory will be wasted and the
-     less often refill_freelist() will need to run.
-
-   nref_dirt
-     When refill_freelist() comes across more than nref_dirt
-     dirty buffers, it will wake up bdflush.
-
-   age_buffer and age_super
-     Finally, the age_buffer and age_super parameters govern the
-     maximum time Linux waits before writing out a dirty buffer
-     to disk. The value is expressed in jiffies (clockticks), the
-     number of jiffies per second is 100. Age_buffer is the
-     maximum age for data blocks, while age_super is for
-     filesystems meta data.
+-------
+
+This file  controls  the  operation of the bdflush kernel daemon. It currently
+contains nine  integer  values,  six of which are actually used by the kernel.
+They are listed in table 2-2.
+
+
+Table 2-2: Parameters in /proc/sys/vm/bdflush 
+..............................................................................
+ Value      Meaning                                                            
+ nfract     Percentage of buffer cache dirty to  activate bdflush              
+ ndirty     Maximum number of dirty blocks to  write out per wake-cycle        
+ nrefill    Number of clean buffers to try to obtain  each time we call refill 
+ nref_dirt  buffer threshold for activating bdflush when trying to refill
+            buffers. 
+ dummy      Unused                                                             
+ age_buffer Time for normal buffer to age before we flush it                   
+ age_super  Time for superblock to age before we flush it                      
+ dummy      Unused                                                             
+ dummy      Unused                                                             
+..............................................................................
+
+nfract
+------
+
+This parameter  governs  the  maximum  number  of  dirty buffers in the buffer
+cache. Dirty means that the contents of the buffer still have to be written to
+disk (as  opposed  to  a  clean  buffer,  which  can just be forgotten about).
+Setting this  to  a  higher value means that Linux can delay disk writes for a
+long time, but it also means that it will have to do a lot of I/O at once when
+memory becomes short. A lower value will spread out disk I/O more evenly.
+
+ndirty
+------
+
+Ndirty gives the maximum number of dirty buffers that bdflush can write to the
+disk at  one  time.  A high value will mean delayed, bursty I/O, while a small
+value can lead to memory shortage when bdflush isn't woken up often enough.
+
+nrefill
+-------
+
+This is  the  number  of  buffers  that  bdflush  will add to the list of free
+buffers when  refill_freelist()  is  called.  It is necessary to allocate free
+buffers beforehand,  since  the  buffers  are  often  different sizes than the
+memory pages  and some bookkeeping needs to be done beforehand. The higher the
+number, the  more  memory  will be wasted and the less often refill_freelist()
+will need to run.
+
+nref_dirt
+---------
+
+When refill_freelist() comes across more than nref_dirt dirty buffers, it will
+wake up bdflush.
+
+age_buffer and age_super
+------------------------
+
+Finally, the age_buffer and age_super parameters govern the maximum time Linux
+waits before  writing  out  a  dirty buffer to disk. The value is expressed in
+jiffies (clockticks),  the  number of jiffies per second is 100. Age_buffer is
+the maximum age for data blocks, while age_super is for filesystems meta data.
 
 buffermem
-   The three values in this file control how much memory should be
-   used for buffer memory. The percentage is calculated as a
-   percentage of total system memory.
-
-   The values are:
-
-   min_percent
-     This is the minimum percentage of memory that should be
-     spent on buffer memory.
-
-   borrow_percent
-     When Linux is short on memory, and the buffer cache uses more
-     than it has been allotted, the memory mangement (MM) subsystem
-     will prune the buffer cache more heavily than other memory to
-     compensate.
-
-   max_percent
-     This is the maximum amount of memory that can be used for
-     buffer memory.
+---------
+
+The three  values  in  this  file  control  how much memory should be used for
+buffer memory.  The  percentage  is calculated as a percentage of total system
+memory.
+
+The values are:
+
+min_percent
+-----------
+
+This is  the  minimum  percentage  of  memory  that  should be spent on buffer
+memory.
+
+borrow_percent
+--------------
+
+When Linux is short on memory, and the buffer cache uses more than it has been
+allotted, the  memory  management  (MM)  subsystem will prune the buffer cache
+more heavily than other memory to compensate.
+
+max_percent
+-----------
+
+This is the maximum amount of memory that can be used for buffer memory.
 
 freepages
-   This file contains three values: min, low and high:
+---------
+
+This file contains three values: min, low and high:
 
-   min
-     When the number of free pages in the system reaches this number,
-     only the kernel can allocate more memory.
-
-   low
-     If the number of free pages gets below this point, the kernel
-     starts swapping aggressively.
-
-   high
-     The kernel tries to keep up to this amount of memory free; if
-     memory comes below this point, the kernel gently starts swapping
-     in the hopes that it never has to do really aggressive swapping.
+min
+---
+When the  number  of  free  pages  in the system reaches this number, only the
+kernel can allocate more memory.
+
+low
+---
+If the number of free pages falls below this point, the kernel starts swapping
+aggressively.
+
+high
+----
+The kernel  tries  to  keep  up to this amount of memory free; if memory falls
+below this point, the kernel starts gently swapping in the hopes that it never
+has to do really aggressive swapping.
 
 kswapd
-   Kswapd is the kernel swap out daemon. That is, kswapd is that piece
-   of the kernel that frees memory when it gets fragmented or
-   full. Since every system is different, you'll probably want some
-   control over this piece of the system.
-
-   The file contains three numbers:
-
-   tries_base
-     The maximum number of pages kswapd tries to free in one round is
-     calculated from this number. Usually this number will be divided
-     by 4 or 8 (see mm/vmscan.c), so it isn't as big as it looks.
-
-     When you need to increase the bandwidth to/from swap, you'll want
-     to increase this number.
-
-   tries_min
-     This is the minimum number of times kswapd tries to free a page
-     each time it is called. Basically it's just there to make sure
-     that kswapd frees some pages even when it's being called with
-     minimum priority.
-
-
-  swap_cluster
-     This is probably the greatest influence on system
-     performance. swap_cluster is the number of pages kswapd writes in
-     one turn. You'll want this value to be large so that kswapd does
-     its I/O in large chunks and the disk doesn't have to seek as
-     often., but you don't want it to be too large since that would
-     flood the request queue.
+------
+
+Kswapd is  the  kernel  swap  out daemon. That is, kswapd is that piece of the
+kernel that  frees  memory when it gets fragmented or full. Since every system
+is different, you'll probably want some control over this piece of the system.
+
+The file contains three numbers:
+
+tries_base
+----------
+
+The maximum  number  of  pages kswapd tries to free in one round is calculated
+from this  number.  Usually  this  number  will  be  divided  by  4  or 8 (see
+mm/vmscan.c), so it isn't as big as it looks.
+
+When you  need to increase the bandwidth to/from swap, you'll want to increase
+this number.
+
+tries_min
+---------
+
+This is  the  minimum number of times kswapd tries to free a page each time it
+is called. Basically it's just there to make sure that kswapd frees some pages
+even when it's being called with minimum priority.
+
+swap_cluster
+------------
+
+This is probably the greatest influence on system performance.
+
+swap_cluster is  the  number  of  pages kswapd writes in one turn. You'll want
+this value  to  be  large  so that kswapd does its I/O in large chunks and the
+disk doesn't  have  to  seek  as  often, but you don't want it to be too large
+since that would flood the request queue.
 
 overcommit_memory
-   This file contains one value. The following algorithm is used to
-   decide if there's enough memory: if the value of overcommit_memory
-   is positive, then there's always enough memory. This is a useful
-   feature, since programs often malloc() huge amounts of memory 'just
-   in case', while they only use a small part of it. Leaving this
-   value at 0 will lead to the failure of such a huge malloc(), when
-   in fact the system has enough memory for the program to run.
-
-   On the other hand, enabling this feature can cause you to run out
-   of memory and thrash the system to death, so large and/or important
-   servers will want to set this value to 0.
+-----------------
+
+This file  contains  one  value.  The following algorithm is used to decide if
+there's enough  memory:  if  the  value of overcommit_memory is positive, then
+there's always  enough  memory. This is a useful feature, since programs often
+malloc() huge  amounts  of  memory 'just in case', while they only use a small
+part of  it.  Leaving  this value at 0 will lead to the failure of such a huge
+malloc(), when in fact the system has enough memory for the program to run.
+
+On the  other  hand,  enabling this feature can cause you to run out of memory
+and thrash the system to death, so large and/or important servers will want to
+set this value to 0.
 
 pagecache
-   This file does exactly the same as buffermem, only this file
-   controls the amount of memory allowed for memory mapping and
-   generic caching of files.
-
-   You don't want the minimum level to be too low, otherwise your
-   system might thrash when memory is tight or fragmentation is
-   high.
+---------
+
+This file  does exactly the same job as buffermem, only this file controls the
+amount of memory allowed for memory mapping and generic caching of files.
+
+You don't  want  the  minimum level to be too low, otherwise your system might
+thrash when memory is tight or fragmentation is high.
 
 pagetable_cache
-   The kernel keeps a number of page tables in a per-processor cache
-   (this helps a lot on SMP systems). The cache size for each
-   processor will be between the low and the high value.
-
-   On a low-memory, single CPU system, you can safely set these values
-   to 0 so you don't waste memory. It is used on SMP systems so that
-   the system can perform fast pagetable allocations without having to
-   aquire the kernel memory lock.
-
-   For large systems, the settings are probably fine. For normal
-   systems they won't hurt a bit. For small systems (<16MB ram) it
-   might be advantageous to set both values to 0.
+---------------
+
+The kernel  keeps a number of page tables in a per-processor cache (this helps
+a lot  on  SMP systems). The cache size for each processor will be between the
+low and the high value.
+
+On a  low-memory,  single  CPU system, you can safely set these values to 0 so
+you don't  waste  memory.  It  is  used  on SMP systems so that the system can
+perform fast  pagetable allocations without having to aquire the kernel memory
+lock.
+
+For large  systems,  the  settings  are probably fine. For normal systems they
+won't hurt  a  bit.  For  small  systems  (  less  than  16MB ram) it might be
+advantageous to set both values to 0.
 
 swapctl
-   This file contains no less than 8 variables. All of these values
-   are used by kswapd.
+-------
+
+This file  contains  no less than 8 variables. All of these values are used by
+kswapd.
 
-   The first four variables sc_max_page_age, sc_page_advance,
-   sc_page_decline and sc_page_initial_age are used to keep track of
-   Linux's page aging. Page aging is a bookkeeping method to track
-   which pages of memory are often used, and which pages can be
-   swapped out without consequences.
-
-   When a page is swapped in, it starts at sc_page_initial_age
-   (default 3) and when the page is scanned by kswapd, its age is
-   adjusted according to the following scheme:
-
-    o If the page was used since the last time we scanned, its age
-      is increased by sc_page_advance (default 3) up to a
-      maximum of sc_max_page_age (default 20).
-
-    o Else (meaning it wasn't used) its age is decreased by
-      sc_page_decline (default 1).
-
-   When a page reaches age 0, it's ready to be swapped out.
-
-   The next four variables sc_age_cluster_fract, sc_age_cluster_min,
-   sc_pageout_weight and sc_bufferout_weight, can be used to control
-   kswapd's aggressiveness in swapping out pages.
-
-   Sc_age_cluster_fract is used to calculate how many pages from a
-   process are to be scanned by kswapd. The formula used is
-
-           sc_age_cluster_fract
-           -------------------- * resident set size
-              1024   =20
-
-   So if you want kswapd to scan the whole process,
-   sc_age_cluster_fract needs to have a value of 1024. The minimum
-   number of pages kswapd will scan is represented by
-   sc_age_cluster_min, this is done so kswapd will also scan small
-   processes.
-
-   The values of sc_pageout_weight and sc_bufferout_weight are used
-   to control how many tries kswapd will make in order to swap out
-   one page/buffer. These values can be used to fine-tune the ratio
-   between user pages and buffer/cache memory. When you find that
-   your Linux system is swapping out too many process pages in order
-   to satisfy buffer memory demands, you might want to either
-   increase sc_bufferout_weight, or decrease the value of
-   sc_pageout_weight.
-
-3.6  /proc/sys/dev - Device specific parameters
-
-Currently there is only support for CDROM drives, but other drivers may
-wish to register themselves in here in the future. The cdrom/ directory
-contains several files that either control or supply information about
-the CDROM subsystem. 
-
->cat /proc/sys/dev/cdrom/info
-CD-ROM information, Id: cdrom.c 3.04 1999/09/12
-
-drive name:		hdd	hdc	hdb	hda
-drive speed:		32	24	10	0
-drive # of slots:	1	1	1	1
-Can close tray:		1	1	1	1
-Can open tray:		1	1	1	1
-Can lock tray:		1	1	1	1
-Can change speed:	1	1	1	1
-Can select disk:	0	0	0	0
-Can read multisession:	1	1	1	1
-Can read MCN:		1	1	1	1
-Reports media changed:	1	1	1	1
-Can play audio:		1	1	1	1
-Can write CD-R:		0	1	0	0
-Can write CD-RW:	0	1	0	0
-Can read DVD:		0	0	0	1
-Can write DVD-R:	0	0	0	0
-Can write DVD-RAM:	0	0	0	0
-
-You see four drives and their lists of features. These are all ATAPI
-drives - SCSI drives will be numbered sr0, sr1, and so forth.
-
-The remaining files all set options in the driver.
-
-autoclose
-    Close the drive tray when the drive is accessed.
-
-autoeject
-    Eject the tray when the drive is umounted.
-
-check_media
-    Verify the media type when opening the device. This is generally
-    meant for audio CD's.
-
-debug
-    Print debugging messages.
-
-lock
-    Lock the tray when the drive is in use.
-
-
-3.7  /proc/sys/sunrpc - Remote procedure calls
-
-This directory contains four files, which enable or disable debugging
-for the RPC functions NFS, NFS-daemon, RPC and NLM. The default values
-are 0. They can be set to one, to turn debugging on.  (The default
-value is 0 for each)
-
-3.8  /proc/sys/net - Networking stuff
-
-The interface to the networking parts of the kernel is located in
-/proc/sys/net. The table below shows all possible subdirectories. You
-may see only some of them, depending on the configuration of your
-kernel:
-
-+-------------------------------------------------------------+
-| core     General parameter   |appletalk  Appletalk protocol |
-| unix     Unix domain sockets |netrom     NET/ROM            |
-| 802      E802 protocol       |ax25       AX25               |
-| ethernet Ethernet protocol   |rose       X.25 PLP layer     |
-| ipv4     IP version 4        |x25        X.25 protocol      |
-| ipx      IPX                 |token-ring IBM token ring     |
-| bridge   Bridging            |decnet     DEC net            |
-| ipv6     IP version 6        |                              |
-+-------------------------------------------------------------+
-
-We will concentrate on IP networking here. As AX15, X.25, and DEC Net
-are only minor players in the Linux world, we'll skip them in this
-chapter. You'll find some short info to Appletalk and IPX further down
-in section 3.10 and 3.11. Please look in the online documentation and
-the kernel source to get a detailed view of the parameters for those
-protocols. In this section we'll discuss the subdirectories printed in
-bold letters in the table above. As default values are suitable for
-most needs, there is no need to change these values.
+The first four variables
+* sc_max_page_age,
+* sc_page_advance,
+* sc_page_decline and
+* sc_page_initial_age
+are used  to  keep  track  of  Linux's page aging. Page aging is a bookkeeping
+method to  track  which pages of memory are often used, and which pages can be
+swapped out without consequences.
+
+When a  page  is  swapped in, it starts at sc_page_initial_age (default 3) and
+when the  page  is  scanned  by  kswapd,  its age is adjusted according to the
+following scheme:
+
+* If  the  page  was used since the last time we scanned, its age is increased
+  by sc_page_advance  (default  3).  Where  the  maximum  value  is  given  by
+  sc_max_page_age (default 20).
+* Otherwise  (meaning  it wasn't used) its age is decreased by sc_page_decline
+  (default 1).
+
+When a page reaches age 0, it's ready to be swapped out.
+
+The variables  sc_age_cluster_fract, sc_age_cluster_min, sc_pageout_weight and
+sc_bufferout_weight, can  be  used  to  control  kswapd's  aggressiveness  in
+swapping out pages.
+
+Sc_age_cluster_fract is used to calculate how many pages from a process are to
+be scanned by kswapd. The formula used is
+
+(sc_age_cluster_fract divided by 1024) times resident set size
+
+So if you want kswapd to scan the whole process, sc_age_cluster_fract needs to
+have a  value  of  1024.  The  minimum  number  of  pages  kswapd will scan is
+represented by sc_age_cluster_min, which is done so that kswapd will also scan
+small processes.
+
+The values  of  sc_pageout_weight  and sc_bufferout_weight are used to control
+how many  tries  kswapd  will make in order to swap out one page/buffer. These
+values can  be used to fine-tune the ratio between user pages and buffer/cache
+memory. When  you find that your Linux system is swapping out too many process
+pages in  order  to  satisfy  buffer  memory  demands,  you may want to either
+increase sc_bufferout_weight, or decrease the value of sc_pageout_weight.
+
+2.5 /proc/sys/dev - Device specific parameters
+----------------------------------------------
+
+Currently there is only support for CDROM drives, and for those, there is only
+one read-only  file containing information about the CD-ROM drives attached to
+the system:
+
+  >cat /proc/sys/dev/cdrom/info 
+  CD-ROM information, Id: cdrom.c 2.55 1999/04/25 
+   
+  drive name:             sr0     hdb 
+  drive speed:            32      40 
+  drive # of slots:       1       0 
+  Can close tray:         1       1 
+  Can open tray:          1       1 
+  Can lock tray:          1       1 
+  Can change speed:       1       1 
+  Can select disk:        0       1 
+  Can read multisession:  1       1 
+  Can read MCN:           1       1 
+  Reports media changed:  1       1 
+  Can play audio:         1       1 
+
+
+You see two drives, sr0 and hdb, along with a list of their features.
+
+2.6 /proc/sys/sunrpc - Remote procedure calls
+---------------------------------------------
+
+This directory  contains four files, which enable or disable debugging for the
+RPC functions NFS, NFS-daemon, RPC and NLM. The default values are 0. They can
+be set to one to turn debugging on. (The default value is 0 for each)
+
+2.7 /proc/sys/net - Networking stuff
+------------------------------------
+
+The interface  to  the  networking  parts  of  the  kernel  is  located  in
+/proc/sys/net. Table  2-3  shows all possible subdirectories. You may see only
+some of them, depending on your kernel's configuration.
+
+
+Table 2-3: Subdirectories in /proc/sys/net 
+..............................................................................
+ Directory Content             Directory  Content            
+ core      General parameter   appletalk  Appletalk protocol 
+ unix      Unix domain sockets netrom     NET/ROM            
+ 802       E802 protocol       ax25       AX25               
+ ethernet  Ethernet protocol   rose       X.25 PLP layer     
+ ipv4      IP version 4        x25        X.25 protocol      
+ ipx       IPX                 token-ring IBM token ring     
+ bridge    Bridging            decnet     DEC net            
+ ipv6      IP version 6                   
+..............................................................................
+
+We will  concentrate  on IP networking here. Since AX15, X.25, and DEC Net are
+only minor players in the Linux world, we'll skip them in this chapter. You'll
+find some  short  info on Appletalk and IPX further on in this chapter. Review
+the online  documentation  and the kernel source to get a detailed view of the
+parameters for  those  protocols.  In  this  section  we'll  discuss  the
+subdirectories printed  in  bold letters in the table above. As default values
+are suitable for most needs, there is no need to change these values.
 
 /proc/sys/net/core - Network core options
+-----------------------------------------
 
 rmem_default
-   The default setting of the socket receive buffer in bytes.
+------------
+
+The default setting of the socket receive buffer in bytes.
 
 rmem_max
-   The maximum receive socket buffer size in bytes.
+--------
+
+The maximum receive socket buffer size in bytes.
 
 wmem_default
-   The default setting (in bytes) of the socket send buffer.
+------------
+
+The default setting (in bytes) of the socket send buffer.
 
 wmem_max
-   The maximum send socket buffer size in bytes.
+--------
+
+The maximum send socket buffer size in bytes.
 
 message_burst and message_cost
-   These parameters are used to limit the warning messages written to
-   the kernel log from the networking code. They enforce a rate limit
-   to make a denial-of-service attack impossible. The higher the
-   message_cost factor is, the less messages will be
-   written. Message_burst controls when messages will be dropped. The
-   default settings limit warning messages to one every five seconds.
+------------------------------
+
+These parameters  are used to limit the warning messages written to the kernel
+log from  the  networking  code.  They  enforce  a  rate  limit  to  make  a
+denial-of-service attack  impossible. A higher message_cost factor, results in
+fewer messages that will be written. Message_burst controls when messages will
+be dropped.  The  default  settings  limit  warning messages to one every five
+seconds.
 
 netdev_max_backlog
-   Maximal number of packets, queued on INPUT side, when the interface
-   receives packets faster than kernel can process them.
+------------------
+
+Maximum number  of  packets,  queued  on  the  INPUT  side, when the interface
+receives packets faster than kernel can process them.
 
 optmem_max
-   Maximum ancillary buffer size allowed per socket. Ancillary data is
-   a sequence of struct cmsghdr structures with appended data.
+----------
 
-/proc/sys/net/unix - Parameters for UNIX domain sockets
+Maximum ancillary buffer size allowed per socket. Ancillary data is a sequence
+of struct cmsghdr structures with appended data.
 
-There are only two files in this subdirectory. They control the delays
-for deleting and destroying socket descriptors.
+/proc/sys/net/unix - Parameters for Unix domain sockets
+-------------------------------------------------------
 
-3.9  /proc/sys/net/ipv4 - IPV4 settings
+There are  only  two  files  in this subdirectory. They control the delays for
+deleting and destroying socket descriptors.
 
-IP version 4 is still the most used protocol in Unix networking. It
-will be replaced by IP version 6 in the next couple of years, but for
-the moment it's the de facto standard for the internet and is used in
-most networking environments around the world. Because of the
-importance of this protocol, we'll have a deeper look into the subtree
-controlling the behavior of the IPv4 subsystem of the Linux kernel.
+2.8 /proc/sys/net/ipv4 - IPV4 settings
+--------------------------------------
 
-Let's start with the entries in /proc/sys/net/ipv4 itself.
+IP version  4  is  still the most used protocol in Unix networking. It will be
+replaced by  IP version 6 in the next couple of years, but for the moment it's
+the de  facto  standard  for  the  internet  and  is  used  in most networking
+environments around  the  world.  Because  of the importance of this protocol,
+we'll have a deeper look into the subtree controlling the behavior of the IPv4
+subsystem of the Linux kernel.
+
+Let's start with the entries in /proc/sys/net/ipv4.
 
 ICMP settings
+-------------
 
 icmp_echo_ignore_all and icmp_echo_ignore_broadcasts
-   Turn on (1) or off (0), if the kernel should ignore all ICMP ECHO
-   requests, or just those to broadcast and multicast addresses.
+----------------------------------------------------
+
+Turn on (1) or off (0), if the kernel should ignore all ICMP ECHO requests, or
+just those to broadcast and multicast addresses.
+
+Please note that if you accept ICMP echo requests with a broadcast/multi\-cast
+destination address  your  network  may  be  used as an exploder for denial of
+service packet flooding attacks to other hosts.
 
-   Please note that if you accept ICMP echo requests with a
-   broadcast/multicast destination address your network may be used
-   as an exploder for denial of service packet flooding attacks to
-   other hosts.
-
-icmp_destunreach_rate, icmp_echoreply_rate,
-icmp_paramprob_rate and icmp_timeexeed_rate
-   Sets limits for sending ICMP packets to specific targets. A value of
-   zero disables all limiting. Any positive value sets the maximum
-   package rate in hundredths of a second (on Intel systems).
+icmp_destunreach_rate, icmp_echoreply_rate, icmp_paramprob_rate and icmp_timeexeed_rate
+---------------------------------------------------------------------------------------
+
+Sets limits  for  sending  ICMP  packets  to specific targets. A value of zero
+disables all  limiting.  Any  positive  value sets the maximum package rate in
+hundredth of a second (on Intel systems).
 
 IP settings
+-----------
 
 ip_autoconfig
-   This file contains one, if the host got its IP configuration by
-   RARP, BOOTP, DHCP or a similar mechanism. Otherwise it is zero.
+-------------
+
+This file contains the number one if the host received its IP configuration by
+RARP, BOOTP, DHCP or a similar mechanism. Otherwise it is zero.
 
 ip_default_ttl
-   TTL (Time To Live) for IPv4 interfaces. This is simply the
-   maximum number of hops a packet may travel.
+--------------
+
+TTL (Time  To  Live) for IPv4 interfaces. This is simply the maximum number of
+hops a packet may travel.
 
 ip_dynaddr
-   Enable dynamic socket address rewriting on interface address change. This
-   is useful for dialup interface with changing IP addresses.
+----------
+
+Enable dynamic  socket  address rewriting on interface address change. This is
+useful for dialup interface with changing IP addresses.
 
 ip_forward
-   Enable or disable forwarding of IP packages between interfaces. A
-   change of this value resets all other parameters to their default
-   values. They differ if the kernel is configured as host or router.
+----------
+
+Enable or  disable forwarding of IP packages between interfaces. Changing this
+value resets  all other parameters to their default values. They differ if the
+kernel is configured as host or router.
 
 ip_local_port_range
-   Range of ports used by TCP and UDP to choose the local
-   port. Contains two numbers, the first number is the lowest port,
-   the second number the highest local port. Default is 1024-4999.
-   Should be changed to 32768-61000 for high-usage systems.
+-------------------
+
+Range of  ports  used  by  TCP  and UDP to choose the local port. Contains two
+numbers, the  first  number  is the lowest port, the second number the highest
+local port.  Default  is  1024-4999.  Should  be  changed  to  32768-61000 for
+high-usage systems.
 
 ip_no_pmtu_disc
-   Global switch to turn path MTU discovery off. It can also be set
-   on a per socket basis by the applications or on a per route
-   basis.
+---------------
+
+Global switch  to  turn  path  MTU  discovery off. It can also be set on a per
+socket basis by the applications or on a per route basis.
 
 ip_masq_debug
-   Enable/disable debugging of IP masquerading.
+-------------
 
+Enable/disable debugging of IP masquerading.
 
 IP fragmentation settings
+-------------------------
 
 ipfrag_high_trash and ipfrag_low_trash
-   Maximum memory used to reassemble IP fragments. When
-   ipfrag_high_thresh bytes of memory is allocated for this purpose,
-   the fragment handler will toss packets until ipfrag_low_thresh is
-   reached.
+--------------------------------------
 
+Maximum memory  used to reassemble IP fragments. When ipfrag_high_thresh bytes
+of memory  is  allocated  for  this  purpose,  the  fragment handler will toss
+packets until ipfrag_low_thresh is reached.
 
 ipfrag_time
-   Time in seconds to keep an IP fragment in memory.
+-----------
+
+Time in seconds to keep an IP fragment in memory.
 
 TCP settings
+------------
 
 tcp_retrans_collapse
-   Bug-to-bug compatibility with some broken printers. On retransmit
-   try to send bigger packets to work around bugs in certain TCP
-   stacks. Can be turned off by setting it to zero.
+--------------------
+
+Bug-to-bug compatibility with some broken printers. On retransmit, try to send
+larger packets to work around bugs in certain TCP stacks. Can be turned off by
+setting it to zero.
 
 tcp_keepalive_probes
-   Number of keep alive probes TCP sends out, until it decides that the
-   connection is broken.
+--------------------
+
+Number of  keep  alive  probes  TCP  sends  out,  until  it  decides  that the
+connection is broken.
 
 tcp_keepalive_time
-   How often TCP sends out keep alive messages, when keep alive is
-   enabled. The default is 2 hours.
+------------------
+
+How often  TCP  sends out keep alive messages, when keep alive is enabled. The
+default is 2 hours.
 
 tcp_syn_retries
-   Number of times initial SYNs for a TCP connection attempt will be
-   retransmitted. Should not be higher than 255. This is only the
-   timeout for outgoing connections, for incoming connections the
-   number of retransmits is defined by tcp_retries1.
+---------------
+
+Number of  times  initial  SYNs  for  a  TCP  connection  attempt  will  be
+retransmitted. Should  not  be  higher  than 255. This is only the timeout for
+outgoing connections,  for  incoming  connections the number of retransmits is
+defined by tcp_retries1.
 
 tcp_sack
-   Enable select acknowledgments after RFC2018.
+--------
+
+Enable select acknowledgments after RFC2018.
 
 tcp_timestamps
-   Enable timestamps as defined in RFC1323.
+--------------
+
+Enable timestamps as defined in RFC1323.
 
 tcp_stdurg
-   Enable the strict RFC793 interpretation of the TCP urgent pointer
-   field. The default is to use the BSD compatible interpretation
-   of the urgent pointer pointing to the first byte after the urgent
-   data. The RFC793 interpretation is to have it point to the last
-   byte of urgent data. Enabling this option may lead to
-   interoperatibility problems. Disabled by default.
+----------
+
+Enable the  strict  RFC793 interpretation of the TCP urgent pointer field. The
+default is  to  use  the  BSD  compatible interpretation of the urgent pointer
+pointing to the first byte after the urgent data. The RFC793 interpretation is
+to have  it  point  to  the last byte of urgent data. Enabling this option may
+lead to interoperatibility problems. Disabled by default.
 
 tcp_syncookies
-   Only valid when the kernel was compiled with
-   CONFIG_SYNCOOKIES. Send out syncookies when the syn backlog queue
-   of a socket overflows. This is to prevent against the common 'syn
-   flood attack'. Disabled by default.
-
-   Note that the concept of a socket backlog is abandoned, this
-   means the peer may not receive reliable error messages from an
-   over loaded server with syncookies enabled.
+--------------
+
+Only valid  when  the  kernel  was  compiled  with CONFIG_SYNCOOKIES. Send out
+syncookies when  the  syn backlog queue of a socket overflows. This is to ward
+off the common 'syn flood attack'. Disabled by default.
+
+Note that  the  concept  of a socket backlog is abandoned. This means the peer
+may not  receive  reliable  error  messages  from  an  over loaded server with
+syncookies enabled.
 
 tcp_window_scaling
-   Enable window scaling as defined in RFC1323.
+------------------
+
+Enable window scaling as defined in RFC1323.
 
 tcp_fin_timeout
-   How many seconds to wait for a final FIN before the socket is
-   always closed. This is strictly a violation of the TCP
-   specification, but required to prevent denial-of-service attacks.
+---------------
+
+The length  of  time  in  seconds  it  takes to receive a final FIN before the
+socket is  always  closed.  This  is  strictly  a  violation  of  the  TCP
+specification, but required to prevent denial-of-service attacks.
 
 tcp_max_ka_probes
-   How many keepalive probes are sent per slow timer run. Shouldn't be
-   set too high to prevent bursts.
+-----------------
+
+Indicates how  many  keep alive probes are sent per slow timer run. Should not
+be set too high to prevent bursts.
 
 tcp_max_syn_backlog
-   Length of the per socket backlog queue. Since Linux 2.2 the backlog
-   specified in listen(2) only specifies the length of the backlog
-   queue of already established sockets. When more connection requests
-   arrive Linux starts to drop packets. When syncookies are enabled
-   the packets are still answered and the maximum queue is effectively
-   ignored.
+-------------------
+
+Length of  the per socket backlog queue. Since Linux 2.2 the backlog specified
+in listen(2)  only  specifies  the  length  of  the  backlog  queue of already
+established sockets. When more connection requests arrive Linux starts to drop
+packets. When  syncookies  are  enabled the packets are still answered and the
+maximum queue is effectively ignored.
 
 tcp_retries1
-   Defines how often an answer to a TCP connection request is
-   retransmitted before giving up.
+------------
+
+Defines how  often  an  answer  to  a  TCP connection request is retransmitted
+before giving up.
 
 tcp_retries2
-   Defines how often a TCP packet is retransmitted before giving up.
+------------
 
-Interface specific settings
+Defines how often a TCP packet is retransmitted before giving up.
 
-In the directory /proc/sys/net/ipv4/conf you'll find one subdirectory
-for each interface the system knows about and one directory calls
-all. Changes in the all subdirectory affect all interfaces, where
-changes in the other subdirectories affect only one interface.
+Interface specific settings
+---------------------------
 
-All directories have the same entries:
+In the directory /proc/sys/net/ipv4/conf you'll find one subdirectory for each
+interface the  system  knows about and one directory calls all. Changes in the
+all subdirectory  affect  all  interfaces,  whereas  changes  in  the  other
+subdirectories affect  only  one  interface.  All  directories  have  the same
+entries:
 
 accept_redirects
-   This switch decides if the kernel accepts ICMP redirect messages
-   or not. The default is 'yes', if the kernel is configured for a
-   regular host; and 'no' for a router configuration.
+----------------
+
+This switch  decides  if the kernel accepts ICMP redirect messages or not. The
+default is 'yes' if the kernel is configured for a regular host and 'no' for a
+router configuration.
 
 accept_source_route
-   Should source routed packages be accepted or declined. The
-   default is dependent on the kernel configuration. It's 'yes' for
-   routers and 'no' for hosts.
+-------------------
+
+Should source  routed  packages  be  accepted  or  declined.  The  default  is
+dependent on  the  kernel  configuration.  It's 'yes' for routers and 'no' for
+hosts.
 
 bootp_relay
-   Accept packets with source address 0.b.c.d destined not to this
-   host as local ones. It is supposed that BOOTP relay daemon will
-   catch and forward such packets.
+~~~~~~~~~~~
 
-   The default is 'no', as this feature is not implemented yet
-   (kernel version 2.2.0-pre?).
+Accept packets  with source address 0.b.c.d with destinations not to this host
+as local ones. It is supposed that a BOOTP relay daemon will catch and forward
+such packets.
+
+The default  is  0,  since this feature is not implemented yet (kernel version
+2.2.12).
 
 forwarding
-   Enable or disable IP forwarding on this interface.
+----------
+
+Enable or disable IP forwarding on this interface.
 
 log_martians
-   Log packets with source addresses with no known route to kernel log.
+------------
+
+Log packets with source addresses with no known route to kernel log.
 
 mc_forwarding
-   Do multicast routing. The kernel needs to be compiled with
-   CONFIG_MROUTE and a multicast routing daemon is required.
+-------------
+
+Do multicast routing. The kernel needs to be compiled with CONFIG_MROUTE and a
+multicast routing daemon is required.
 
 proxy_arp
-   Do (1) or don't (0) do proxy ARP.
+---------
+
+Does (1) or does not (0) perform proxy ARP.
 
 rp_filter
-   Integer value deciding if source validation should be made. 
-   1 means yes, 0 means no. Disabled by default, but 
-   local/broadcast address spoofing is always on.
-
-   If you set this to 1 on a router that is the only connection
-   for a network to the net , it evidently prevents spoofing attacks
-   against your internal networks (external addresses can still be
-   spoofed), without the need for additional firewall rules.
+---------
+
+Integer value determines if a source validation should be made. 1 means yes, 0
+means no.  Disabled by default, but local/broadcast address spoofing is always
+on.
+
+If you  set this to 1 on a router that is the only connection for a network to
+the net,  it  will  prevent  spoofing  attacks  against your internal networks
+(external addresses  can  still  be  spoofed), without the need for additional
+firewall rules.
 
 secure_redirects
-   Accept ICMP redirect messages only for gateways, listed in
-   default gateway list. Enabled by default.
+----------------
+
+Accept ICMP  redirect  messages  only  for gateways, listed in default gateway
+list. Enabled by default.
 
 shared_media
-   If it is not set the kernel does not assume that different subnets
-   on this device can communicate directly. Default setting is 'yes'.  
+------------
+
+If it  is  not  set  the kernel does not assume that different subnets on this
+device can communicate directly. Default setting is 'yes'.
 
 send_redirects
-   Determines if or if not to send ICMP redirects to other hosts.
+--------------
 
+Determines whether to send ICMP redirects to other hosts.
 
 Routing settings
+----------------
 
-The directory /proc/sys/net/ipv4/route contains several file to
-control routing issues.
+The directory  /proc/sys/net/ipv4/route  contains  several  file  to  control
+routing issues.
 
 error_burst and error_cost
-   These parameters are used to limit the warning messages written to
-   the kernel log from the routing code. The higher the error_cost
-   factor is, the fewer messages will be written. Error_burst controls
-   when messages will be dropped. The default settings limit warning
-   messages to one every five seconds.
+--------------------------
+
+These parameters  are used to limit the warning messages written to the kernel
+log from  the  routing  code.  The  higher the error_cost factor is, the fewer
+messages will  be written. Error_burst controls when messages will be dropped.
+The default settings limit warning messages to one every five seconds.
 
 flush
-   Writing to this file results in a flush of the routing cache.
+-----
+
+Writing to this file results in a flush of the routing cache.
 
 gc_elastic, gc_interval, gc_min_interval, gc_tresh, gc_timeout
-   Values to control the frequency and behavior of the garbage
-   collection algorithm for the routing cache.
+--------------------------------------------------------------
+
+Values to  control  the  frequency  and  behavior  of  the  garbage collection
+algorithm for the routing cache.
 
 max_size
-   Maximum size of the routing cache. Old entries will be purged
-   once the cache has this size.
+--------
+
+Maximum size  of  the routing cache. Old entries will be purged once the cache
+reached has this size.
 
 max_delay, min_delay
-   Delays for flushing the routing cache.
+--------------------
+
+Delays for flushing the routing cache.
 
 redirect_load, redirect_number
-   Factors which determine if more ICPM redirects should be sent to
-   a specific host. No redirects will be sent once the load limit or
-   the maximum number of redirects has been reached.
+------------------------------
+
+Factors which  determine  if  more ICPM redirects should be sent to a specific
+host. No  redirects  will be sent once the load limit or the maximum number of
+redirects has been reached.
 
 redirect_silence
+----------------
 
-   Timeout for redirects. After this period redirects will be sent
-   again, even if this has been stopped, because the load or number
-   limit has been reached.
+Timeout for redirects. After this period redirects will be sent again, even if
+this has been stopped, because the load or number limit has been reached.
 
 Network Neighbor handling
+-------------------------
+
+Settings about how to handle connections with direct neighbors (nodes attached
+to the same link) can be found in the directory /proc/sys/net/ipv4/neigh.
 
-Settings about how to handle connections with direct neighbors (nodes
-attached to the same link) can be found in the directory
-/proc/sys/net/ipv4/neigh.
-
-As we saw it in the conf directory, there is a default subdirectory
-which holds the default values, and one directory for each
-interface. The contents of the directories are identical, with the
-single exception that the default settings contain additional options
-to set garbage collection parameters.
+As we  saw  it  in  the  conf directory, there is a default subdirectory which
+holds the  default  values, and one directory for each interface. The contents
+of the  directories  are identical, with the single exception that the default
+settings contain additional options to set garbage collection parameters.
 
 In the interface directories you'll find the following entries:
 
 base_reachable_time
-   A base value used for computing the random reachable time value
-   as specified in RFC2461.
+-------------------
+
+A base  value  used for computing the random reachable time value as specified
+in RFC2461.
 
 retrans_time
-   The time, expressed in jiffies (1/100 sec), between retransmitted
-   Neighbor Solicitation messages. Used for address resolution and to
-   determine if a neighbor is unreachable.
+------------
+
+The time,  expressed  in  jiffies  (1/100 sec), between retransmitted Neighbor
+Solicitation messages.  Used  for  address  resolution  and  to determine if a
+neighbor is unreachable.
 
 unres_qlen
-   Maximum queue length for a pending arp request - how many packets
-   are accepted from other layers while the arp address is still
-   resolved.
+----------
+
+Maximum queue  length  for a pending arp request - the number of packets which
+are accepted from other layers while the ARP address is still resolved.
 
 anycast_delay
-   Maximum for random delay of answers to neighbor solicitation
-   messages in jiffies (1/100 sec). Not yet implemented (Linux does
-   not have anycast support yet).
+-------------
+
+Maximum for  random  delay  of  answers  to  neighbor solicitation messages in
+jiffies (1/100  sec). Not yet implemented (Linux does not have anycast support
+yet).
 
 ucast_solicit
-   Maximum number of retries for unicast solicitation.
+-------------
+
+Maximum number of retries for unicast solicitation.
 
 mcast_solicit
-   Maximum number of retries for multicast solicitation.
+-------------
+
+Maximum number of retries for multicast solicitation.
 
 delay_first_probe_time
-   Delay for the first time probe if the neighbor is reachable. (see
-   gc_stale_time).
+----------------------
+
+Delay for  the  first  time  probe  if  the  neighbor  is  reachable.  (see
+gc_stale_time)
 
 locktime
-   An ARP/neighbor entry is only replaced with a new one if the old
-   is at least locktime old. This prevents ARP cache thrashing.
+--------
+
+An ARP/neighbor  entry  is only replaced with a new one if the old is at least
+locktime old. This prevents ARP cache thrashing.
 
 proxy_delay
-   Maximum time (real time is random [0..proxytime]) before
-   answering to an arp request for which we have an proxy arp entry.
-   In some cases, this is used to prevent network flooding.
+-----------
+
+Maximum time  (real  time is random [0..proxytime]) before answering to an ARP
+request for  which  we have an proxy ARP entry. In some cases, this is used to
+prevent network flooding.
 
 proxy_qlen
-   Maximum queue length of the delayed proxy arp timer (see
-   proxy_delay).
+----------
+
+Maximum queue length of the delayed proxy arp timer. (see proxy_delay).
 
 app_solcit
-   Determines the number of requests to send to the user level arp
-   daemon. 0 to turn off.
+----------
+
+Determines the  number of requests to send to the user level ARP daemon. Use 0
+to turn off.
 
 gc_stale_time
-   Determines how often to check for stale ARP entries. After an ARP
-   entry is stale it will be resolved again (useful when an IP address
-   migrates to another machine). When ucast_solicit is > 0 it first
-   tries to send an ARP packet directly to the known host, when that
-   fails and mcast_solicit is > 0, an ARP request is broadcasted.
-
-3.10  Appletalk
-
-The /proc/sys/net/appletalk directory holds the Appletalk
-configuration data when Appletalk is loaded. The configurable
-parameters are:
+-------------
+
+Determines how  often  to  check  for stale ARP entries. After an ARP entry is
+stale it  will  be resolved again (which is useful when an IP address migrates
+to another  machine).  When  ucast_solicit is greater than 0 it first tries to
+send an  ARP  packet  directly  to  the  known  host  When  that  fails  and
+mcast_solicit is greater than 0, an ARP request is broadcasted.
+
+2.9 Appletalk
+-------------
+
+The /proc/sys/net/appletalk  directory  holds the Appletalk configuration data
+when Appletalk is loaded. The configurable parameters are:
 
 aarp-expiry-time
-   The amount of time we keep an AARP entry before expiring
-   it. Used to age out old hosts.
+----------------
+
+The amount  of  time  we keep an ARP entry before expiring it. Used to age out
+old hosts.
 
 aarp-resolve-time
-   The amount of time we will spend trying to resolve an Appletalk
-   address.
+-----------------
+
+The amount of time we will spend trying to resolve an Appletalk address.
 
 aarp-retransmit-limit
-   The number of times we will retransmit a query before giving up.
+---------------------
+
+The number of times we will retransmit a query before giving up.
 
 aarp-tick-time
-   Controls the rate at which expiries are checked.
+--------------
+
+Controls the rate at which expires are checked.
+
+The directory  /proc/net/appletalk  holds the list of active Appletalk sockets
+on a machine.
+
+The fields  indicate  the DDP type, the local address (in network:node format)
+the remote  address,  the  size of the transmit pending queue, the size of the
+received queue  (bytes waiting for applications to read) the state and the uid
+owning the socket.
+
+/proc/net/atalk_iface lists  all  the  interfaces  configured for appletalk.It
+shows the  name  of the interface, its Appletalk address, the network range on
+that address  (or  network number for phase 1 networks), and the status of the
+interface.
+
+/proc/net/atalk_route lists  each  known  network  route.  It lists the target
+(network) that the route leads to, the router (may be directly connected), the
+route flags, and the device the route is using.
+
+2.10 IPX
+--------
+
+The IPX protocol has no tunable values in proc/sys/net.
+
+The IPX  protocol  does,  however,  provide  proc/net/ipx. This lists each IPX
+socket giving  the  local  and  remote  addresses  in  Novell  format (that is
+network:node:port). In  accordance  with  the  strange  Novell  tradition,
+everything but the port is in hex. Not_Connected is displayed for sockets that
+are not  tied to a specific remote address. The Tx and Rx queue sizes indicate
+the number  of  bytes  pending  for  transmission  and  reception.  The  state
+indicates the  state  the  socket  is  in and the uid is the owning uid of the
+socket.
+
+The /proc/net/ipx_interface  file lists all IPX interfaces. For each interface
+it gives  the network number, the node number, and indicates if the network is
+the primary  network.  It  also  indicates  which  device  it  is bound to (or
+Internal for  internal  networks)  and  the  Frame  Type if appropriate. Linux
+supports 802.3,  802.2,  802.2  SNAP  and DIX (Blue Book) ethernet framing for
+IPX.
+
+The /proc/net/ipx_route  table  holds  a list of IPX routes. For each route it
+gives the  destination  network, the router node (or Directly) and the network
+address of the router (or Connected) for internal networks.
+
+------------------------------------------------------------------------------
+Summary
+------------------------------------------------------------------------------
+Certain aspects  of  kernel  behavior  can be modified at runtime, without the
+need to  recompile  the kernel, or even to reboot the system. The files in the
+/proc/sys tree  can  not only be read, but also modified. You can use the echo
+command to write value into these files, thereby changing the default settings
+of the kernel.
+------------------------------------------------------------------------------
+
+
+
+
 
 
-The directory /proc/net/appletalk holds the list of active appletalk
-sockets on a machine.
 
-The fields indicate the DDP type, the local address (in network:node
-format) the remote address, the size of the transmit pending queue,
-the size of the received queue (bytes waiting for applications to
-read) the state and the uid owning the socket.
-
-/proc/net/atalk_iface lists all the interfaces configured for
-appletalk.It shows the name of the interface, its appletalk address,
-the network range on that ad- dress (or network number for phase 1
-networks), and the status of the interface.
-
-/proc/net/atalk_route lists each known network route. It lists the
-target (network) that the route leads to, the router (may be directly
-connected), the route flags, and the device the route is via.
-
-3.11  IPX
-
-The IPX protocol has no tunable values in /proc/sys/net.
-
-The IPX protocol does, however, provide /proc/net/ipx. This lists each
-IPX socket giving the local and remote addresses in Novell format
-(that is network:node:port). In accordance with the strange Novell
-tradition, everything but the port is in hex. Not_Connected is
-displayed for sockets that are not tied to a specific remote
-address. The Tx and Rx queue sizes indicate the number of bytes
-pending for transmit and receive. The state indicates the state the
-socket is in and the uid is the owning uid of the socket.
-
-The /proc/net/ipx_interface file lists all IPX interfaces. For each
-interface it gives the network number, the node number, and indicates
-if the network is the primary network. It also indicates which device it is bound to (or
-Internal for internal networks) and the Frame Type if
-appropriate. Linux supports 802.3, 802.2, 802.2 SNAP and DIX (Blue
-Book) ethernet framing for IPX.
-
-The /proc/net/ipx_route table holds a list of IPX routes. For each
-route it gives the destination network, the router node (or Directly)
-and the network address of the router (or Connected) for internal
-networks.

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)