刚发现一个linux在线文档库。很好很强大。

http://blog.csdn.net/longxibendi/article/details/6048231


1.网址: http://www.mjmwired.net 

 

2.比如查看这个 proc.txt ,就在这里能找到。

http://www.mjmwired.net/kernel/Documentation/filesystems/proc.txt

 

内核参数解释全在这里了。不过,也可以下载内核完源代码,从/usr/src/linux/Documentation/proc.txt查看

下载内核从http://www.kernel.org/pub/linux/kernel/v2.6/

解压完后从这里打开:

linux-2.6.28/Documentation/filesystems/proc.txt    

 

3.此外,在filesystems下还有很多文档,比如ext4.txt,很详细,很全面,很有用。

 

4.这里提供一个2.6.28的完整proc.txt文档

注意linux系统管理技术手册 第二版   说的是  proc.txt  在  /usr/src/linux/Documentation/proc.txt  ,具体问题,具体分析吧。

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

你可能感兴趣的:(刚发现一个linux在线文档库。很好很强大。)