Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-16581

osd_xattr_get() is much more expensive with zfs

    XMLWordPrintable

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

      Attachments

        Activity

          People

            wc-triage WC Triage
            bzzz Alex Zhuravlev
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: