View Source

{color:#4a3f2d}Matt Ahrens and George Wilson of Delphix.{color}

ZFS DTrace Provider

provide file info in io provider
* this will only work for "normal" i/o's
* zil, mos, aggregate io's will not have file info
* initially, only reads will have file info

ZIO probes
* provides zfs-specific information about each logical i/o
* aggregation
* arguments to probe will include:
** bookmark
** dnode type
** file name
** dataset name
** sync vs. async
** zil vs. other (including dmu_sync())
** for zil, allocated vs written size
** is it a read-to-write
** is it a scrub
** is it a send
** is it from the L2ARC
** prefetch
** perhaps the originating PID? (otherwise not knowable for async writes)
* pipeline stages
** allocation details

TXG probes
* track txg state changes and why 
** open \-> quiescing \-> syncing \-> done
** why: timer, memory throttle, dirty throttle, requested
* phases of sync (pass1; sync task; scan; ...)
* calls to txg_wait_sync (usually indicates administrative action)
* calls to txg_wait_open (usually indicates write throttling)

ARC probes
* global variables (arc_c, etc)?
* buffer state changes (mru \-> mfu \-> evict \-> evict ghost)
** arguments to probe will include:
** bookmark / file name / dataset name
** time block was initially added to ARC
* why it was initially added to ARC (prefetch vs read vs write)