mirror_zfs/include/sys
Prakash Surya 1421c89142 Add visibility in to arc_read
This change is an attempt to add visibility into the arc_read calls
occurring on a system, in real time. To do this, a list was added to the
in memory SPA data structure for a pool, with each element on the list
corresponding to a call to arc_read. These entries are then exported
through the kstat interface, which can then be interpreted in userspace.

For each arc_read call, the following information is exported:

 * A unique identifier (uint64_t)
 * The time the entry was added to the list (hrtime_t)
   (*not* wall clock time; relative to the other entries on the list)
 * The objset ID (uint64_t)
 * The object number (uint64_t)
 * The indirection level (uint64_t)
 * The block ID (uint64_t)
 * The name of the function originating the arc_read call (char[24])
 * The arc_flags from the arc_read call (uint32_t)
 * The PID of the reading thread (pid_t)
 * The command or name of thread originating read (char[16])

From this exported information one can see, in real time, exactly what
is being read, what function is generating the read, and whether or not
the read was found to be already cached.

There is still some work to be done, but this should serve as a good
starting point.

Specifically, dbuf_read's are not accounted for in the currently
exported information. Thus, a follow up patch should probably be added
to export these calls that never call into arc_read (they only hit the
dbuf hash table). In addition, it might be nice to create a utility
similar to "arcstat.py" to digest the exported information and display
it in a more readable format. Or perhaps, log the information and allow
for it to be "replayed" at a later time.

