Ggtrace is "GEOM gate tracer", utility to track I/O
requests on a storage device on FreeBSD. It uses the ggate facility of
FreeBSD to attach to a file or device and produces a device that
can be used for any I/O, including hosting filesystems.

I/O requests are presented in the form of a moving histogram that can
be used to discern which parts of the storage device are used most
often. An important use of ggtrace is to analyze how
filesystems arrange and access data on storage devices.

Example graph produced by ggtrace

On the graph above, a filesystem was mounted without Soft-updates
and lots of small files
were copied to it (the red parts that go from left to right) and then
deleted (the red parts that go from right to left). These operations
were repeated several times with different timescales in ggtrace.

Several blocks on the device are presented as pixels in a single row.
The leftmost pixel represents blocks from the beginning of the device
and the rightmost pixel represents ending blocks. The scale is such that
all blocks fit in the window. The window itself can be scaled at will.

Red blocks represent writes, blue blocks represent reads. Areas that
get both read and write requests have mixed red+blue color components.
The intensity of the color represents the intensity of activity:
less intense color is used when there is little activity in the area
and bright color appears when there are many requests in the area.

The timeframe alloted (timescale) to each row is adjustable at runtime via a
slider control.

Ggtrace requires wxgtk26 and png ports
to build. The sources can be downloaded here
but see the SourceForge
site for possibly newer version.
Ggtrace is working and usable only on the RELENG_6 branch.