From 9e30c3705aed9fbec4c3304570e4d6e707856bcb Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Fri, 21 Jan 2000 22:34:01 +0000 Subject: Merge with Linux 2.3.22. --- Documentation/filesystems/proc.txt | 2559 ++++++++++++++++++++--------------- Documentation/filesystems/smbfs.txt | 46 +- 2 files changed, 1450 insertions(+), 1155 deletions(-) (limited to 'Documentation/filesystems') diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index d842f7ed6..a17c05b0f 100644 --- a/Documentation/filesystems/proc.txt +++ b/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 January 27 1999 - Bodo Bauer ------------------------------------------------------------------------ -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. +------------------------------------------------------------------------------ + T H E /proc F I L E S Y S T E M +------------------------------------------------------------------------------ +/proc/sys Terrehon Bowden October 7 1999 + Bodo Bauer +------------------------------------------------------------------------------ +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 +----------------------------------- + +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: +------------ + +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. + - 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 +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-nr shows the number of allocated disk quota - entries and the number of free disk quota entries. +The file dquot-max shows the maximum number of cached 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. +The file dquot-nr shows the number of allocated disk quota entries and the +number of free disk quota entries. + +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 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... - 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). - 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 +~~~~~~~~~ - 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. +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. - 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. +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. -3.3 /proc/fs/binfmt_misc - Miscellaneous binary formats +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. -Besides these files, there is the subdirectory -/proc/sys/fs/binfmt_misc. This handles the kernel support for -miscellaneous binary formats. +2.2 /proc/sys/fs/binfmt_misc - 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. +Besides these files, there is the subdirectory /proc/sys/fs/binfmt_misc. This +handles the kernel support for miscellaneous binary formats. -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. +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. -There are two general files in binfmt_misc and one file per registered -format. The two general files are register and status. +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. Registering a new binary format +------------------------------- + +To register a new binary format you have to issue the command -echo :name:type:offset:magic:mask:interpreter: > /proc/sys/fs/binfmt_misc/register + 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 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). +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::