1.4 Networking info in /proc/net
--------------------------------

The subdirectory  /proc/net  follows  the  usual  pattern. Table 1-6 shows the
additional values  you  get  for  IP  version 6 if you configure the kernel to
support this. Table 1-7 lists the files and their meaning.


Table 1-6: IPv6 info in /proc/net
..............................................................................
 File       Content                                              
 udp6       UDP sockets (IPv6)                                   
 tcp6       TCP sockets (IPv6)                                   
 raw6       Raw device statistics (IPv6)                         
 igmp6      IP multicast addresses, which this host joined (IPv6)
 if_inet6   List of IPv6 interface addresses                     
 ipv6_route Kernel routing table for IPv6                        
 rt6_stats  Global IPv6 routing tables statistics                
 sockstat6  Socket statistics (IPv6)                             
 snmp6      Snmp data (IPv6)                                     
..............................................................................


Table 1-7: Network info in /proc/net
..............................................................................
 File          Content                                                        
 arp           Kernel  ARP table                                              
 dev           network devices with statistics                                
 dev_mcast     the Layer2 multicast groups a device is listening too
               (interface index, label, number of references, number of bound
               addresses).
 dev_stat      network device status                                          
 ip_fwchains   Firewall chain linkage                                         
 ip_fwnames    Firewall chain names                                           
 ip_masq       Directory containing the masquerading tables                   
 ip_masquerade Major masquerading table                                       
 netstat       Network statistics                                             
 raw           raw device statistics                                          
 route         Kernel routing table                                           
 rpc           Directory containing rpc info                                  
 rt_cache      Routing cache                                                  
 snmp          SNMP data                                                      
 sockstat      Socket statistics                                              
 tcp           TCP  sockets                                                   
 tr_rif        Token ring RIF routing table                                   
 udp           UDP sockets                                                    
 unix          UNIX domain sockets                                            
 wireless      Wireless interface data (Wavelan etc)                          
 igmp          IP multicast addresses, which this host joined                 
 psched        Global packet scheduler parameters.                            
 netlink       List of PF_NETLINK sockets                                     
 ip_mr_vifs    List of multicast virtual interfaces                           
 ip_mr_cache   List of multicast routing cache                                
..............................................................................

You can  use  this  information  to see which network devices are available in
your system and how much traffic was routed over those devices:

  > cat /proc/net/dev
  Inter-|Receive                                                   |[...
   face |bytes    packets errs drop fifo frame compressed multicast|[...
      lo:  908188   5596     0    0    0     0          0         0 [...        
    ppp0:15475140  20721   410    0    0   410          0         0 [... 
    eth0:  614530   7085     0    0    0     0          0         1 [...
  
  ...] Transmit
  ...] bytes    packets errs drop fifo colls carrier compressed
  ...]  908188     5596    0    0    0     0       0          0
  ...] 1375103    17405    0    0    0     0       0          0
  ...] 1703981     5535    0    0    0     3       0          0

In addition, each Channel Bond interface has it's own directory.  For
example, the bond0 device will have a directory called /proc/net/bond0/.
It will contain information that is specific to that bond, such as the
current slaves of the bond, the link status of the slaves, and how
many times the slaves link has failed.

1.5 SCSI info
-------------

If you  have  a  SCSI  host adapter in your system, you'll find a subdirectory
named after  the driver for this adapter in /proc/scsi. You'll also see a list
of all recognized SCSI devices in /proc/scsi:

  >cat /proc/scsi/scsi
  Attached devices:
  Host: scsi0 Channel: 00 Id: 00 Lun: 00
    Vendor: IBM      Model: DGHS09U          Rev: 03E0
    Type:   Direct-Access                    ANSI SCSI revision: 03
  Host: scsi0 Channel: 00 Id: 06 Lun: 00
    Vendor: PIONEER  Model: CD-ROM DR-U06S   Rev: 1.04
    Type:   CD-ROM                           ANSI SCSI revision: 02


