OpenSolaris

Printable Version Enter a New Search
Bug ID 6755389
Synopsis Initial run of any zfs command that iterates over datasets can be slow
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:zfs
Keywords zfs-perf
Responsible Engineer Richard Morris
Reported Against snv_100
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_106
Fixed In snv_106
Release Fixed solaris_nevada(snv_106) , solaris_10u8(s10u8_01) (Bug ID:2176261)
Related Bugs 6386929 , 6664880 , 6847118
Submit Date 2-October-2008
Last Update Date 16-January-2009
Description
CR 6386929 reports that the initial zfs list is slow.  This is correct.  For example, on a Thumper with about 27k zfs datasets, the initial zfs list of all datasets takes over 3 minutes while a subsequent zfs list takes 30 seconds.

The reason is that zfs list is single threaded and is dominated by I/O wait times.  So the initial zfs list spends most of its time waiting for I/O while a subsequent zfs list requires no I/O.  See the comments in 6386929 for more details.

However, this problem is not specific to zfs list.  The zfs get, inherit, allow, unallow, and upgrade commands all provide options to iterate over datasets.  These commands can also take a long time but subsequent runs complete much faster.  Also, other commands such as destroying a snapshot with dependent clones can produce this same problem.

The solution for 6386929 should also address this problem for all of these cases.  This CR is intended to cover all of these.  The solution should also handle iteration over multiple pools, as well as iterations over a sub-hierachy of a single pool.
Work Around
N/A
Comments
N/A