[Bug 107301] system hang during ext4 xattr operation

bugzilla-daemon
2015-11-09T18:13:29Z

Andreas Dilger <adilger.kernelbugzilla@dilger.ca> changed:

What |Removed |Added
----------------------------------------------------------------------------
CC| |adilger.kernelbugzilla@dilg
| |er.ca

--- Comment #12 from Andreas Dilger <adilger.kernelbugzilla@dilger.ca> ---
Created attachment 192551
--> https://bugzilla.kernel.org/attachment.cgi?id=192551&action=edit
add "no_mbcache

We have a patch for Lustre ldiskfs (ext4 modified with Lustre patches) to
disable mbcache, since it has similar performance impact for Lustre servers,
and provides no value because the xattrs Lustre stores on each file are unique
and cannot be shared.

Canonical patch location:
http://git.hpdd.intel.com/fs/lustre-release.git/blob_plain/HEAD:/ldiskfs/kernel_patches/patches/rhel7/ext4-disable-mb-cache.patch

While the referenced patch is for RHEL 7, it is small enough to port easily to
the upstream kernel.

This patch adds a "no_mbcache" mount option, which Lustre automatically adds to
the filesystem options when the servers are mounted. There was a patch to
improve mbcache performance in ext4 by making the cache per-sb, but that
doesn't improve the contention within a filesystem, and doesn't avoid the fact
that mbcache provides absolutely no value for Lustre (or Ceph, it seems).
Doing no work at all is better than doing it somewhat more efficiently.

The only way I could see this working automatically is if mbcache disabled
itself after having a low/zero cache hit ratio within a certain number of
inserts, and if not finding any shared xattr blocks when reading from disk. In
the meantime, I think having a mount option is a viable alternative for those
people who know better than the auto-detection heuristics.