Caution: This version of this document is no longer maintained. For the latest documentation, see http://www.qnx.com/developers/docs.

fsysinfo

Display filesystem statistics (QNX Neutrino)

Syntax:

fsysinfo [options]* device|filesystem

Runs on:

Neutrino

Options:

-l period
Loop with the specified period (in milliseconds).
-L period
Loop with the specified period (in milliseconds), displaying the differences in the statistics between iterations.
-m
Don't add in metadata (filesystem mountpoint) disk I/O counts.
-v
Display the versions of io-blk.so and the filesystem.
-z
Zero (reset) the statistics after reading them.
-Z
Zero (reset) the statistics, without displaying them.

Description:

The fsysinfo utility is a front end to the devctl(DCMD_FSYS_STATISTICS) command (from <sys/fs_stats.h>), which queries a disk filesystem for its statistics. These statistics include disk sectors read and written, the efficiency of internal caches, the count of various system calls made from user code, and so on.

By default, the current statistics are displayed once. There's also a looping mode, in which the utility loops and redisplays the statistics at the specified interval (-l displays the raw values, and -L displays the difference from the previous values). Press Ctrl-C to exit.

You can reset the statistics to 0 by using -z or -Z (-z displays what the values were prior to being reset, but -Z produces no output and is useful in scripts).

If you specify the -m option, fsysinfo doesn't combine disk I/O statistics from the specified filesystem and its host device/partition; usually this is necessary for many filesystem implementations that internally target metadata updates against the host device and not to a particular higher-level file. (For example, if you specify -m, modifications to the .bitmap and .inode files for an fs-qnx4 filesystem don't show as I/O on the mounted filesystem.)

The output includes the following:

Section Statistic Description
FILESYS   Mountpoint and fsys type
MOUNT mounted Time of the filesystem mount
  elapsed Time since statistics reset
DISK I/O write Physical sector writes to the device
  read Physical sector reads from the device
  r/a Predictive readaheads from the device
  direct DCMD_FSYS_DIRECT_IO sectors
  bad Bad blocks
CACHE write Sectors delayed-write to buffer cache (blk delwri= commit=)
  read Sectors reread from buffer cache
  rate Ratio of (CACHE read) : (DISK IO read + r/a)
  wipe Buffers reused non-LRU to maintain max occupancy (blk wipe=)
  protect Metadata buffers given extra LRU (blk protect=)
SYSCALL open Number of open() calls
  stat Number of stat() or fstat() calls
  namei Number of conversions from a pathname to a file
  write Number of write() calls
  read Number of read() calls
  devctl Number of devctl() calls
NAMES exist Filenames known to exist (avoid scan)
  enoent Filenames known to not exist (avoid scan)
  misses Filename unknown (have to scan directory)
  unsuit Filename unsuitable for caching (too long or ambiguous)
  stale Stale name entry (fsys unmounted or associated vnode recycled)
  rate Ratio of (exist + enoent) : (misses + unsuit)
BMAP hit Known logical to physical block mapping
  miss Unknown logical to physical block mapping
  rate Ratio of (hit) : (miss)
VNODES create Open of unknown file (must load/build the vnode from the filesystem)
  hit Open of a known or recently-used file
  rate Ratio of (hit) : (create)
  lock/UC Uncontested/contested vnode lock
  recycle Reuse of cache entry for new file (blk vnode=)
SLAB map The number of pages mapped in by the heap-allocation subsystem
  unmap The number of pages released by the heap-allocation subsystem
  active The difference of (map) − (unmap)

You can use this information to analyze the efficiency of the various io-blk.so caches, possibly leading to fine-tuning of the driver command-line options (blk cache= ncache= map= vnode=).

Examples:

Determine what/how many disk operations were required by an activity:

# fsysinfo -Z /fs/hd/tmp
# cd /fs/hd/tmp
# rw -t150m -r8k
# fsysinfo /fs/hd/tmp
FILESYS     /fs/hd (qnx4)
MOUNT       mounted  Wed Jul 18 20:39:44 2007   elapsed 18 secs
DISK I/O    write    307874   read        282   r/a      307038
            direct        0   bad           0
CACHE       write    326473   read     331538   rate        51%
            wipe          0   protec     1003
SYSCALL     open          2   stat          1   namei         5
            write     19200   read      19201   devctl        7
NAMES       exist         3   enoent        2   misses        2
            unsuit        0   stale       194   rate        71%
BMAP        hit       38155   miss        501   rate        98%
VNODES      create        1   hit           9   rate        90%
            lock/U    38427   lock/C        0   recycl     1265
SLAB        map        4041   unmap        24   active     4017

Monitor disk access in realtime:

# fsysinfo -L500 /fs/hd

This command displays output similar to the above, but updated every 500 ms.

See also:

chattr, devb-*, fs-*, io-blk.so