Signed-off-by: Prakash Surya <surya1@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-10-25 13:57:25 -07:00
..
fm 3246 ZFS I/O deadman thread 2013-05-01 17:05:52 -07:00
fs Illumos #2882, #2883, #2900 2013-09-04 15:49:00 -07:00
arc.h Illumos #3464 2013-09-04 16:01:24 -07:00
avl_impl.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
avl.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
bplist.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
bpobj.h Illumos #3104: eliminate empty bpobjs 2013-01-08 10:35:43 -08:00
bptree.h Illumos #2619 and #2747 2013-01-08 10:35:35 -08:00
dbuf.h Illumos #3464 2013-09-04 16:01:24 -07:00
ddt.h Add ddt_object_count() error handling 2012-10-29 08:57:45 -07:00
dmu_impl.h Illumos #2703: add mechanism to report ZFS send progress 2012-09-19 13:39:06 -07:00
dmu_objset.h Illumos #3464 2013-09-04 16:01:24 -07:00
dmu_send.h Illumos #3464 2013-09-04 16:01:24 -07:00
dmu_traverse.h Illumos #3498 panic in arc_read() 2013-07-02 13:34:31 -07:00
dmu_tx.h Illumos #3464 2013-09-04 16:01:24 -07:00
dmu_zfetch.h Add missing ZFS tunables 2011-05-04 10:02:37 -07:00
dmu.h Illumos #3464 2013-09-04 16:01:24 -07:00
dnode.h Illumos #3122 zfs destroy filesystem should prefetch blocks 2013-07-02 13:34:02 -07:00
dsl_dataset.h Illumos #3464 2013-09-04 16:01:24 -07:00
dsl_deadlist.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
dsl_deleg.h Illumos #2882, #2883, #2900 2013-09-04 15:49:00 -07:00
dsl_destroy.h Illumos #3464 2013-09-04 16:01:24 -07:00
dsl_dir.h Illumos #3464 2013-09-04 16:01:24 -07:00
dsl_pool.h Revert "Add txgs-<pool> kstat file" 2013-10-25 13:57:25 -07:00
dsl_prop.h Illumos #3464 2013-09-04 16:01:24 -07:00
dsl_scan.h Illumos #2619 and #2747 2013-01-08 10:35:35 -08:00
dsl_synctask.h Illumos #3464 2013-09-04 16:01:24 -07:00
dsl_userhold.h Illumos #3464 2013-09-04 16:01:24 -07:00
efi_partition.h Move partition scanning from userspace to module. 2012-07-17 09:17:31 -07:00
Makefile.am Illumos #3464 2013-09-04 16:01:24 -07:00
metaslab_impl.h Illumos #3552, #3564 2013-06-19 16:22:39 -07:00
metaslab.h Illumos #3464 2013-09-04 16:01:24 -07:00
nvpair_impl.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
nvpair.h Illumos #3464 2013-09-04 16:01:24 -07:00
refcount.h Illumos #3464 2013-09-04 16:01:24 -07:00
rrwlock.h Illumos #3464 2013-09-04 16:01:24 -07:00
sa_impl.h Illumos #3208 cross-endian incorrect user/group accounting 2013-01-14 09:32:22 -08:00
sa.h Add sa_spill_rele() interface 2012-03-07 16:28:00 -08:00
spa_boot.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
spa_impl.h Add visibility in to arc_read 2013-10-25 13:57:25 -07:00
spa.h Add visibility in to arc_read 2013-10-25 13:57:25 -07:00
space_map.h Illumos #3464 2013-09-04 16:01:24 -07:00
txg_impl.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
txg.h Illumos #3464 2013-09-04 16:01:24 -07:00
u8_textprep_data.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
u8_textprep.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
uberblock_impl.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
uberblock.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
uio_impl.h Add basic uio support 2011-02-10 09:21:43 -08:00
unique.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
uuid.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
vdev_disk.h Linux 2.6.x compat, blkdev_compat.h 2011-02-23 12:29:38 -08:00
vdev_file.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
vdev_impl.h Illumos #3618 ::zio dcmd does not show timestamp data 2013-08-12 16:46:50 -07:00
vdev.h 3246 ZFS I/O deadman thread 2013-05-01 17:05:52 -07:00
xvattr.h Add xvattr support 2011-03-02 11:43:50 -08:00
zap_impl.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
zap_leaf.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
zap.h Illumos #3104: eliminate empty bpobjs 2013-01-08 10:35:43 -08:00
zfeature.h Illumos #3464 2013-09-04 16:01:24 -07:00
zfs_acl.h Fix build failures on PaX/GRSecurity patched kernels 2012-07-17 09:22:43 -07:00
zfs_context.h Add visibility in to arc_read 2013-10-25 13:57:25 -07:00
zfs_ctldir.h Linux 3.7 compat, schedule_delayed_work() 2012-12-12 10:47:05 -08:00
zfs_debug.h Illumos #3464 2013-09-04 16:01:24 -07:00
zfs_dir.h Prototype/structure update for Linux 2011-02-10 09:27:21 -08:00
zfs_fuid.h Prototype/structure update for Linux 2011-02-10 09:27:21 -08:00
zfs_ioctl.h Illumos #3464 2013-09-04 16:01:24 -07:00
zfs_onexit.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
zfs_rlock.h Range lock performance improvements 2011-03-08 12:44:06 -08:00
zfs_sa.h Implement SA based xattrs 2011-11-28 15:45:51 -08:00
zfs_stat.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
zfs_vfsops.h Fix 'zfs rollback' on mounted file systems 2013-01-17 09:51:20 -08:00
zfs_vnops.h Linux 3.11 compat: fops->iterate() 2013-08-15 16:19:07 -07:00
zfs_znode.h Illumos #3464 2013-09-04 16:01:24 -07:00
zil_impl.h Illumos #3086: unnecessarily setting DS_FLAG_INCONSISTENT on async 2013-01-08 10:35:43 -08:00
zil.h Illumos #3464 2013-09-04 16:01:24 -07:00
zio_checksum.h Constify structures containing function pointers 2013-03-04 08:49:32 -08:00
zio_compress.h Linux 3.11 compat: Rename LZ4 symbols 2013-10-22 10:12:39 -07:00
zio_impl.h Illumos #3329, #3330, #3331, #3335 2013-05-06 12:39:34 -07:00
zio.h Add visibility in to arc_read 2013-10-25 13:57:25 -07:00
zpl.h Linux 3.11 compat: fops->iterate() 2013-08-15 16:19:07 -07:00
zrlock.h Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
zvol.h Illumos #3464 2013-09-04 16:01:24 -07:00