Message ID | 165740691606.73293.12753862498202082021.stgit@magnolia (mailing list archive) |
---|---|
Headers | show |
Series | xfs: make attr forks permanent | expand |
On Sat, Jul 09, 2022 at 03:48:36PM -0700, Darrick J. Wong wrote: > Although the race condition itself can be fixed through clever use of a > memory barrier, further consideration of the use cases of extended > attributes shows that most files always have at least one attribute, so > we might as well make them permanent. I kinda hat increase the size of the inode even more, but there is no arguing about keeping nasty rarely used code simple vs micro-optimizing it. Do you have numbers on hand on how many inodes we can cache in an order 0 or 1 cache before and after this?
On Sun, Jul 10, 2022 at 10:25:43PM -0700, Christoph Hellwig wrote: > On Sat, Jul 09, 2022 at 03:48:36PM -0700, Darrick J. Wong wrote: > > Although the race condition itself can be fixed through clever use of a > > memory barrier, further consideration of the use cases of extended > > attributes shows that most files always have at least one attribute, so > > we might as well make them permanent. > > I kinda hat increase the size of the inode even more, but there is no > arguing about keeping nasty rarely used code simple vs micro-optimizing > it. Do you have numbers on hand on how many inodes we can cache in > an order 0 or 1 cache before and after this? Hm. On my laptop running 5.18, xfs_inode before the change was 928 bytes, and here's what it looks like: 928 bytes Order Pagebytes Slack Objs Slack/Objs 0 4096 384 4 96 1 8192 768 8 96 2 16384 608 17 36 3 32768 288 35 9 4 65536 576 70 9 So I guess that's why it picks order-3 slabs. On a freshly built djwong-dev kernel, it's now 976 bytes: 976 bytes Order Pagebytes Slack Objs Slack/Objs 0 4096 192 4 48 1 8192 384 8 48 2 16384 768 16 48 3 32768 560 33 17 4 65536 144 67 2 Here it seems to pick order-2 slabs, which admittedly isn't great. --D
On Mon, Jul 11, 2022 at 06:53:52PM -0700, Darrick J. Wong wrote: > On a freshly built djwong-dev kernel, it's now 976 bytes: > > 976 bytes > Order Pagebytes Slack Objs Slack/Objs > 0 4096 192 4 48 > 1 8192 384 8 48 > 2 16384 768 16 48 > 3 32768 560 33 17 > 4 65536 144 67 2 Yes, we're getting at a point where the xfs_inode size starts to really hurt. It's all the small incrementally and very useful changes like this series or the in-memory unlinked inode list from Dave that keep growing it. I have no really good answer here except that I'd need to dust off some of my project to reduze the size by removing fields that we don't strictly need.