Hello, Trying to understand the ZFS IO scheduler, because of the async nature it is not very apparent, can someone give a short explanation for each of these stack traces and for their frequency this is the command dd if=/dev/zero of=/test/test1/trash count=1 bs=1024k;sync no other IO is happening to the test pool. OS is on a zfs pool (rpool) I don''t see any zio_vdev_io_start in any of the function stacks, any idea why? dtrace -n ''io:::start { @a[stack()] = count(); }'' dtrace: description ''io:::start '' matched 6 probes genunix`bdev_strategy+0x44 zfs`vdev_disk_io_start+0x2a8 zfs`zio_execute+0x74 genunix`taskq_thread+0x1a4 unix`thread_start+0x4 20 genunix`bdev_strategy+0x44 zfs`vdev_disk_io_start+0x2a8 zfs`zio_execute+0x74 zfs`vdev_queue_io_done+0x84 zfs`vdev_disk_io_done+0x4 zfs`zio_execute+0x74 genunix`taskq_thread+0x1a4 unix`thread_start+0x4 31 genunix`bdev_strategy+0x44 zfs`vdev_disk_io_start+0x2a8 zfs`zio_execute+0x74 zfs`vdev_mirror_io_start+0x1b4 zfs`zio_execute+0x74 zfs`vdev_mirror_io_start+0x1b4 zfs`zio_execute+0x74 genunix`taskq_thread+0x1a4 unix`thread_start+0x4 34 genunix`bdev_strategy+0x44 zfs`vdev_disk_io_start+0x2a8 zfs`zio_execute+0x74 zfs`vdev_mirror_io_start+0x1b4 zfs`zio_execute+0x74 genunix`taskq_thread+0x1a4 unix`thread_start+0x4 45 genunix`bdev_strategy+0x44 zfs`vdev_disk_io_start+0x2a8 zfs`zio_execute+0x74 zfs`vdev_queue_io_done+0x9c zfs`vdev_disk_io_done+0x4 zfs`zio_execute+0x74 genunix`taskq_thread+0x1a4 unix`thread_start+0x4 53 -- This message posted from opensolaris.org
tester writes: > Hello, > > Trying to understand the ZFS IO scheduler, because of the async nature > it is not very apparent, can someone give a short explanation for each > of these stack traces and for their frequency > > this is the command > > dd if=/dev/zero of=/test/test1/trash count=1 bs=1024k;sync > > no other IO is happening to the test pool. OS is on a zfs pool (rpool) > > > I don''t see any zio_vdev_io_start in any of the function stacks, any idea why? > I assume because of tail calls. If you trace zio_vdev_io_start() you see it being called but (looking at source) then it tail calls vdev_mirror_io_start() and so disappears from the stack. -r > dtrace -n ''io:::start { @a[stack()] = count(); }'' > > dtrace: description ''io:::start '' matched 6 probes > > > genunix`bdev_strategy+0x44 > zfs`vdev_disk_io_start+0x2a8 > zfs`zio_execute+0x74 > genunix`taskq_thread+0x1a4 > unix`thread_start+0x4 > 20 > > genunix`bdev_strategy+0x44 > zfs`vdev_disk_io_start+0x2a8 > zfs`zio_execute+0x74 > zfs`vdev_queue_io_done+0x84 > zfs`vdev_disk_io_done+0x4 > zfs`zio_execute+0x74 > genunix`taskq_thread+0x1a4 > unix`thread_start+0x4 > 31 > > genunix`bdev_strategy+0x44 > zfs`vdev_disk_io_start+0x2a8 > zfs`zio_execute+0x74 > zfs`vdev_mirror_io_start+0x1b4 > zfs`zio_execute+0x74 > zfs`vdev_mirror_io_start+0x1b4 > zfs`zio_execute+0x74 > genunix`taskq_thread+0x1a4 > unix`thread_start+0x4 > 34 > > genunix`bdev_strategy+0x44 > zfs`vdev_disk_io_start+0x2a8 > zfs`zio_execute+0x74 > zfs`vdev_mirror_io_start+0x1b4 > zfs`zio_execute+0x74 > genunix`taskq_thread+0x1a4 > unix`thread_start+0x4 > 45 > > genunix`bdev_strategy+0x44 > zfs`vdev_disk_io_start+0x2a8 > zfs`zio_execute+0x74 > zfs`vdev_queue_io_done+0x9c > zfs`vdev_disk_io_done+0x4 > zfs`zio_execute+0x74 > genunix`taskq_thread+0x1a4 > unix`thread_start+0x4 > 53 > -- > This message posted from opensolaris.org > _______________________________________________ > zfs-discuss mailing list > zfs-discuss at opensolaris.org > http://mail.opensolaris.org/mailman/listinfo/zfs-discuss