Details
-
Improvement
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
None
-
9223372036854775807
Description
just noticed that sanity/103e takes significantly longer with ZFS. there are number of contributors, but I found one especially interesting:
ldiskfs:
attr_get 36535 samples [usecs] 0 80 1085 9093
zfs:
attr_get 36537 samples [usecs] 0 20790 750797 1636365521
i.e. osd_attr_get() (called on a directory) is 692 times slower than ldiskfs version.
it's used only in mdt_attr_get_internal():
if (ma->ma_attr.la_dirent_count != LU_DIRENT_COUNT_UNSET &&
ma->ma_attr.la_dirent_count >
mdt->mdt_restriper.mdr_dir_split_count &&
!fid_is_root(mdt_object_fid(o)) &&
mdt->mdt_enable_dir_auto_split &&
!o->mot_restriping &&
stripe_count < atomic_read(&mdt->mdt_mds_mds_conns) + 1 &&
!fixed_layout)
mdt_auto_split_add(info, o);
and only to check whether (re)striping is needed.
I find it suboptimal that:
- OSD needs to calculate la_dirent_count for every directory
- we do this every getattr