diff -u --recursive --new-file v2.3.21/linux/Documentation/Changes linux/Documentation/Changes --- v2.3.21/linux/Documentation/Changes Mon Oct 11 15:38:14 1999 +++ linux/Documentation/Changes Tue Oct 12 12:58:12 1999 @@ -2,15 +2,15 @@ ===== This document is designed to provide a list of the minimum levels of -software necessary to run the 2.2 kernels, as well as provide brief +software necessary to run the 2.3 kernels, as well as provide brief instructions regarding any other "Gotchas" users may encounter when -trying life on the Bleeding Edge. If upgrading from a pre-2.0.x -kernel, please consult the Changes file included with 2.0.x kernels for +trying life on the Bleeding Edge. If upgrading from a pre-2.2.x +kernel, please consult the Changes file included with 2.2.x kernels for additional information; most of that information will not be repeated here. Basically, this document assumes that your system is already -functional and running at least 2.0.x kernels. +functional and running at least 2.2.x kernels. - It is originally based on my "Changes" file for 2.0.x kernels and + It is originally based on my "Changes" file for 2.2.x kernels and therefore owes credit to the same people as that file (Jared Mauch, Axel Boldt, Alessandro Sigala, and countless other users all over the 'net). Please feel free to submit changes, corrections, gripes, @@ -43,7 +43,7 @@ encountered a bug! If you're unsure what version you're currently running, the suggested command should tell you. -- Kernel modutils 2.1.121 ; insmod -V +- Kernel modutils 2.3.5 ; insmod -V - Gnu C 2.7.2.3 ; gcc --version - Binutils 2.8.1.0.23 ; ld -v - Linux libc5 C Library 5.4.46 ; ls -l /lib/libc* @@ -168,7 +168,7 @@ ======= You need to upgrade to the latest version of modutils for the Linux -2.2 kernel. This version will also work with your 2.0 kernel. +2.3 kernel. This version will also work with your 2.0 kernel. As of 2.1.90-pre1, kerneld has been replaced by a kernel thread, kmod. See Documentation/kmod.txt for more information. The main @@ -567,8 +567,8 @@ Modules utilities ================= -The 2.1.121 release: -ftp://ftp.kernel.org/pub/linux/kernel/v2.1/modutils-2.1.121.tar.gz +The 2.3.5 release: +ftp://ftp.ocs.com.au/pub/modutils/v2.3/modutils-2.3.5.tar.gz Procps utilities ================ diff -u --recursive --new-file v2.3.21/linux/Documentation/Configure.help linux/Documentation/Configure.help --- v2.3.21/linux/Documentation/Configure.help Mon Oct 11 15:38:14 1999 +++ linux/Documentation/Configure.help Fri Oct 15 11:49:37 1999 @@ -80,9 +80,13 @@ MAINTAINERS, REPORTING_BUGS, Documentation/BUG-HUNTING, and Documentation/oops-tracing.txt in the kernel source). + This option will also make obsoleted drivers available. These are + drivers that have been replaced by something else, and/or are + scheduled to be removed in a future kernel release. + Unless you intend to help test and develop a feature or driver that falls into this category, or you have a situation that requires - using these features you should probably say N here, which will + using these features, you should probably say N here, which will cause this configure script to present you with fewer choices. If you say Y here, you will be offered the choice of using features or drivers that are currently considered to be in the alpha-test phase. @@ -137,7 +141,7 @@ More information about the internals of the Linux math coprocessor emulation can be found in arch/i386/math-emu/README. - If you are not sure, say Y; apart from resulting in a 45 KB bigger + If you are not sure, say Y; apart from resulting in a 66 KB bigger kernel, it won't hurt. Timer and CPU usage LEDs @@ -165,7 +169,7 @@ time indication of CPU usage, by lighting whenever the idle task is not currently executing. -Kernel FP software completion +Kernel FP software completion (EXPERIMENTAL) CONFIG_MATHEMU This option is required for IEEE compliant floating point arithmetic on the Alpha. The only time you would ever not say Y is to say M in @@ -1321,7 +1325,7 @@ the MIPS architecture, check out the Linux/MIPS FAQ on the WWW at http://lena.fnet.fr/ . -Support for Algorithmics P4032 +Support for Algorithmics P4032 (EXPERIMENTAL) CONFIG_ALGOR_P4032 This is an evaluation board of the British company Algorithmics. The board uses the R4300 and a R5230 CPUs. For more information about @@ -1641,7 +1645,7 @@ If you want to use your SGI's built-in serial ports under Linux, answer Y. -SGI Newport Graphics support +SGI Newport Graphics support (EXPERIMENTAL) CONFIG_SGI_NEWPORT_GFX If you have an SGI machine and you want to compile the graphics drivers, say Y here. This will include the code for the @@ -1835,7 +1839,7 @@ section 6.4 of the Linux Programmer's Guide, available from http://metalab.unc.edu/mdw/linux.html#guide . - Saying Y here enlarges your kernel by about 7 KB. Just say Y. + Saying Y here enlarges your kernel by about 18 KB. Just say Y. BSD Process Accounting CONFIG_BSD_PROCESS_ACCT @@ -1869,7 +1873,7 @@ ELF (Executable and Linkable Format) is a format for libraries and executables used across different architectures and operating systems. Saying Y here will enable your kernel to run ELF binaries - and enlarge it by about 2 KB. ELF support under Linux has now all + and enlarge it by about 13 KB. ELF support under Linux has now all but replaced the traditional Linux a.out formats (QMAGIC and ZMAGIC) because it is portable (this does *not* mean that you will be able to run executables from different architectures or operating systems @@ -1950,7 +1954,7 @@ you have use for it; the module is called binfmt_misc.o. If you don't know what to answer at this point, say Y. -Solaris binary emulation +Solaris binary emulation (EXPERIMENTAL) CONFIG_SOLARIS_EMUL This is experimental code which will enable you to run (many) Solaris binaries on your SPARC Linux machine. @@ -2108,7 +2112,7 @@ you have a Retina Z3 or plan to get one before you next recompile the kernel. -Cirrus Logic support (EXPERIMENTAL) +Cirrus Logic generic driver (EXPERIMENTAL) CONFIG_FB_CLGEN This enables support for Cirrus Logic GD542x/543x based boards on Amiga: SD64, Piccolo, Picasso II/II+, Picasso IV, or EGS Spectrum. @@ -2579,7 +2583,7 @@ CONFIG_INET These are the protocols used on the Internet and on most local Ethernets. It is highly recommended to say Y here (this will enlarge - your kernel by about 35 KB), since some programs (e.g. the X window + your kernel by about 144 KB), since some programs (e.g. the X window system) use TCP/IP even if your machine is not connected to any other computer. You will get the so-called loopback device which allows you to ping yourself (great fun, that!). @@ -2934,7 +2938,7 @@ Say Y unless you know what you are doing. -The IPv6 protocol +The IPv6 protocol (EXPERIMENTAL) CONFIG_IPV6 This is experimental support for the next version of the Internet Protocol: IP version 6 (also called IPng "IP next generation"). @@ -3006,7 +3010,7 @@ General information about how to connect Linux, Windows machines and Macs is on the WWW at http://www.eats.com/linux_mac_win.html . - The IPX driver would enlarge your kernel by about 5 kB. This driver + The IPX driver would enlarge your kernel by about 16 KB. This driver is also available as a module ( = code which can be inserted in and removed from the running kernel whenever you want). The module will be called ipx.o. If you want to compile it as a module, say M here @@ -4211,6 +4215,15 @@ does not work correctly without modification please contact the author by email at ipslinux@us.ibm.com. +IBM ServeRAID Support +CONFIG_SCSI_IPS + This is support for the IBM ServeRAID hardware RAID controllers. + Consult the SCSI-HOWTO, available via anonymous FTP from + ftp://metalab.unc.edu/pub/Linux/docs/HOWTO, and the file + README.ips in drivers/scsi for more information. If this driver + does not work correctly without modification please contact the + author by email at ipslinux@us.ibm.com. + BusLogic SCSI support CONFIG_SCSI_BUSLOGIC This is support for BusLogic MultiMaster and FlashPoint SCSI Host @@ -5970,6 +5983,18 @@ whenever you want). If you want to compile it as a module, say M here and read Documentation/modules.txt. +SBNI Leased Line Adapters +CONFIG_SBNI + This is a driver for ISA SBNI12-xx cards that is a low cost + alternative to leased line modems. Say Y if you want to insert + driver into kernel or say M to compile driver as a module. + + You can find more information and last versions of drivers and + utilities at http://www.granch.ru. If you have any question you + can mail to sbni@granch.ru. + + Say N if unsure. + WAN Drivers CONFIG_WAN_DRIVERS Say Y to this option if your Linux box contains a WAN card and you @@ -6203,6 +6228,18 @@ module, say M here and read Documentation/modules.txt as well as Documentation/networking/net-modules.txt. +PCI DM9102 support +CONFIG_DM9102 + This driver is for DM9102 compatible PCI cards from Davicom + (http://www.davicom.com.tw) + If you have a PCI DM9102 network (Ethernet) card, say Y. + + This driver is also available as a module ( = code which can be + inserted in and removed from the running kernel whenever you want). + The module will be called dmfe.o. If you want to compile it as a + module, say M here and read Documentation/modules.txt as well as + Documentation/networking/net-modules.txt. + Racal-Interlan (Micom) NI cards CONFIG_NET_VENDOR_RACAL If you have a network (Ethernet) card belonging to this class, such @@ -6398,7 +6435,7 @@ Documentation/networking/net-modules.txt. The module will be called 3c505.o. -3c507 support +3c507 support (EXPERIMENTAL) CONFIG_EL16 If you have a network (Ethernet) card of this type, say Y and read the Ethernet-HOWTO, available from @@ -7111,19 +7148,21 @@ Linux Token Ring Project site for the latest information at http://www.linuxtr.net -SysKonnect adapter support -CONFIG_SKTR - This is support for all SysKonnect Token Ring cards, specifically - SysKonnect TR4/16(+) ISA (SK-4190), SysKonnect TR4/16(+) PCI - (SK-4590), SysKonnect TR4/16 PCI (SK-4591) adapters. +Generic TMS380 Token Ring ISA/PCI adapter support +CONFIG_TMS380TR + This driver provides generic support for token ring adapters + based on the Texas Instruments TMS380 series chipsets. This + includes the SysKonnect TR4/16(+) ISA (SK-4190), SysKonnect + TR4/16(+) PCI (SK-4590), SysKonnect TR4/16 PCI (SK-4591), + Compaq 4/16 PCI, Thomas-Conrad TC4048 4/16 PCI, and Intel + TokenExpress 4/16 and PRO ISA adapters. If you have such an adapter and would like to use it, say Y or M and read the Token-Ring mini-HOWTO, available from http://metalab.unc.edu/mdw/linux.html#howto . Also read the file linux/Documentation/networking/sktr.txt or check - the Linux-SNA WWW site for the latest information at - http://www.linux-sna.org . + http://www.auk.cx/tms380tr/ Traffic Shaper (EXPERIMENTAL) CONFIG_SHAPER @@ -7795,7 +7834,7 @@ listen to audio CDs and watch its LEDs, say Y (and read Documentation/filesystems/isofs.txt and the CDROM-HOWTO, available from http://metalab.unc.edu/mdw/linux.html#howto ), thereby - enlarging your kernel by about 27 kB; otherwise say N. + enlarging your kernel by about 27 KB; otherwise say N. If you want to compile this as a module ( = code which can be inserted in and removed from the running kernel whenever you want), @@ -7854,7 +7893,7 @@ It is now also becoming possible to read and write compressed FAT filesystems; read Documentation/filesystems/fat_cvf.txt for details. - The FAT support will enlarge your kernel by about 24 kB. If unsure, + The FAT support will enlarge your kernel by about 37 KB. If unsure, say Y. If you want to compile this as a module however ( = code which can @@ -7889,7 +7928,7 @@ support" below), or you will not be able to see the long filenames generated by Windows 95 / Windows NT. - This option will enlarge your kernel by about 7 kB. If unsure, + This option will enlarge your kernel by about 7 KB. If unsure, answer Y. This will only work if you said Y to "fat fs support" as well. If you want to compile this as a module however ( = code which can be inserted in and removed from the running kernel whenever you @@ -7907,7 +7946,7 @@ want to run Linux from within a DOS partition (i.e. say Y to "umsdos: Unix like fs on top of std MSDOS fs", below). - The VFAT support enlarges your kernel by about 10 kB and it only + The VFAT support enlarges your kernel by about 10 KB and it only works if you said Y to the "fat fs support" above. Please read the file Documentation/filesystems/vfat.txt for details. If unsure, say Y. @@ -7931,7 +7970,7 @@ MSDOS floppies. You will need a program called umssync in order to make use of umsdos; read Documentation/filesystems/umsdos.txt. - This option enlarges your kernel by about 25 kB and it only works if + This option enlarges your kernel by about 28 KB and it only works if you said Y to both "fat fs support" and "msdos fs support" above. If you want to compile this as a module ( = code which can be inserted in and removed from the running kernel whenever you want), say M @@ -7980,7 +8019,7 @@ the Coda filesystem; see "Coda filesystem support" below. If you say Y here, you should have said Y to TCP/IP networking also. - This option would enlarge your kernel by about 27 kB. + This option would enlarge your kernel by about 27 KB. This filesystem is also available as a module ( = code which can be inserted in and removed from the running kernel whenever you want). @@ -12581,8 +12620,7 @@ Saying Y to this adds support for /dev/parport device nodes. This is needed for programs that want portable access to the parallel port, for instance deviceid (which displays Plug-and-Play device - IDs) and vlp (which makes a Linux computer act as though it's a - printer). + IDs). This is the parallel port equivalent of SCSI generic support (sg). It is safe to say N to this -- it is not needed for normal printing diff -u --recursive --new-file v2.3.21/linux/Documentation/SMP.txt linux/Documentation/SMP.txt --- v2.3.21/linux/Documentation/SMP.txt Thu Jul 1 10:45:57 1999 +++ linux/Documentation/SMP.txt Wed Dec 31 16:00:00 1969 @@ -1,20 +0,0 @@ -SMP on x86/Linux is now an official feature and is not experimental. -Experimental SMP support for other architectures is underway. - -Please view linux/Documentation/smp.txt for more information about enabling SMP. - -SMP support for Linux with up to 16 processors using the Intel MP -specification. - -To fix: - -o Clean up processor specific/independent split. -o Document it all. [PARTLY DONE] -o Halting other CPUs on reset or panic doesn't always work. -o Don't waste page at 4 K--don't need it now (watch the GDT code). -o Dump bootup pages once booted somehow. -o Clean up warnings/volatiles. -o 486 startup code. -o How to handle mixed FPU/non FPU processors. -o Test IO-APIC on various hardware. -o Separate IO-APIC from SMP. diff -u --recursive --new-file v2.3.21/linux/Documentation/filesystems/proc.txt linux/Documentation/filesystems/proc.txt --- v2.3.21/linux/Documentation/filesystems/proc.txt Mon Oct 4 15:49:29 1999 +++ linux/Documentation/filesystems/proc.txt Thu Oct 14 14:22:08 1999 @@ -1,1379 +1,1714 @@ +------------------------------------------------------------------------------ + 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 +----------------------------------- - 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. +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::