Display filesystem statistics (QNX Neutrino)
fsysinfo [options]* device|filesystem
Neutrino
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=).
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.
chattr, devb-*, fs-*, io-blk.so