About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / filesystems / proc.txt

Based on kernel version 2.6.25. Page generated on 2008-04-18 21:22 EST.

1	------------------------------------------------------------------------------
2	                       T H E  /proc   F I L E S Y S T E M
3	------------------------------------------------------------------------------
4	/proc/sys         Terrehon Bowden <terrehon[AT]pacbell[DOT]net>        October 7 1999
5	                  Bodo Bauer <bb[AT]ricochet[DOT]net>
6	
7	2.4.x update	  Jorge Nerin <comandante[AT]zaralinux[DOT]com>      November 14 2000
8	------------------------------------------------------------------------------
9	Version 1.3                                              Kernel version 2.2.12
10						      Kernel version 2.4.0-test11-pre4
11	------------------------------------------------------------------------------
12	
13	Table of Contents
14	-----------------
15	
16	  0     Preface
17	  0.1	Introduction/Credits
18	  0.2	Legal Stuff
19	
20	  1	Collecting System Information
21	  1.1	Process-Specific Subdirectories
22	  1.2	Kernel data
23	  1.3	IDE devices in /proc/ide
24	  1.4	Networking info in /proc/net
25	  1.5	SCSI info
26	  1.6	Parallel port info in /proc/parport
27	  1.7	TTY info in /proc/tty
28	  1.8	Miscellaneous kernel statistics in /proc/stat
29	
30	  2	Modifying System Parameters
31	  2.1	/proc/sys/fs - File system data
32	  2.2	/proc/sys/fs/binfmt_misc - Miscellaneous binary formats
33	  2.3	/proc/sys/kernel - general kernel parameters
34	  2.4	/proc/sys/vm - The virtual memory subsystem
35	  2.5	/proc/sys/dev - Device specific parameters
36	  2.6	/proc/sys/sunrpc - Remote procedure calls
37	  2.7	/proc/sys/net - Networking stuff
38	  2.8	/proc/sys/net/ipv4 - IPV4 settings
39	  2.9	Appletalk
40	  2.10	IPX
41	  2.11	/proc/sys/fs/mqueue - POSIX message queues filesystem
42	  2.12	/proc/<pid>/oom_adj - Adjust the oom-killer score
43	  2.13	/proc/<pid>/oom_score - Display current oom-killer score
44	  2.14	/proc/<pid>/io - Display the IO accounting fields
45	  2.15	/proc/<pid>/coredump_filter - Core dump filtering settings
46	
47	------------------------------------------------------------------------------
48	Preface
49	------------------------------------------------------------------------------
50	
51	0.1 Introduction/Credits
52	------------------------
53	
54	This documentation is  part of a soon (or  so we hope) to be  released book on
55	the SuSE  Linux distribution. As  there is  no complete documentation  for the
56	/proc file system and we've used  many freely available sources to write these
57	chapters, it  seems only fair  to give the work  back to the  Linux community.
58	This work is  based on the 2.2.*  kernel version and the  upcoming 2.4.*. I'm
59	afraid it's still far from complete, but we  hope it will be useful. As far as
60	we know, it is the first 'all-in-one' document about the /proc file system. It
61	is focused  on the Intel  x86 hardware,  so if you  are looking for  PPC, ARM,
62	SPARC, AXP, etc., features, you probably  won't find what you are looking for.
63	It also only covers IPv4 networking, not IPv6 nor other protocols - sorry. But
64	additions and patches  are welcome and will  be added to this  document if you
65	mail them to Bodo.
66	
67	We'd like  to  thank Alan Cox, Rik van Riel, and Alexey Kuznetsov and a lot of
68	other people for help compiling this documentation. We'd also like to extend a
69	special thank  you to Andi Kleen for documentation, which we relied on heavily
70	to create  this  document,  as well as the additional information he provided.
71	Thanks to  everybody  else  who contributed source or docs to the Linux kernel
72	and helped create a great piece of software... :)
73	
74	If you  have  any comments, corrections or additions, please don't hesitate to
75	contact Bodo  Bauer  at  bb[AT]ricochet.net[DOT]  We'll  be happy to add them to this
76	document.
77	
78	The   latest   version    of   this   document   is    available   online   at
79	http://skaro.nightcrawler.com/~bb/Docs/Proc as HTML version.
80	
81	If  the above  direction does  not works  for you,  ypu could  try the  kernel
82	mailing  list  at  linux-kernel[AT]vger.kernel[DOT]org  and/or try  to  reach  me  at
83	comandante[AT]zaralinux.com[DOT]
84	
85	0.2 Legal Stuff
86	---------------
87	
88	We don't  guarantee  the  correctness  of this document, and if you come to us
89	complaining about  how  you  screwed  up  your  system  because  of  incorrect
90	documentation, we won't feel responsible...
91	
92	------------------------------------------------------------------------------
93	CHAPTER 1: COLLECTING SYSTEM INFORMATION
94	------------------------------------------------------------------------------
95	
96	------------------------------------------------------------------------------
97	In This Chapter
98	------------------------------------------------------------------------------
99	* Investigating  the  properties  of  the  pseudo  file  system  /proc and its
100	  ability to provide information on the running Linux system
101	* Examining /proc's structure
102	* Uncovering  various  information  about the kernel and the processes running
103	  on the system
104	------------------------------------------------------------------------------
105	
106	
107	The proc  file  system acts as an interface to internal data structures in the
108	kernel. It  can  be  used to obtain information about the system and to change
109	certain kernel parameters at runtime (sysctl).
110	
111	First, we'll  take  a  look  at the read-only parts of /proc. In Chapter 2, we
112	show you how you can use /proc/sys to change settings.
113	
114	1.1 Process-Specific Subdirectories
115	-----------------------------------
116	
117	The directory  /proc  contains  (among other things) one subdirectory for each
118	process running on the system, which is named after the process ID (PID).
119	
120	The link  self  points  to  the  process reading the file system. Each process
121	subdirectory has the entries listed in Table 1-1.
122	
123	
124	Table 1-1: Process specific entries in /proc 
125	..............................................................................
126	 File		Content
127	 clear_refs	Clears page referenced bits shown in smaps output
128	 cmdline	Command line arguments
129	 cpu		Current and last cpu in which it was executed	(2.4)(smp)
130	 cwd		Link to the current working directory
131	 environ	Values of environment variables
132	 exe		Link to the executable of this process
133	 fd		Directory, which contains all file descriptors
134	 maps		Memory maps to executables and library files	(2.4)
135	 mem		Memory held by this process
136	 root		Link to the root directory of this process
137	 stat		Process status
138	 statm		Process memory status information
139	 status		Process status in human readable form
140	 wchan		If CONFIG_KALLSYMS is set, a pre-decoded wchan
141	 smaps		Extension based on maps, the rss size for each mapped file
142	..............................................................................
143	
144	For example, to get the status information of a process, all you have to do is
145	read the file /proc/PID/status:
146	
147	  >cat /proc/self/status 
148	  Name:   cat 
149	  State:  R (running) 
150	  Pid:    5452 
151	  PPid:   743 
152	  TracerPid:      0						(2.4)
153	  Uid:    501     501     501     501 
154	  Gid:    100     100     100     100 
155	  Groups: 100 14 16 
156	  VmSize:     1112 kB 
157	  VmLck:         0 kB 
158	  VmRSS:       348 kB 
159	  VmData:       24 kB 
160	  VmStk:        12 kB 
161	  VmExe:         8 kB 
162	  VmLib:      1044 kB 
163	  SigPnd: 0000000000000000 
164	  SigBlk: 0000000000000000 
165	  SigIgn: 0000000000000000 
166	  SigCgt: 0000000000000000 
167	  CapInh: 00000000fffffeff 
168	  CapPrm: 0000000000000000 
169	  CapEff: 0000000000000000 
170	
171	
172	This shows you nearly the same information you would get if you viewed it with
173	the ps  command.  In  fact,  ps  uses  the  proc  file  system  to  obtain its
174	information. The  statm  file  contains  more  detailed  information about the
175	process memory usage. Its seven fields are explained in Table 1-2.  The stat
176	file contains details information about the process itself.  Its fields are
177	explained in Table 1-3.
178	
179	
180	Table 1-2: Contents of the statm files (as of 2.6.8-rc3)
181	..............................................................................
182	 Field    Content
183	 size     total program size (pages)		(same as VmSize in status)
184	 resident size of memory portions (pages)	(same as VmRSS in status)
185	 shared   number of pages that are shared	(i.e. backed by a file)
186	 trs      number of pages that are 'code'	(not including libs; broken,
187								includes data segment)
188	 lrs      number of pages of library		(always 0 on 2.6)
189	 drs      number of pages of data/stack		(including libs; broken,
190								includes library text)
191	 dt       number of dirty pages			(always 0 on 2.6)
192	..............................................................................
193	
194	
195	Table 1-3: Contents of the stat files (as of 2.6.22-rc3)
196	..............................................................................
197	 Field          Content
198	  pid           process id
199	  tcomm         filename of the executable
200	  state         state (R is running, S is sleeping, D is sleeping in an
201	                uninterruptible wait, Z is zombie, T is traced or stopped)
202	  ppid          process id of the parent process
203	  pgrp          pgrp of the process
204	  sid           session id
205	  tty_nr        tty the process uses
206	  tty_pgrp      pgrp of the tty
207	  flags         task flags
208	  min_flt       number of minor faults
209	  cmin_flt      number of minor faults with child's
210	  maj_flt       number of major faults
211	  cmaj_flt      number of major faults with child's
212	  utime         user mode jiffies
213	  stime         kernel mode jiffies
214	  cutime        user mode jiffies with child's
215	  cstime        kernel mode jiffies with child's
216	  priority      priority level
217	  nice          nice level
218	  num_threads   number of threads
219	  it_real_value	(obsolete, always 0)
220	  start_time    time the process started after system boot
221	  vsize         virtual memory size
222	  rss           resident set memory size
223	  rsslim        current limit in bytes on the rss
224	  start_code    address above which program text can run
225	  end_code      address below which program text can run
226	  start_stack   address of the start of the stack
227	  esp           current value of ESP
228	  eip           current value of EIP
229	  pending       bitmap of pending signals (obsolete)
230	  blocked       bitmap of blocked signals (obsolete)
231	  sigign        bitmap of ignored signals (obsolete)
232	  sigcatch      bitmap of catched signals (obsolete)
233	  wchan         address where process went to sleep
234	  0             (place holder)
235	  0             (place holder)
236	  exit_signal   signal to send to parent thread on exit
237	  task_cpu      which CPU the task is scheduled on
238	  rt_priority   realtime priority
239	  policy        scheduling policy (man sched_setscheduler)
240	  blkio_ticks   time spent waiting for block IO
241	..............................................................................
242	
243	
244	1.2 Kernel data
245	---------------
246	
247	Similar to  the  process entries, the kernel data files give information about
248	the running kernel. The files used to obtain this information are contained in
249	/proc and  are  listed  in Table 1-4. Not all of these will be present in your
250	system. It  depends  on the kernel configuration and the loaded modules, which
251	files are there, and which are missing.
252	
253	Table 1-4: Kernel info in /proc
254	..............................................................................
255	 File        Content                                           
256	 apm         Advanced power management info                    
257	 buddyinfo   Kernel memory allocator information (see text)	(2.5)
258	 bus         Directory containing bus specific information     
259	 cmdline     Kernel command line                               
260	 cpuinfo     Info about the CPU                                
261	 devices     Available devices (block and character)           
262	 dma         Used DMS channels                                 
263	 filesystems Supported filesystems                             
264	 driver	     Various drivers grouped here, currently rtc (2.4)
265	 execdomains Execdomains, related to security			(2.4)
266	 fb	     Frame Buffer devices				(2.4)
267	 fs	     File system parameters, currently nfs/exports	(2.4)
268	 ide         Directory containing info about the IDE subsystem 
269	 interrupts  Interrupt usage                                   
270	 iomem	     Memory map						(2.4)
271	 ioports     I/O port usage                                    
272	 irq	     Masks for irq to cpu affinity			(2.4)(smp?)
273	 isapnp	     ISA PnP (Plug&Play) Info				(2.4)
274	 kcore       Kernel core image (can be ELF or A.OUT(deprecated in 2.4))   
275	 kmsg        Kernel messages                                   
276	 ksyms       Kernel symbol table                               
277	 loadavg     Load average of last 1, 5 & 15 minutes                
278	 locks       Kernel locks                                      
279	 meminfo     Memory info                                       
280	 misc        Miscellaneous                                     
281	 modules     List of loaded modules                            
282	 mounts      Mounted filesystems                               
283	 net         Networking info (see text)                        
284	 partitions  Table of partitions known to the system           
285	 pci	     Deprecated info of PCI bus (new way -> /proc/bus/pci/,
286	             decoupled by lspci					(2.4)
287	 rtc         Real time clock                                   
288	 scsi        SCSI info (see text)                              
289	 slabinfo    Slab pool info                                    
290	 stat        Overall statistics                                
291	 swaps       Swap space utilization                            
292	 sys         See chapter 2                                     
293	 sysvipc     Info of SysVIPC Resources (msg, sem, shm)		(2.4)
294	 tty	     Info of tty drivers
295	 uptime      System uptime                                     
296	 version     Kernel version                                    
297	 video	     bttv info of video resources			(2.4)
298	..............................................................................
299	
300	You can,  for  example,  check  which interrupts are currently in use and what
301	they are used for by looking in the file /proc/interrupts:
302	
303	  > cat /proc/interrupts 
304	             CPU0        
305	    0:    8728810          XT-PIC  timer 
306	    1:        895          XT-PIC  keyboard 
307	    2:          0          XT-PIC  cascade 
308	    3:     531695          XT-PIC  aha152x 
309	    4:    2014133          XT-PIC  serial 
310	    5:      44401          XT-PIC  pcnet_cs 
311	    8:          2          XT-PIC  rtc 
312	   11:          8          XT-PIC  i82365 
313	   12:     182918          XT-PIC  PS/2 Mouse 
314	   13:          1          XT-PIC  fpu 
315	   14:    1232265          XT-PIC  ide0 
316	   15:          7          XT-PIC  ide1 
317	  NMI:          0 
318	
319	In 2.4.* a couple of lines where added to this file LOC & ERR (this time is the
320	output of a SMP machine):
321	
322	  > cat /proc/interrupts 
323	
324	             CPU0       CPU1       
325	    0:    1243498    1214548    IO-APIC-edge  timer
326	    1:       8949       8958    IO-APIC-edge  keyboard
327	    2:          0          0          XT-PIC  cascade
328	    5:      11286      10161    IO-APIC-edge  soundblaster
329	    8:          1          0    IO-APIC-edge  rtc
330	    9:      27422      27407    IO-APIC-edge  3c503
331	   12:     113645     113873    IO-APIC-edge  PS/2 Mouse
332	   13:          0          0          XT-PIC  fpu
333	   14:      22491      24012    IO-APIC-edge  ide0
334	   15:       2183       2415    IO-APIC-edge  ide1
335	   17:      30564      30414   IO-APIC-level  eth0
336	   18:        177        164   IO-APIC-level  bttv
337	  NMI:    2457961    2457959 
338	  LOC:    2457882    2457881 
339	  ERR:       2155
340	
341	NMI is incremented in this case because every timer interrupt generates a NMI
342	(Non Maskable Interrupt) which is used by the NMI Watchdog to detect lockups.
343	
344	LOC is the local interrupt counter of the internal APIC of every CPU.
345	
346	ERR is incremented in the case of errors in the IO-APIC bus (the bus that
347	connects the CPUs in a SMP system. This means that an error has been detected,
348	the IO-APIC automatically retry the transmission, so it should not be a big
349	problem, but you should read the SMP-FAQ.
350	
351	In 2.6.2* /proc/interrupts was expanded again.  This time the goal was for
352	/proc/interrupts to display every IRQ vector in use by the system, not
353	just those considered 'most important'.  The new vectors are:
354	
355	  THR -- interrupt raised when a machine check threshold counter
356	  (typically counting ECC corrected errors of memory or cache) exceeds
357	  a configurable threshold.  Only available on some systems.
358	
359	  TRM -- a thermal event interrupt occurs when a temperature threshold
360	  has been exceeded for the CPU.  This interrupt may also be generated
361	  when the temperature drops back to normal.
362	
363	  SPU -- a spurious interrupt is some interrupt that was raised then lowered
364	  by some IO device before it could be fully processed by the APIC.  Hence
365	  the APIC sees the interrupt but does not know what device it came from.
366	  For this case the APIC will generate the interrupt with a IRQ vector
367	  of 0xff. This might also be generated by chipset bugs.
368	
369	  RES, CAL, TLB -- rescheduling, call and TLB flush interrupts are
370	  sent from one CPU to another per the needs of the OS.  Typically,
371	  their statistics are used by kernel developers and interested users to
372	  determine the occurance of interrupt of the given type.
373	
374	The above IRQ vectors are displayed only when relevent.  For example,
375	the threshold vector does not exist on x86_64 platforms.  Others are
376	suppressed when the system is a uniprocessor.  As of this writing, only
377	i386 and x86_64 platforms support the new IRQ vector displays.
378	
379	Of some interest is the introduction of the /proc/irq directory to 2.4.
380	It could be used to set IRQ to CPU affinity, this means that you can "hook" an
381	IRQ to only one CPU, or to exclude a CPU of handling IRQs. The contents of the
382	irq subdir is one subdir for each IRQ, and one file; prof_cpu_mask
383	
384	For example 
385	  > ls /proc/irq/
386	  0  10  12  14  16  18  2  4  6  8  prof_cpu_mask
387	  1  11  13  15  17  19  3  5  7  9
388	  > ls /proc/irq/0/
389	  smp_affinity
390	
391	The contents of the prof_cpu_mask file and each smp_affinity file for each IRQ
392	is the same by default:
393	
394	  > cat /proc/irq/0/smp_affinity 
395	  ffffffff
396	
397	It's a bitmask, in which you can specify which CPUs can handle the IRQ, you can
398	set it by doing:
399	
400	  > echo 1 > /proc/irq/prof_cpu_mask
401	
402	This means that only the first CPU will handle the IRQ, but you can also echo 5
403	which means that only the first and fourth CPU can handle the IRQ.
404	
405	The way IRQs are routed is handled by the IO-APIC, and it's Round Robin
406	between all the CPUs which are allowed to handle it. As usual the kernel has
407	more info than you and does a better job than you, so the defaults are the
408	best choice for almost everyone.
409	
410	There are  three  more  important subdirectories in /proc: net, scsi, and sys.
411	The general  rule  is  that  the  contents,  or  even  the  existence of these
412	directories, depend  on your kernel configuration. If SCSI is not enabled, the
413	directory scsi  may  not  exist. The same is true with the net, which is there
414	only when networking support is present in the running kernel.
415	
416	The slabinfo  file  gives  information  about  memory usage at the slab level.
417	Linux uses  slab  pools for memory management above page level in version 2.2.
418	Commonly used  objects  have  their  own  slab  pool (such as network buffers,
419	directory cache, and so on).
420	
421	..............................................................................
422	
423	> cat /proc/buddyinfo
424	
425	Node 0, zone      DMA      0      4      5      4      4      3 ...
426	Node 0, zone   Normal      1      0      0      1    101      8 ...
427	Node 0, zone  HighMem      2      0      0      1      1      0 ...
428	
429	Memory fragmentation is a problem under some workloads, and buddyinfo is a 
430	useful tool for helping diagnose these problems.  Buddyinfo will give you a 
431	clue as to how big an area you can safely allocate, or why a previous
432	allocation failed.
433	
434	Each column represents the number of pages of a certain order which are 
435	available.  In this case, there are 0 chunks of 2^0*PAGE_SIZE available in 
436	ZONE_DMA, 4 chunks of 2^1*PAGE_SIZE in ZONE_DMA, 101 chunks of 2^4*PAGE_SIZE 
437	available in ZONE_NORMAL, etc... 
438	
439	..............................................................................
440	
441	meminfo:
442	
443	Provides information about distribution and utilization of memory.  This
444	varies by architecture and compile options.  The following is from a
445	16GB PIII, which has highmem enabled.  You may not have all of these fields.
446	
447	> cat /proc/meminfo
448	
449	
450	MemTotal:     16344972 kB
451	MemFree:      13634064 kB
452	Buffers:          3656 kB
453	Cached:        1195708 kB
454	SwapCached:          0 kB
455	Active:         891636 kB
456	Inactive:      1077224 kB
457	HighTotal:    15597528 kB
458	HighFree:     13629632 kB
459	LowTotal:       747444 kB
460	LowFree:          4432 kB
461	SwapTotal:           0 kB
462	SwapFree:            0 kB
463	Dirty:             968 kB
464	Writeback:           0 kB
465	Mapped:         280372 kB
466	Slab:           684068 kB
467	CommitLimit:   7669796 kB
468	Committed_AS:   100056 kB
469	PageTables:      24448 kB
470	VmallocTotal:   112216 kB
471	VmallocUsed:       428 kB
472	VmallocChunk:   111088 kB
473	
474	    MemTotal: Total usable ram (i.e. physical ram minus a few reserved
475	              bits and the kernel binary code)
476	     MemFree: The sum of LowFree+HighFree
477	     Buffers: Relatively temporary storage for raw disk blocks
478	              shouldn't get tremendously large (20MB or so)
479	      Cached: in-memory cache for files read from the disk (the
480	              pagecache).  Doesn't include SwapCached
481	  SwapCached: Memory that once was swapped out, is swapped back in but
482	              still also is in the swapfile (if memory is needed it
483	              doesn't need to be swapped out AGAIN because it is already
484	              in the swapfile. This saves I/O)
485	      Active: Memory that has been used more recently and usually not
486	              reclaimed unless absolutely necessary.
487	    Inactive: Memory which has been less recently used.  It is more
488	              eligible to be reclaimed for other purposes
489	   HighTotal:
490	    HighFree: Highmem is all memory above ~860MB of physical memory
491	              Highmem areas are for use by userspace programs, or
492	              for the pagecache.  The kernel must use tricks to access
493	              this memory, making it slower to access than lowmem.
494	    LowTotal:
495	     LowFree: Lowmem is memory which can be used for everything that
496	              highmem can be used for, but it is also available for the
497	              kernel's use for its own data structures.  Among many
498	              other things, it is where everything from the Slab is
499	              allocated.  Bad things happen when you're out of lowmem.
500	   SwapTotal: total amount of swap space available
501	    SwapFree: Memory which has been evicted from RAM, and is temporarily
502	              on the disk
503	       Dirty: Memory which is waiting to get written back to the disk
504	   Writeback: Memory which is actively being written back to the disk
505	      Mapped: files which have been mmaped, such as libraries
506	        Slab: in-kernel data structures cache
507	 CommitLimit: Based on the overcommit ratio ('vm.overcommit_ratio'),
508	              this is the total amount of  memory currently available to
509	              be allocated on the system. This limit is only adhered to
510	              if strict overcommit accounting is enabled (mode 2 in
511	              'vm.overcommit_memory').
512	              The CommitLimit is calculated with the following formula:
513	              CommitLimit = ('vm.overcommit_ratio' * Physical RAM) + Swap
514	              For example, on a system with 1G of physical RAM and 7G
515	              of swap with a `vm.overcommit_ratio` of 30 it would
516	              yield a CommitLimit of 7.3G.
517	              For more details, see the memory overcommit documentation
518	              in vm/overcommit-accounting.
519	Committed_AS: The amount of memory presently allocated on the system.
520	              The committed memory is a sum of all of the memory which
521	              has been allocated by processes, even if it has not been
522	              "used" by them as of yet. A process which malloc()'s 1G
523	              of memory, but only touches 300M of it will only show up
524	              as using 300M of memory even if it has the address space
525	              allocated for the entire 1G. This 1G is memory which has
526	              been "committed" to by the VM and can be used at any time
527	              by the allocating application. With strict overcommit
528	              enabled on the system (mode 2 in 'vm.overcommit_memory'),
529	              allocations which would exceed the CommitLimit (detailed
530	              above) will not be permitted. This is useful if one needs
531	              to guarantee that processes will not fail due to lack of
532	              memory once that memory has been successfully allocated.
533	  PageTables: amount of memory dedicated to the lowest level of page
534	              tables.
535	VmallocTotal: total size of vmalloc memory area
536	 VmallocUsed: amount of vmalloc area which is used
537	VmallocChunk: largest contigious block of vmalloc area which is free
538	
539	
540	1.3 IDE devices in /proc/ide
541	----------------------------
542	
543	The subdirectory /proc/ide contains information about all IDE devices of which
544	the kernel  is  aware.  There is one subdirectory for each IDE controller, the
545	file drivers  and a link for each IDE device, pointing to the device directory
546	in the controller specific subtree.
547	
548	The file  drivers  contains general information about the drivers used for the
549	IDE devices:
550	
551	  > cat /proc/ide/drivers
552	  ide-cdrom version 4.53
553	  ide-disk version 1.08
554	
555	More detailed  information  can  be  found  in  the  controller  specific
556	subdirectories. These  are  named  ide0,  ide1  and  so  on.  Each  of  these
557	directories contains the files shown in table 1-5.
558	
559	
560	Table 1-5: IDE controller info in  /proc/ide/ide?
561	..............................................................................
562	 File    Content                                 
563	 channel IDE channel (0 or 1)                    
564	 config  Configuration (only for PCI/IDE bridge) 
565	 mate    Mate name                               
566	 model   Type/Chipset of IDE controller          
567	..............................................................................
568	
569	Each device  connected  to  a  controller  has  a separate subdirectory in the
570	controllers directory.  The  files  listed in table 1-6 are contained in these
571	directories.
572	
573	
574	Table 1-6: IDE device information
575	..............................................................................
576	 File             Content                                    
577	 cache            The cache                                  
578	 capacity         Capacity of the medium (in 512Byte blocks) 
579	 driver           driver and version                         
580	 geometry         physical and logical geometry              
581	 identify         device identify block                      
582	 media            media type                                 
583	 model            device identifier                          
584	 settings         device setup                               
585	 smart_thresholds IDE disk management thresholds             
586	 smart_values     IDE disk management values                 
587	..............................................................................
588	
589	The most  interesting  file is settings. This file contains a nice overview of
590	the drive parameters:
591	
592	  # cat /proc/ide/ide0/hda/settings 
593	  name                    value           min             max             mode 
594	  ----                    -----           ---             ---             ---- 
595	  bios_cyl                526             0               65535           rw 
596	  bios_head               255             0               255             rw 
597	  bios_sect               63              0               63              rw 
598	  breada_readahead        4               0               127             rw 
599	  bswap                   0               0               1               r 
600	  file_readahead          72              0               2097151         rw 
601	  io_32bit                0               0               3               rw 
602	  keepsettings            0               0               1               rw 
603	  max_kb_per_request      122             1               127             rw 
604	  multcount               0               0               8               rw 
605	  nice1                   1               0               1               rw 
606	  nowerr                  0               0               1               rw 
607	  pio_mode                write-only      0               255             w 
608	  slow                    0               0               1               rw 
609	  unmaskirq               0               0               1               rw 
610	  using_dma               0               0               1               rw 
611	
612	
613	1.4 Networking info in /proc/net
614	--------------------------------
615	
616	The subdirectory  /proc/net  follows  the  usual  pattern. Table 1-6 shows the
617	additional values  you  get  for  IP  version 6 if you configure the kernel to
618	support this. Table 1-7 lists the files and their meaning.
619	
620	
621	Table 1-6: IPv6 info in /proc/net 
622	..............................................................................
623	 File       Content                                               
624	 udp6       UDP sockets (IPv6)                                    
625	 tcp6       TCP sockets (IPv6)                                    
626	 raw6       Raw device statistics (IPv6)                          
627	 igmp6      IP multicast addresses, which this host joined (IPv6) 
628	 if_inet6   List of IPv6 interface addresses                      
629	 ipv6_route Kernel routing table for IPv6                         
630	 rt6_stats  Global IPv6 routing tables statistics                 
631	 sockstat6  Socket statistics (IPv6)                              
632	 snmp6      Snmp data (IPv6)                                      
633	..............................................................................
634	
635	
636	Table 1-7: Network info in /proc/net 
637	..............................................................................
638	 File          Content                                                         
639	 arp           Kernel  ARP table                                               
640	 dev           network devices with statistics                                 
641	 dev_mcast     the Layer2 multicast groups a device is listening too
642	               (interface index, label, number of references, number of bound
643	               addresses). 
644	 dev_stat      network device status                                           
645	 ip_fwchains   Firewall chain linkage                                          
646	 ip_fwnames    Firewall chain names                                            
647	 ip_masq       Directory containing the masquerading tables                    
648	 ip_masquerade Major masquerading table                                        
649	 netstat       Network statistics                                              
650	 raw           raw device statistics                                           
651	 route         Kernel routing table                                            
652	 rpc           Directory containing rpc info                                   
653	 rt_cache      Routing cache                                                   
654	 snmp          SNMP data                                                       
655	 sockstat      Socket statistics                                               
656	 tcp           TCP  sockets                                                    
657	 tr_rif        Token ring RIF routing table                                    
658	 udp           UDP sockets                                                     
659	 unix          UNIX domain sockets                                             
660	 wireless      Wireless interface data (Wavelan etc)                           
661	 igmp          IP multicast addresses, which this host joined                  
662	 psched        Global packet scheduler parameters.                             
663	 netlink       List of PF_NETLINK sockets                                      
664	 ip_mr_vifs    List of multicast virtual interfaces                            
665	 ip_mr_cache   List of multicast routing cache                                 
666	..............................................................................
667	
668	You can  use  this  information  to see which network devices are available in
669	your system and how much traffic was routed over those devices:
670	
671	  > cat /proc/net/dev 
672	  Inter-|Receive                                                   |[... 
673	   face |bytes    packets errs drop fifo frame compressed multicast|[... 
674	      lo:  908188   5596     0    0    0     0          0         0 [...         
675	    ppp0:15475140  20721   410    0    0   410          0         0 [...  
676	    eth0:  614530   7085     0    0    0     0          0         1 [... 
677	   
678	  ...] Transmit 
679	  ...] bytes    packets errs drop fifo colls carrier compressed 
680	  ...]  908188     5596    0    0    0     0       0          0 
681	  ...] 1375103    17405    0    0    0     0       0          0 
682	  ...] 1703981     5535    0    0    0     3       0          0 
683	
684	In addition, each Channel Bond interface has it's own directory.  For
685	example, the bond0 device will have a directory called /proc/net/bond0/.
686	It will contain information that is specific to that bond, such as the
687	current slaves of the bond, the link status of the slaves, and how
688	many times the slaves link has failed.
689	
690	1.5 SCSI info
691	-------------
692	
693	If you  have  a  SCSI  host adapter in your system, you'll find a subdirectory
694	named after  the driver for this adapter in /proc/scsi. You'll also see a list
695	of all recognized SCSI devices in /proc/scsi:
696	
697	  >cat /proc/scsi/scsi 
698	  Attached devices: 
699	  Host: scsi0 Channel: 00 Id: 00 Lun: 00 
700	    Vendor: IBM      Model: DGHS09U          Rev: 03E0 
701	    Type:   Direct-Access                    ANSI SCSI revision: 03 
702	  Host: scsi0 Channel: 00 Id: 06 Lun: 00 
703	    Vendor: PIONEER  Model: CD-ROM DR-U06S   Rev: 1.04 
704	    Type:   CD-ROM                           ANSI SCSI revision: 02 
705	
706	
707	The directory  named  after  the driver has one file for each adapter found in
708	the system.  These  files  contain information about the controller, including
709	the used  IRQ  and  the  IO  address range. The amount of information shown is
710	dependent on  the adapter you use. The example shows the output for an Adaptec
711	AHA-2940 SCSI adapter:
712	
713	  > cat /proc/scsi/aic7xxx/0 
714	   
715	  Adaptec AIC7xxx driver version: 5.1.19/3.2.4 
716	  Compile Options: 
717	    TCQ Enabled By Default : Disabled 
718	    AIC7XXX_PROC_STATS     : Disabled 
719	    AIC7XXX_RESET_DELAY    : 5 
720	  Adapter Configuration: 
721	             SCSI Adapter: Adaptec AHA-294X Ultra SCSI host adapter 
722	                             Ultra Wide Controller 
723	      PCI MMAPed I/O Base: 0xeb001000 
724	   Adapter SEEPROM Config: SEEPROM found and used. 
725	        Adaptec SCSI BIOS: Enabled 
726	                      IRQ: 10 
727	                     SCBs: Active 0, Max Active 2, 
728	                           Allocated 15, HW 16, Page 255 
729	               Interrupts: 160328 
730	        BIOS Control Word: 0x18b6 
731	     Adapter Control Word: 0x005b 
732	     Extended Translation: Enabled 
733	  Disconnect Enable Flags: 0xffff 
734	       Ultra Enable Flags: 0x0001 
735	   Tag Queue Enable Flags: 0x0000 
736	  Ordered Queue Tag Flags: 0x0000 
737	  Default Tag Queue Depth: 8 
738	      Tagged Queue By Device array for aic7xxx host instance 0: 
739	        {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255} 
740	      Actual queue depth per device for aic7xxx host instance 0: 
741	        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} 
742	  Statistics: 
743	  (scsi0:0:0:0) 
744	    Device using Wide/Sync transfers at 40.0 MByte/sec, offset 8 
745	    Transinfo settings: current(12/8/1/0), goal(12/8/1/0), user(12/15/1/0) 
746	    Total transfers 160151 (74577 reads and 85574 writes) 
747	  (scsi0:0:6:0) 
748	    Device using Narrow/Sync transfers at 5.0 MByte/sec, offset 15 
749	    Transinfo settings: current(50/15/0/0), goal(50/15/0/0), user(50/15/0/0) 
750	    Total transfers 0 (0 reads and 0 writes) 
751	
752	
753	1.6 Parallel port info in /proc/parport
754	---------------------------------------
755	
756	The directory  /proc/parport  contains information about the parallel ports of
757	your system.  It  has  one  subdirectory  for  each port, named after the port
758	number (0,1,2,...).
759	
760	These directories contain the four files shown in Table 1-8.
761	
762	
763	Table 1-8: Files in /proc/parport 
764	..............................................................................
765	 File      Content                                                             
766	 autoprobe Any IEEE-1284 device ID information that has been acquired.         
767	 devices   list of the device drivers using that port. A + will appear by the
768	           name of the device currently using the port (it might not appear
769	           against any). 
770	 hardware  Parallel port's base address, IRQ line and DMA channel.             
771	 irq       IRQ that parport is using for that port. This is in a separate
772	           file to allow you to alter it by writing a new value in (IRQ
773	           number or none). 
774	..............................................................................
775	
776	1.7 TTY info in /proc/tty
777	-------------------------
778	
779	Information about  the  available  and actually used tty's can be found in the
780	directory /proc/tty.You'll  find  entries  for drivers and line disciplines in
781	this directory, as shown in Table 1-9.
782	
783	
784	Table 1-9: Files in /proc/tty 
785	..............................................................................
786	 File          Content                                        
787	 drivers       list of drivers and their usage                
788	 ldiscs        registered line disciplines                    
789	 driver/serial usage statistic and status of single tty lines 
790	..............................................................................
791	
792	To see  which  tty's  are  currently in use, you can simply look into the file
793	/proc/tty/drivers:
794	
795	  > cat /proc/tty/drivers 
796	  pty_slave            /dev/pts      136   0-255 pty:slave 
797	  pty_master           /dev/ptm      128   0-255 pty:master 
798	  pty_slave            /dev/ttyp       3   0-255 pty:slave 
799	  pty_master           /dev/pty        2   0-255 pty:master 
800	  serial               /dev/cua        5   64-67 serial:callout 
801	  serial               /dev/ttyS       4   64-67 serial 
802	  /dev/tty0            /dev/tty0       4       0 system:vtmaster 
803	  /dev/ptmx            /dev/ptmx       5       2 system 
804	  /dev/console         /dev/console    5       1 system:console 
805	  /dev/tty             /dev/tty        5       0 system:/dev/tty 
806	  unknown              /dev/tty        4    1-63 console 
807	
808	
809	1.8 Miscellaneous kernel statistics in /proc/stat
810	-------------------------------------------------
811	
812	Various pieces   of  information about  kernel activity  are  available in the
813	/proc/stat file.  All  of  the numbers reported  in  this file are  aggregates
814	since the system first booted.  For a quick look, simply cat the file:
815	
816	  > cat /proc/stat
817	  cpu  2255 34 2290 22625563 6290 127 456 0
818	  cpu0 1132 34 1441 11311718 3675 127 438 0
819	  cpu1 1123 0 849 11313845 2614 0 18 0
820	  intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...]
821	  ctxt 1990473
822	  btime 1062191376
823	  processes 2915
824	  procs_running 1
825	  procs_blocked 0
826	
827	The very first  "cpu" line aggregates the  numbers in all  of the other "cpuN"
828	lines.  These numbers identify the amount of time the CPU has spent performing
829	different kinds of work.  Time units are in USER_HZ (typically hundredths of a
830	second).  The meanings of the columns are as follows, from left to right:
831	
832	- user: normal processes executing in user mode
833	- nice: niced processes executing in user mode
834	- system: processes executing in kernel mode
835	- idle: twiddling thumbs
836	- iowait: waiting for I/O to complete
837	- irq: servicing interrupts
838	- softirq: servicing softirqs
839	- steal: involuntary wait
840	
841	The "intr" line gives counts of interrupts  serviced since boot time, for each
842	of the  possible system interrupts.   The first  column  is the  total of  all
843	interrupts serviced; each  subsequent column is the  total for that particular
844	interrupt.
845	
846	The "ctxt" line gives the total number of context switches across all CPUs.
847	
848	The "btime" line gives  the time at which the  system booted, in seconds since
849	the Unix epoch.
850	
851	The "processes" line gives the number  of processes and threads created, which
852	includes (but  is not limited  to) those  created by  calls to the  fork() and
853	clone() system calls.
854	
855	The  "procs_running" line gives the  number of processes  currently running on
856	CPUs.
857	
858	The   "procs_blocked" line gives  the  number of  processes currently blocked,
859	waiting for I/O to complete.
860	
861	1.9 Ext4 file system parameters
862	------------------------------
863	Ext4 file system have one directory per partition under /proc/fs/ext4/
864	# ls /proc/fs/ext4/hdc/
865	group_prealloc  max_to_scan  mb_groups  mb_history  min_to_scan  order2_req
866	stats  stream_req
867	
868	mb_groups:
869	This file gives the details of mutiblock allocator buddy cache of free blocks
870	
871	mb_history:
872	Multiblock allocation history.
873	
874	stats:
875	This file indicate whether the multiblock allocator should start collecting
876	statistics. The statistics are shown during unmount
877	
878	group_prealloc:
879	The multiblock allocator normalize the block allocation request to
880	group_prealloc filesystem blocks if we don't have strip value set.
881	The stripe value can be specified at mount time or during mke2fs.
882	
883	max_to_scan:
884	How long multiblock allocator can look for a best extent (in found extents)
885	
886	min_to_scan:
887	How long multiblock allocator  must look for a best extent
888	
889	order2_req:
890	Multiblock allocator use  2^N search using buddies only for requests greater
891	than or equal to order2_req. The request size is specfied in file system
892	blocks. A value of 2 indicate only if the requests are greater than or equal
893	to 4 blocks.
894	
895	stream_req:
896	Files smaller than stream_req are served by the stream allocator, whose
897	purpose is to pack requests as close each to other as possible to
898	produce smooth I/O traffic. Avalue of 16 indicate that file smaller than 16
899	filesystem block size will use group based preallocation.
900	
901	------------------------------------------------------------------------------
902	Summary
903	------------------------------------------------------------------------------
904	The /proc file system serves information about the running system. It not only
905	allows access to process data but also allows you to request the kernel status
906	by reading files in the hierarchy.
907	
908	The directory  structure  of /proc reflects the types of information and makes
909	it easy, if not obvious, where to look for specific data.
910	------------------------------------------------------------------------------
911	
912	------------------------------------------------------------------------------
913	CHAPTER 2: MODIFYING SYSTEM PARAMETERS
914	------------------------------------------------------------------------------
915	
916	------------------------------------------------------------------------------
917	In This Chapter
918	------------------------------------------------------------------------------
919	* Modifying kernel parameters by writing into files found in /proc/sys
920	* Exploring the files which modify certain parameters
921	* Review of the /proc/sys file tree
922	------------------------------------------------------------------------------
923	
924	
925	A very  interesting part of /proc is the directory /proc/sys. This is not only
926	a source  of  information,  it also allows you to change parameters within the
927	kernel. Be  very  careful  when attempting this. You can optimize your system,
928	but you  can  also  cause  it  to  crash.  Never  alter kernel parameters on a
929	production system.  Set  up  a  development machine and test to make sure that
930	everything works  the  way  you want it to. You may have no alternative but to
931	reboot the machine once an error has been made.
932	
933	To change  a  value,  simply  echo  the new value into the file. An example is
934	given below  in the section on the file system data. You need to be root to do
935	this. You  can  create  your  own  boot script to perform this every time your
936	system boots.
937	
938	The files  in /proc/sys can be used to fine tune and monitor miscellaneous and
939	general things  in  the operation of the Linux kernel. Since some of the files
940	can inadvertently  disrupt  your  system,  it  is  advisable  to  read  both
941	documentation and  source  before actually making adjustments. In any case, be
942	very careful  when  writing  to  any  of these files. The entries in /proc may
943	change slightly between the 2.1.* and the 2.2 kernel, so if there is any doubt
944	review the kernel documentation in the directory /usr/src/linux/Documentation.
945	This chapter  is  heavily  based  on the documentation included in the pre 2.2
946	kernels, and became part of it in version 2.2.1 of the Linux kernel.
947	
948	2.1 /proc/sys/fs - File system data
949	-----------------------------------
950	
951	This subdirectory  contains  specific  file system, file handle, inode, dentry
952	and quota information.
953	
954	Currently, these files are in /proc/sys/fs:
955	
956	dentry-state
957	------------
958	
959	Status of  the  directory  cache.  Since  directory  entries  are  dynamically
960	allocated and  deallocated,  this  file indicates the current status. It holds
961	six values, in which the last two are not used and are always zero. The others
962	are listed in table 2-1.
963	
964	
965	Table 2-1: Status files of the directory cache 
966	..............................................................................
967	 File       Content                                                            
968	 nr_dentry  Almost always zero                                                 
969	 nr_unused  Number of unused cache entries                                     
970	 age_limit  
971	            in seconds after the entry may be reclaimed, when memory is short 
972	 want_pages internally                                                         
973	..............................................................................
974	
975	dquot-nr and dquot-max
976	----------------------
977	
978	The file dquot-max shows the maximum number of cached disk quota entries.
979	
980	The file  dquot-nr  shows  the  number of allocated disk quota entries and the
981	number of free disk quota entries.
982	
983	If the number of available cached disk quotas is very low and you have a large
984	number of simultaneous system users, you might want to raise the limit.
985	
986	file-nr and file-max
987	--------------------
988	
989	The kernel  allocates file handles dynamically, but doesn't free them again at
990	this time.
991	
992	The value  in  file-max  denotes  the  maximum number of file handles that the
993	Linux kernel will allocate. When you get a lot of error messages about running
994	out of  file handles, you might want to raise this limit. The default value is
995	10% of  RAM in kilobytes.  To  change it, just  write the new number  into the
996	file:
997	
998	  # cat /proc/sys/fs/file-max 
999	  4096 
1000	  # echo 8192 > /proc/sys/fs/file-max 
1001	  # cat /proc/sys/fs/file-max 
1002	  8192 
1003	
1004	
1005	This method  of  revision  is  useful  for  all customizable parameters of the
1006	kernel - simply echo the new value to the corresponding file.
1007	
1008	Historically, the three values in file-nr denoted the number of allocated file
1009	handles,  the number of  allocated but  unused file  handles, and  the maximum
1010	number of file handles. Linux 2.6 always  reports 0 as the number of free file
1011	handles -- this  is not an error,  it just means that the  number of allocated
1012	file handles exactly matches the number of used file handles.
1013	
1014	Attempts to  allocate more  file descriptors than  file-max are  reported with
1015	printk, look for "VFS: file-max limit <number> reached".
1016	
1017	inode-state and inode-nr
1018	------------------------
1019	
1020	The file inode-nr contains the first two items from inode-state, so we'll skip
1021	to that file...
1022	
1023	inode-state contains  two  actual numbers and five dummy values. The numbers
1024	are nr_inodes and nr_free_inodes (in order of appearance).
1025	
1026	nr_inodes
1027	~~~~~~~~~
1028	
1029	Denotes the  number  of  inodes the system has allocated. This number will
1030	grow and shrink dynamically.
1031	
1032	nr_open
1033	-------
1034	
1035	Denotes the maximum number of file-handles a process can
1036	allocate. Default value is 1024*1024 (1048576) which should be
1037	enough for most machines. Actual limit depends on RLIMIT_NOFILE
1038	resource limit.
1039	
1040	nr_free_inodes
1041	--------------
1042	
1043	Represents the  number of free inodes. Ie. The number of inuse inodes is
1044	(nr_inodes - nr_free_inodes).
1045	
1046	aio-nr and aio-max-nr
1047	---------------------
1048	
1049	aio-nr is the running total of the number of events specified on the
1050	io_setup system call for all currently active aio contexts.  If aio-nr
1051	reaches aio-max-nr then io_setup will fail with EAGAIN.  Note that
1052	raising aio-max-nr does not result in the pre-allocation or re-sizing
1053	of any kernel data structures.
1054	
1055	2.2 /proc/sys/fs/binfmt_misc - Miscellaneous binary formats
1056	-----------------------------------------------------------
1057	
1058	Besides these  files, there is the subdirectory /proc/sys/fs/binfmt_misc. This
1059	handles the kernel support for miscellaneous binary formats.
1060	
1061	Binfmt_misc provides  the ability to register additional binary formats to the
1062	Kernel without  compiling  an additional module/kernel. Therefore, binfmt_misc
1063	needs to  know magic numbers at the beginning or the filename extension of the
1064	binary.
1065	
1066	It works by maintaining a linked list of structs that contain a description of
1067	a binary  format,  including  a  magic  with size (or the filename extension),
1068	offset and  mask,  and  the  interpreter name. On request it invokes the given
1069	interpreter with  the  original  program  as  argument,  as  binfmt_java  and
1070	binfmt_em86 and  binfmt_mz  do.  Since binfmt_misc does not define any default
1071	binary-formats, you have to register an additional binary-format.
1072	
1073	There are two general files in binfmt_misc and one file per registered format.
1074	The two general files are register and status.
1075	
1076	Registering a new binary format
1077	-------------------------------
1078	
1079	To register a new binary format you have to issue the command
1080	
1081	  echo :name:type:offset:magic:mask:interpreter: > /proc/sys/fs/binfmt_misc/register 
1082	
1083	
1084	
1085	with appropriate  name (the name for the /proc-dir entry), offset (defaults to
1086	0, if  omitted),  magic, mask (which can be omitted, defaults to all 0xff) and
1087	last but  not  least,  the  interpreter that is to be invoked (for example and
1088	testing /bin/echo).  Type  can be M for usual magic matching or E for filename
1089	extension matching (give extension in place of magic).
1090	
1091	Check or reset the status of the binary format handler
1092	------------------------------------------------------
1093	
1094	If you  do a cat on the file /proc/sys/fs/binfmt_misc/status, you will get the
1095	current status (enabled/disabled) of binfmt_misc. Change the status by echoing
1096	0 (disables)  or  1  (enables)  or  -1  (caution:  this  clears all previously
1097	registered binary  formats)  to status. For example echo 0 > status to disable
1098	binfmt_misc (temporarily).
1099	
1100	Status of a single handler
1101	--------------------------
1102	
1103	Each registered  handler has an entry in /proc/sys/fs/binfmt_misc. These files
1104	perform the  same function as status, but their scope is limited to the actual
1105	binary format.  By  cating this file, you also receive all related information
1106	about the interpreter/magic of the binfmt.
1107	
1108	Example usage of binfmt_misc (emulate binfmt_java)
1109	--------------------------------------------------
1110	
1111	  cd /proc/sys/fs/binfmt_misc  
1112	  echo ':Java:M::\xca\xfe\xba\xbe::/usr/local/java/bin/javawrapper:' > register  
1113	  echo ':HTML:E::html::/usr/local/java/bin/appletviewer:' > register  
1114	  echo ':Applet:M::<!--applet::/usr/local/java/bin/appletviewer:' > register 
1115	  echo ':DEXE:M::\x0eDEX::/usr/bin/dosexec:' > register 
1116	
1117	
1118	These four  lines  add  support  for  Java  executables and Java applets (like
1119	binfmt_java, additionally  recognizing the .html extension with no need to put
1120	<!--applet> to  every  applet  file).  You  have  to  install  the JDK and the
1121	shell-script /usr/local/java/bin/javawrapper  too.  It  works  around  the
1122	brokenness of  the Java filename handling. To add a Java binary, just create a
1123	link to the class-file somewhere in the path.
1124	
1125	2.3 /proc/sys/kernel - general kernel parameters
1126	------------------------------------------------
1127	
1128	This directory  reflects  general  kernel  behaviors. As I've said before, the
1129	contents depend  on  your  configuration.  Here you'll find the most important
1130	files, along with descriptions of what they mean and how to use them.
1131	
1132	acct
1133	----
1134	
1135	The file contains three values; highwater, lowwater, and frequency.
1136	
1137	It exists  only  when  BSD-style  process  accounting is enabled. These values
1138	control its behavior. If the free space on the file system where the log lives
1139	goes below  lowwater  percentage,  accounting  suspends.  If  it  goes  above
1140	highwater percentage,  accounting  resumes. Frequency determines how often you
1141	check the amount of free space (value is in seconds). Default settings are: 4,
1142	2, and  30.  That is, suspend accounting if there is less than 2 percent free;
1143	resume it  if we have a value of 3 or more percent; consider information about
1144	the amount of free space valid for 30 seconds
1145	
1146	ctrl-alt-del
1147	------------
1148	
1149	When the value in this file is 0, ctrl-alt-del is trapped and sent to the init
1150	program to  handle a graceful restart. However, when the value is greater that
1151	zero, Linux's  reaction  to  this key combination will be an immediate reboot,
1152	without syncing its dirty buffers.
1153	
1154	[NOTE]
1155	    When a  program  (like  dosemu)  has  the  keyboard  in  raw  mode,  the
1156	    ctrl-alt-del is  intercepted  by  the  program  before it ever reaches the
1157	    kernel tty  layer,  and  it is up to the program to decide what to do with
1158	    it.
1159	
1160	domainname and hostname
1161	-----------------------
1162	
1163	These files  can  be controlled to set the NIS domainname and hostname of your
1164	box. For the classic darkstar.frop.org a simple:
1165	
1166	  # echo "darkstar" > /proc/sys/kernel/hostname 
1167	  # echo "frop.org" > /proc/sys/kernel/domainname 
1168	
1169	
1170	would suffice to set your hostname and NIS domainname.
1171	
1172	osrelease, ostype and version
1173	-----------------------------
1174	
1175	The names make it pretty obvious what these fields contain:
1176	
1177	  > cat /proc/sys/kernel/osrelease 
1178	  2.2.12 
1179	   
1180	  > cat /proc/sys/kernel/ostype 
1181	  Linux 
1182	   
1183	  > cat /proc/sys/kernel/version 
1184	  #4 Fri Oct 1 12:41:14 PDT 1999 
1185	
1186	
1187	The files  osrelease and ostype should be clear enough. Version needs a little
1188	more clarification.  The  #4 means that this is the 4th kernel built from this
1189	source base and the date after it indicates the time the kernel was built. The
1190	only way to tune these values is to rebuild the kernel.
1191	
1192	panic
1193	-----
1194	
1195	The value  in  this  file  represents  the  number of seconds the kernel waits
1196	before rebooting  on  a  panic.  When  you  use  the  software  watchdog,  the
1197	recommended setting  is  60. If set to 0, the auto reboot after a kernel panic
1198	is disabled, which is the default setting.
1199	
1200	printk
1201	------
1202	
1203	The four values in printk denote
1204	* console_loglevel,
1205	* default_message_loglevel,
1206	* minimum_console_loglevel and
1207	* default_console_loglevel
1208	respectively.
1209	
1210	These values  influence  printk()  behavior  when  printing  or  logging error
1211	messages, which  come  from  inside  the  kernel.  See  syslog(2)  for  more
1212	information on the different log levels.
1213	
1214	console_loglevel
1215	----------------
1216	
1217	Messages with a higher priority than this will be printed to the console.
1218	
1219	default_message_level
1220	---------------------
1221	
1222	Messages without an explicit priority will be printed with this priority.
1223	
1224	minimum_console_loglevel
1225	------------------------
1226	
1227	Minimum (highest) value to which the console_loglevel can be set.
1228	
1229	default_console_loglevel
1230	------------------------
1231	
1232	Default value for console_loglevel.
1233	
1234	sg-big-buff
1235	-----------
1236	
1237	This file  shows  the size of the generic SCSI (sg) buffer. At this point, you
1238	can't tune  it  yet,  but  you  can  change  it  at  compile  time  by editing
1239	include/scsi/sg.h and changing the value of SG_BIG_BUFF.
1240	
1241	If you use a scanner with SANE (Scanner Access Now Easy) you might want to set
1242	this to a higher value. Refer to the SANE documentation on this issue.
1243	
1244	modprobe
1245	--------
1246	
1247	The location  where  the  modprobe  binary  is  located.  The kernel uses this
1248	program to load modules on demand.
1249	
1250	unknown_nmi_panic