The directory  named  after  the driver has one file for each adapter found in
the system.  These  files  contain information about the controller, including
the used  IRQ  and  the  IO  address range. The amount of information shown is
dependent on  the adapter you use. The example shows the output for an Adaptec
AHA-2940 SCSI adapter:

  > cat /proc/scsi/aic7xxx/0
  
  Adaptec AIC7xxx driver version: 5.1.19/3.2.4
  Compile Options:
    TCQ Enabled By Default : Disabled
    AIC7XXX_PROC_STATS     : Disabled
    AIC7XXX_RESET_DELAY    : 5
  Adapter Configuration:
             SCSI Adapter: Adaptec AHA-294X Ultra SCSI host adapter
                             Ultra Wide Controller
      PCI MMAPed I/O Base: 0xeb001000
   Adapter SEEPROM Config: SEEPROM found and used.
        Adaptec SCSI BIOS: Enabled
                      IRQ: 10
                     SCBs: Active 0, Max Active 2,
                           Allocated 15, HW 16, Page 255
               Interrupts: 160328
        BIOS Control Word: 0x18b6
     Adapter Control Word: 0x005b
     Extended Translation: Enabled
  Disconnect Enable Flags: 0xffff
       Ultra Enable Flags: 0x0001
   Tag Queue Enable Flags: 0x0000
  Ordered Queue Tag Flags: 0x0000
  Default Tag Queue Depth: 8
      Tagged Queue By Device array for aic7xxx host instance 0:
        {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
      Actual queue depth per device for aic7xxx host instance 0:
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
  Statistics:
  (scsi0:0:0:0)
    Device using Wide/Sync transfers at 40.0 MByte/sec, offset 8
    Transinfo settings: current(12/8/1/0), goal(12/8/1/0), user(12/15/1/0)
    Total transfers 160151 (74577 reads and 85574 writes)
  (scsi0:0:6:0)
    Device using Narrow/Sync transfers at 5.0 MByte/sec, offset 15
    Transinfo settings: current(50/15/0/0), goal(50/15/0/0), user(50/15/0/0)
    Total transfers 0 (0 reads and 0 writes)


1.6 Parallel port info in /proc/parport
---------------------------------------

The directory  /proc/parport  contains information about the parallel ports of
your system.  It  has  one  subdirectory  for  each port, named after the port
number (0,1,2,...).

These directories contain the four files shown in Table 1-8.


Table 1-8: Files in /proc/parport
..............................................................................
 File      Content                                                            
 autoprobe Any IEEE-1284 device ID information that has been acquired.        
 devices   list of the device drivers using that port. A + will appear by the
           name of the device currently using the port (it might not appear
           against any).
 hardware  Parallel port's base address, IRQ line and DMA channel.            
 irq       IRQ that parport is using for that port. This is in a separate
           file to allow you to alter it by writing a new value in (IRQ
           number or none).
..............................................................................

1.7 TTY info in /proc/tty
-------------------------

Information about  the  available  and actually used tty's can be found in the
directory /proc/tty.You'll  find  entries  for drivers and line disciplines in
this directory, as shown in Table 1-9.


Table 1-9: Files in /proc/tty
..............................................................................
 File          Content                                       
 drivers       list of drivers and their usage               
 ldiscs        registered line disciplines                   
 driver/serial usage statistic and status of single tty lines
..............................................................................

To see  which  tty's  are  currently in use, you can simply look into the file
/proc/tty/drivers:

  > cat /proc/tty/drivers
  pty_slave            /dev/pts      136   0-255 pty:slave
  pty_master           /dev/ptm      128   0-255 pty:master
  pty_slave            /dev/ttyp       3   0-255 pty:slave
  pty_master           /dev/pty        2   0-255 pty:master
  serial               /dev/cua        5   64-67 serial:callout
  serial               /dev/ttyS       4   64-67 serial
  /dev/tty0            /dev/tty0       4       0 system:vtmaster
  /dev/ptmx            /dev/ptmx       5       2 system
  /dev/console         /dev/console    5       1 system:console
  /dev/tty             /dev/tty        5       0 system:/dev/tty
  unknown              /dev/tty        4    1-63 console


1.8 Miscellaneous kernel statistics in /proc/stat
-------------------------------------------------

Various pieces   of  information about  kernel activity  are  available in the
/proc/stat file.  All  of  the numbers reported  in  this file are  aggregates
since the system first booted.  For a quick look, simply cat the file:

  > cat /proc/stat
  cpu  2255 34 2290 22625563 6290 127 456 0
  cpu0 1132 34 1441 11311718 3675 127 438 0
  cpu1 1123 0 849 11313845 2614 0 18 0
  intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...]
  ctxt 1990473
  btime 1062191376
  processes 2915
  procs_running 1
  procs_blocked 0

