Skip to content

dtrace.conf 2012 - ZFS DTrace Provider

Matt Ahrens and George Wilson of Delphix.

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)