Eric Sproul
2013-09-18 14:45:51 UTC
Hi,
I'm confronted with an issue where I suspect that too many
async_destroy operations are going on at once, causing saturation of
I/O resources and knock-on effects up the stack to clients. Is there
a way to enumerate the destroy operations that are currently in
progress?
A bit of preliminary dtrace has shown this kernel stack, but only
once, regardless of how many destroys are going on (maybe multiple
destroys in the same txg are coalesced):
genunix`ldi_strategy+0x53
zfs`vdev_disk_io_start+0xcc
zfs`zio_vdev_io_start+0xab
zfs`zio_execute+0x88
zfs`zio_nowait+0x21
zfs`vdev_mirror_io_start+0xcd
zfs`zio_vdev_io_start+0xab
zfs`zio_execute+0x88
zfs`zio_nowait+0x21
zfs`vdev_mirror_io_start+0xcd
zfs`zio_vdev_io_start+0x250
zfs`zio_execute+0x88
zfs`zio_nowait+0x21
zfs`arc_read+0x519
zfs`traverse_prefetch_metadata+0x9f
zfs`traverse_visitbp+0x38b
zfs`traverse_dnode+0x8b
zfs`traverse_visitbp+0x607
zfs`traverse_impl+0x159
zfs`traverse_dataset_destroyed+0x49
1
Perhaps there is some way to get a list of destroy operations via mdb?
Any pointers or advice would be appreciated.
Thanks,
Eric
I'm confronted with an issue where I suspect that too many
async_destroy operations are going on at once, causing saturation of
I/O resources and knock-on effects up the stack to clients. Is there
a way to enumerate the destroy operations that are currently in
progress?
A bit of preliminary dtrace has shown this kernel stack, but only
once, regardless of how many destroys are going on (maybe multiple
destroys in the same txg are coalesced):
genunix`ldi_strategy+0x53
zfs`vdev_disk_io_start+0xcc
zfs`zio_vdev_io_start+0xab
zfs`zio_execute+0x88
zfs`zio_nowait+0x21
zfs`vdev_mirror_io_start+0xcd
zfs`zio_vdev_io_start+0xab
zfs`zio_execute+0x88
zfs`zio_nowait+0x21
zfs`vdev_mirror_io_start+0xcd
zfs`zio_vdev_io_start+0x250
zfs`zio_execute+0x88
zfs`zio_nowait+0x21
zfs`arc_read+0x519
zfs`traverse_prefetch_metadata+0x9f
zfs`traverse_visitbp+0x38b
zfs`traverse_dnode+0x8b
zfs`traverse_visitbp+0x607
zfs`traverse_impl+0x159
zfs`traverse_dataset_destroyed+0x49
1
Perhaps there is some way to get a list of destroy operations via mdb?
Any pointers or advice would be appreciated.
Thanks,
Eric