The very first  "cpu" line aggregates the  numbers in all  of the other "cpuN"
lines.  These numbers identify the amount of time the CPU has spent performing
different kinds of work.  Time units are in USER_HZ (typically hundredths of a
second).  The meanings of the columns are as follows, from left to right:

- user: normal processes executing in user mode
- nice: niced processes executing in user mode
- system: processes executing in kernel mode
- idle: twiddling thumbs
- iowait: waiting for I/O to complete
- irq: servicing interrupts
- softirq: servicing softirqs
- steal: involuntary wait

The "intr" line gives counts of interrupts  serviced since boot time, for each
of the  possible system interrupts.   The first  column  is the  total of  all
interrupts serviced; each  subsequent column is the  total for that particular
interrupt.

The "ctxt" line gives the total number of context switches across all CPUs.

The "btime" line gives  the time at which the  system booted, in seconds since
the Unix epoch.

The "processes" line gives the number  of processes and threads created, which
includes (but  is not limited  to) those  created by  calls to the  fork() and
clone() system calls.

The  "procs_running" line gives the  number of processes  currently running on
CPUs.

The   "procs_blocked" line gives  the  number of  processes currently blocked,
waiting for I/O to complete.


1.9 Ext4 file system parameters
------------------------------

Information about mounted ext4 file systems can be found in
/proc/fs/ext4.  Each mounted filesystem will have a directory in
/proc/fs/ext4 based on its device name (i.e., /proc/fs/ext4/hdc or
/proc/fs/ext4/dm-0).   The files in each per-device directory are shown
in Table 1-10, below.

Table 1-10: Files in /proc/fs/ext4/<devname>
..............................................................................
 File            Content                                       
 mb_groups       details of multiblock allocator buddy cache of free blocks
 mb_history      multiblock allocation history
 stats           controls whether the multiblock allocator should start
                 collecting statistics, which are shown during the unmount
 group_prealloc  the multiblock allocator will round up allocation
                 requests to a multiple of this tuning parameter if the
                 stripe size is not set in the ext4 superblock
 max_to_scan     The maximum number of extents the multiblock allocator
                 will search to find the best extent
 min_to_scan     The minimum number of extents the multiblock allocator
                 will search to find the best extent
 order2_req      Tuning parameter which controls the minimum size for
                 requests (as a power of 2) where the buddy cache is
                 used
 stream_req      Files which have fewer blocks than this tunable
                 parameter will have their blocks allocated out of a
                 block group specific preallocation pool, so that small
                 files are packed closely together.  Each large file
                 will have its blocks allocated out of its own unique
                 preallocation pool.
inode_readahead  Tuning parameter which controls the maximum number of
                 inode table blocks that ext4's inode table readahead
                 algorithm will pre-read into the buffer cache
..............................................................................


------------------------------------------------------------------------------
Summary
------------------------------------------------------------------------------
The /proc file system serves information about the running system. It not only
allows access to process data but also allows you to request the kernel status
by reading files in the hierarchy.

The directory  structure  of /proc reflects the types of information and makes
it easy, if not obvious, where to look for specific data.
------------------------------------------------------------------------------