← Back to team overview

openstack team mailing list archive

[Swift] Updating best practices for XFS inode size


Swift stores object metadata in the xattrs of the file on disk and XFS
stores xattrs in the inodes.  When swift was first developed, there were
performance issues with using the default inode size in XFS, and led to us
recommending to change the inode size when creating XFS filesystems.

In the past couple of years, the XFS team has made some big improvements to
inode allocation and use.  With some prompting from the XFS team at Redhat,
I revisited testing the default inode size with swift.  If you are using
recent Linux Kernels, using the default inode size no longer has any impact
to write (PUT) performance through swift.  With this change we also get
some added benefits such as improved caching of inodes and better overall
file system performance.

I think this is most greatly demonstrated in the following graph displaying
total replication time over a period of two weeks:

[image: Inline image 1]

The green line represents the average of a handful of storage nodes that
have the inode size set to 1024, and the blue line represents storage nodes
that have the default inode size (256).

I currently have a merge proposal[1] in process that updates the swift
documentation, but thought I would send an email to the larger group to
spread the word.

I would like to thank the XFS folks at Redhat for letting us know about the
improvements in XFS, and the XFS team in general for the great work they
have done.


[1] https://review.openstack.org/#/c/34890/

PNG image

Follow ups