* Deleting files with extended attributes is dead slow
@ 2011-08-12 18:19 Bernd Schubert
2011-08-12 20:47 ` Christoph Hellwig
0 siblings, 1 reply; 8+ messages in thread
From: Bernd Schubert @ 2011-08-12 18:19 UTC (permalink / raw)
To: linux-xfs
Hi there,
with FhGFS we may use extended attributes to store file meta data and
with ext3/ext4 that also works very well and the rate to create files
and to write those EAs (create() + fsetxattr() is about 2.5 to 3 times
faster than with a create() + write(). Size of those EA data is about
256 bytes depending on the number of storage stripes.
However, with XFS using extended attributes is *extremely* slow. Here
are some numbers with ext4 and xfs using a patched [1] bonnie++
> schubert@fsdevel3 bonnie++-1.96>./bonnie++ -d /mnt/fstestXFS/ -s0 -n 1:256:256:1 -r 0 -X
> Create files in sequential order...done.
> Stat files in sequential order...done.
> Delete files in sequential order...done.
> Create files in random order...done.
> Stat files in random order...done.
> Delete files in random order...done.
> Version 1.96 ------Sequential Create------ --------Random Create--------
> fsdevel3 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
> files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
> 1:256:256 330 6 +++++ +++ 47 1 469 9 +++++ +++ 31 1
> Latency 962ms 36us 140ms 866ms 28us 311ms
> 1.96,1.96,fsdevel3,1,1314378941,,,,,,,,,,,,,,1,256,256,,,330,6,+++++,+++,47,1,469,9,+++++,+++,31,1,,,,,,,962ms,36us,140ms,866ms,28us,311ms
> schubert@fsdevel3 bonnie++-1.96>./bonnie++ -d /mnt/fstestEXT4/ -s0 -n 100:256:256:10 -r 0 -X
> Create files in sequential order...done.
> Stat files in sequential order...done.
> Delete files in sequential order...done.
> Create files in random order...done.
> Stat files in random order...done.
> Delete files in random order...done.
> Version 1.96 ------Sequential Create------ --------Random Create--------
> fsdevel3 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
> files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
> 100:256:256/10 21348 52 +++++ +++ 32878 61 25286 60 +++++ +++ 25873 53
> Latency 746us 1926us 2553us 653us 118us 32250us
> 1.96,1.96,fsdevel3,1,1314379136,,,,,,,,,,,,,,100,256,256,,10,21348,52,+++++,+++,32878,61,25286,60,+++++,+++,25873,53,,,,,,,746us,1926us,2553us,653us,118us,32250us
NOTE: For ext4 I had to increase the number of files by factor 100 to
get any sane number (it would only print '+++++' otherwise). Running the
benchmark with the same numbers on xfs deleted in so slow delete
numbers, that it probably still would be busy to delete files by tomorrow.
The xfs file system was formated with these parameters:
> mkfs.xfs -f -i size=512 -i maxpct=90 -l lazy-count=1 -n size=64k /dev/mapper/vg0fsdev3-XFStest
ext4 was formated to have an inode size of 512B and to have a joural
size of 400MB.
Both file systems are mounted with "nobarrier" (real FhGFS production
systems usually have raid controllers with battery backups).
Any ideas why xfs is so slow with extended attributes? Without extended
attributes, so skipping the "-X" option in our patched bonnie also
results in slower Create numbers (about 4500 on xfs vs. 7500 on ext4)
compared to ext4, but that is 'only' factor 1.67 and not 50 or more as
with EAs.
Thanks,
Bernd
[1] Updated bonnie to support extended attributes:
https://bitbucket.org/aakef/bonnie/
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Deleting files with extended attributes is dead slow
2011-08-12 18:19 Deleting files with extended attributes is dead slow Bernd Schubert
@ 2011-08-12 20:47 ` Christoph Hellwig
2011-08-16 16:13 ` Christoph Hellwig
0 siblings, 1 reply; 8+ messages in thread
From: Christoph Hellwig @ 2011-08-12 20:47 UTC (permalink / raw)
To: Bernd Schubert; +Cc: linux-xfs
On Fri, Aug 12, 2011 at 08:19:53PM +0200, Bernd Schubert wrote:
> Hi there,
>
> with FhGFS we may use extended attributes to store file meta data
> and with ext3/ext4 that also works very well and the rate to create
> files and to write those EAs (create() + fsetxattr() is about 2.5
> to 3 times faster than with a create() + write(). Size of those EA
> data is about 256 bytes depending on the number of storage stripes.
> However, with XFS using extended attributes is *extremely* slow.
> Here are some numbers with ext4 and xfs using a patched [1] bonnie++
Currently XFS uses synchronous transactions when retiring inodes with
xattrs on them. So far I've not actually found a good reason for that,
so I suspect we can remove it. I'll do another audit of it, and will
send you a patch for it after doing basic QA.
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Deleting files with extended attributes is dead slow
2011-08-12 20:47 ` Christoph Hellwig
@ 2011-08-16 16:13 ` Christoph Hellwig
[not found] ` <4E4BBC98.7020501@itwm.fraunhofer.de>
0 siblings, 1 reply; 8+ messages in thread
From: Christoph Hellwig @ 2011-08-16 16:13 UTC (permalink / raw)
To: Bernd Schubert; +Cc: linux-xfs
The patch below should help with the performance of deleting files
that have external attributes. But I still wonder why you see
attributes outside the inode if you are using 512 byte inodes and around
256k of attrs. Can you check tat you really have external blocks for
attributes using xfs_bmap -a on the files in your workload. Can you
also check if this goes away using 1k or 2k inode sizes?
---
From: Christoph Hellwig <hch@lst.de>
Subject: xfs: avoid synchronous transactions when deleting attr blocks
Currently xfs_attr_inactive causes a synchronous transactions if we are
removing a file that has any extents allocated to the attribute fork. The
code looks a like a relict from the days before the busy extent list, but
with the busy extent list we avoid reusing data and attr extents that have
been freed but not commited yet, so this code is just as superflous as
the synchronous transactions for data blocks.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Index: xfs/fs/xfs/xfs_attr.c
===================================================================
--- xfs.orig/fs/xfs/xfs_attr.c 2011-08-15 14:31:15.485329718 -0700
+++ xfs/fs/xfs/xfs_attr.c 2011-08-15 14:31:32.025240113 -0700
@@ -823,18 +823,6 @@ xfs_attr_inactive(xfs_inode_t *dp)
if (error)
goto out;
- /*
- * Signal synchronous inactive transactions unless this is a
- * synchronous mount filesystem in which case we know that we're here
- * because we've been called out of xfs_inactive which means that the
- * last reference is gone and the unlink transaction has already hit
- * the disk so async inactive transactions are safe.
- */
- if (!(mp->m_flags & XFS_MOUNT_WSYNC)) {
- if (dp->i_d.di_anextents > 0)
- xfs_trans_set_sync(trans);
- }
-
error = xfs_itruncate_extents(&trans, dp, XFS_ATTR_FORK, 0);
if (error)
goto out;
Index: xfs/fs/xfs/xfs_bmap.c
===================================================================
--- xfs.orig/fs/xfs/xfs_bmap.c 2011-08-15 14:33:59.801106208 -0700
+++ xfs/fs/xfs/xfs_bmap.c 2011-08-16 09:01:24.716497619 -0700
@@ -3782,19 +3782,11 @@ xfs_bmap_compute_maxlevels(
* Routine to be called at transaction's end by xfs_bmapi, xfs_bunmapi
* caller. Frees all the extents that need freeing, which must be done
* last due to locking considerations. We never free any extents in
- * the first transaction. This is to allow the caller to make the first
- * transaction a synchronous one so that the pointers to the data being
- * broken in this transaction will be permanent before the data is actually
- * freed. This is necessary to prevent blocks from being reallocated
- * and written to before the free and reallocation are actually permanent.
- * We do not just make the first transaction synchronous here, because
- * there are more efficient ways to gain the same protection in some cases
- * (see the file truncation code).
+ * the first transaction.
*
* Return 1 if the given transaction was committed and a new one
* started, and 0 otherwise in the committed parameter.
*/
-/*ARGSUSED*/
int /* error */
xfs_bmap_finish(
xfs_trans_t **tp, /* transaction pointer addr */
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Deleting files with extended attributes is dead slow
[not found] ` <4E4BBC98.7020501@itwm.fraunhofer.de>
@ 2011-08-17 17:02 ` Christoph Hellwig
2011-08-17 17:39 ` Bernd Schubert
0 siblings, 1 reply; 8+ messages in thread
From: Christoph Hellwig @ 2011-08-17 17:02 UTC (permalink / raw)
To: Bernd Schubert; +Cc: Christoph Hellwig, linux-xfs
On Wed, Aug 17, 2011 at 03:05:28PM +0200, Bernd Schubert wrote:
> >(squeeze-x86_64)fslab2:~# xfs_bmap -a /mnt/xfs/Bonnie.29243/00000/00000027faJxifNb0n
> >/mnt/xfs/Bonnie.29243/00000/00000027faJxifNb0n:
> > 0: [0..7]: 92304..92311
>
> (Sorry, I have no idea what "0: [0..7]: 92304..9231" is supposed to
> tell me).
It means that you are having an extent spanning 8 blocks for xattr
storage, that map to physical blocks 92304 to 9231 in the filesystem.
It sounds to me like your workload has a lot more than 256 bytes of
xattrs, or the underlying code is doing something rather stupid.
> Looking at 'top' and 'iostat -x' outout, I noticed we are actually
> not limited by io to disk, but CPU bound. If you should be
> interested, I have attached 'perf record -g' and 'perf report -g'
> outout, of the bonnie file create (create + fsetfattr() ) phase.
It's mostly spending a lot of time on copying things into the CIL
buffers, which is expected and intentional as that allows for additional
parallelity. I you'd switch the workload to multiple intances doing
the create in parallel you should be able to scale to better numbers.
> > 100:256:256/10 37026 91 +++++ +++ 43691 93 35960 92 +++++ +++ 40708 92
> >Latency 4328us 765us 2960us 527us 440us 1075us
> >1.96,1.96,fslab2,1,1313594619,,,,,,,,,,,,,,100,256,256,,10,37026,91,+++++,+++,43691,93,35960,92,+++++,+++,40708,92,,,,,,,4328us,765us,2960us,527us,440us,1075us
>
>
> xfs:
> mkfs.xfs -f -i size=512 -i maxpct=90 -l lazy-count=1 -n size=64k /dev/sdd
Do 64k dir blocks actually help you with the workload? They also tend
to do a lot of useless memcpys in their current form, although these
didn't show up on your profile. Did you try using a larger inode size
as suggested in my previous mail?
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Deleting files with extended attributes is dead slow
2011-08-17 17:02 ` Christoph Hellwig
@ 2011-08-17 17:39 ` Bernd Schubert
2011-08-18 2:08 ` Dave Chinner
0 siblings, 1 reply; 8+ messages in thread
From: Bernd Schubert @ 2011-08-17 17:39 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: Bernd Schubert, linux-xfs
On 08/17/2011 07:02 PM, Christoph Hellwig wrote:
> On Wed, Aug 17, 2011 at 03:05:28PM +0200, Bernd Schubert wrote:
>>> (squeeze-x86_64)fslab2:~# xfs_bmap -a /mnt/xfs/Bonnie.29243/00000/00000027faJxifNb0n
>>> /mnt/xfs/Bonnie.29243/00000/00000027faJxifNb0n:
>>> 0: [0..7]: 92304..92311
>>
>> (Sorry, I have no idea what "0: [0..7]: 92304..9231" is supposed to
>> tell me).
>
> It means that you are having an extent spanning 8 blocks for xattr
> storage, that map to physical blocks 92304 to 9231 in the filesystem.
>
> It sounds to me like your workload has a lot more than 256 bytes of
> xattrs, or the underlying code is doing something rather stupid.
Well, the workload I described here is a controlled bonnie test, so
there cannot be more than 256 bytes (unless there is a bug in the code,
will double check later on).
>
>> Looking at 'top' and 'iostat -x' outout, I noticed we are actually
>> not limited by io to disk, but CPU bound. If you should be
>> interested, I have attached 'perf record -g' and 'perf report -g'
>> outout, of the bonnie file create (create + fsetfattr() ) phase.
>
> It's mostly spending a lot of time on copying things into the CIL
> buffers, which is expected and intentional as that allows for additional
> parallelity. I you'd switch the workload to multiple intances doing
> the create in parallel you should be able to scale to better numbers.
I just tried to bonnies in parallel and that didn't improve anything.
FhGFS code has several threads anyway. But it would be good, if the
underlying file system wouldn't take all the CPU time...
>
>>> 100:256:256/10 37026 91 +++++ +++ 43691 93 35960 92 +++++ +++ 40708 92
>>> Latency 4328us 765us 2960us 527us 440us 1075us
>>> 1.96,1.96,fslab2,1,1313594619,,,,,,,,,,,,,,100,256,256,,10,37026,91,+++++,+++,43691,93,35960,92,+++++,+++,40708,92,,,,,,,4328us,765us,2960us,527us,440us,1075us
>>
>>
>> xfs:
>> mkfs.xfs -f -i size=512 -i maxpct=90 -l lazy-count=1 -n size=64k /dev/sdd
>
> Do 64k dir blocks actually help you with the workload? They also tend
Also just tested, with or without doesn't improve anything.
> to do a lot of useless memcpys in their current form, although these
> didn't show up on your profile. Did you try using a larger inode size
> as suggested in my previous mail?
I just tried and now that I understand the xfs_bmap output, it is
interesting to see, that an xattr size up to 128 byte does not need an
extent + blocks, but 256 byte do have one extent and 8 blocks even with
an inode size of 2K. xfs_info tells me that isize=2048 was accepted. I
didn't test any sizes in between 128 and 256 byte yet.
Now while I can set the data/xattr size for the bonnie test to less than
256 byte, that is not so easy with our real target FhGFS ;)
Btw, the create() + fsetfattr() reate with 128B xattr data is between
13000 and 17000, so due to inlining much better than with 256 xattr.
Thanks,
Bernd
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Deleting files with extended attributes is dead slow
2011-08-17 17:39 ` Bernd Schubert
@ 2011-08-18 2:08 ` Dave Chinner
2011-08-18 3:05 ` Dave Chinner
0 siblings, 1 reply; 8+ messages in thread
From: Dave Chinner @ 2011-08-18 2:08 UTC (permalink / raw)
To: Bernd Schubert; +Cc: Christoph Hellwig, linux-xfs
On Wed, Aug 17, 2011 at 07:39:01PM +0200, Bernd Schubert wrote:
> On 08/17/2011 07:02 PM, Christoph Hellwig wrote:
> >On Wed, Aug 17, 2011 at 03:05:28PM +0200, Bernd Schubert wrote:
> >>>(squeeze-x86_64)fslab2:~# xfs_bmap -a /mnt/xfs/Bonnie.29243/00000/00000027faJxifNb0n
> >>>/mnt/xfs/Bonnie.29243/00000/00000027faJxifNb0n:
> >>> 0: [0..7]: 92304..92311
> >>
> >>(Sorry, I have no idea what "0: [0..7]: 92304..9231" is supposed to
> >>tell me).
> >
> >It means that you are having an extent spanning 8 blocks for xattr
> >storage, that map to physical blocks 92304 to 9231 in the filesystem.
> >
> >It sounds to me like your workload has a lot more than 256 bytes of
> >xattrs, or the underlying code is doing something rather stupid.
>
> Well, the workload I described here is a controlled bonnie test, so
> there cannot be more than 256 bytes (unless there is a bug in the
> code, will double check later on).
>
> >
> >>Looking at 'top' and 'iostat -x' outout, I noticed we are actually
> >>not limited by io to disk, but CPU bound. If you should be
> >>interested, I have attached 'perf record -g' and 'perf report -g'
> >>outout, of the bonnie file create (create + fsetfattr() ) phase.
> >
> >It's mostly spending a lot of time on copying things into the CIL
> >buffers, which is expected and intentional as that allows for additional
> >parallelity. I you'd switch the workload to multiple intances doing
> >the create in parallel you should be able to scale to better numbers.
>
> I just tried to bonnies in parallel and that didn't improve
> anything. FhGFS code has several threads anyway. But it would be
> good, if the underlying file system wouldn't take all the CPU
> time...
XFS directory algorithms are significantly more complex than ext4.
They trade off CPU usage for significantly better layout and
scalability at large sizes. i.e. CPU costs less than IO so we burn
more CPU to reduce IO. You don't see the benefits of that until
directories start to get large (e.g. > 100k entries) and you are
doing cold cache lookups.
> >>xfs:
> >>mkfs.xfs -f -i size=512 -i maxpct=90 -l lazy-count=1 -n size=64k /dev/sdd
What is the output of this command?
> >Do 64k dir blocks actually help you with the workload? They also tend
>
> Also just tested, with or without doesn't improve anything.
Right, 64k directory blocks make a difference on cold cache
traversals and lookups by flattening the btrees. They also make a
difference in create/unlink performance once you get over a few
million files in the one directory (once again due to reduced IO).
> >to do a lot of useless memcpys in their current form, although these
> >didn't show up on your profile. Did you try using a larger inode size
> >as suggested in my previous mail?
>
> I just tried and now that I understand the xfs_bmap output, it is
> interesting to see, that an xattr size up to 128 byte does not need
> an extent + blocks, but 256 byte do have one extent and 8 blocks
> even with an inode size of 2K. xfs_info tells me that isize=2048 was
> accepted. I didn't test any sizes in between 128 and 256 byte yet.
> Now while I can set the data/xattr size for the bonnie test to less
> than 256 byte, that is not so easy with our real target FhGFS ;)
That tells me your filesystem is either not using dynamic attribute
fork offsets or that code is broken. The output of the above mkfs
command will tell us what attribute fork behaviour is expected, so
which of the two cases you are seeing.
Also, what kernel are you testing on?
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Deleting files with extended attributes is dead slow
2011-08-18 2:08 ` Dave Chinner
@ 2011-08-18 3:05 ` Dave Chinner
2011-08-22 14:35 ` Christoph Hellwig
0 siblings, 1 reply; 8+ messages in thread
From: Dave Chinner @ 2011-08-18 3:05 UTC (permalink / raw)
To: Bernd Schubert; +Cc: Christoph Hellwig, linux-xfs
On Thu, Aug 18, 2011 at 12:08:48PM +1000, Dave Chinner wrote:
> On Wed, Aug 17, 2011 at 07:39:01PM +0200, Bernd Schubert wrote:
> > On 08/17/2011 07:02 PM, Christoph Hellwig wrote:
> > >On Wed, Aug 17, 2011 at 03:05:28PM +0200, Bernd Schubert wrote:
> > >>>(squeeze-x86_64)fslab2:~# xfs_bmap -a /mnt/xfs/Bonnie.29243/00000/00000027faJxifNb0n
> > >>>/mnt/xfs/Bonnie.29243/00000/00000027faJxifNb0n:
> > >>> 0: [0..7]: 92304..92311
> > >>
> > >>(Sorry, I have no idea what "0: [0..7]: 92304..9231" is supposed to
> > >>tell me).
> > >
> > >It means that you are having an extent spanning 8 blocks for xattr
> > >storage, that map to physical blocks 92304 to 9231 in the filesystem.
> > >
> > >It sounds to me like your workload has a lot more than 256 bytes of
> > >xattrs, or the underlying code is doing something rather stupid.
> >
> > Well, the workload I described here is a controlled bonnie test, so
> > there cannot be more than 256 bytes (unless there is a bug in the
> > code, will double check later on).
> >
> > >
> > >>Looking at 'top' and 'iostat -x' outout, I noticed we are actually
> > >>not limited by io to disk, but CPU bound. If you should be
> > >>interested, I have attached 'perf record -g' and 'perf report -g'
> > >>outout, of the bonnie file create (create + fsetfattr() ) phase.
> > >
> > >It's mostly spending a lot of time on copying things into the CIL
> > >buffers, which is expected and intentional as that allows for additional
> > >parallelity. I you'd switch the workload to multiple intances doing
> > >the create in parallel you should be able to scale to better numbers.
> >
> > I just tried to bonnies in parallel and that didn't improve
> > anything. FhGFS code has several threads anyway. But it would be
> > good, if the underlying file system wouldn't take all the CPU
> > time...
>
> XFS directory algorithms are significantly more complex than ext4.
> They trade off CPU usage for significantly better layout and
> scalability at large sizes. i.e. CPU costs less than IO so we burn
> more CPU to reduce IO. You don't see the benefits of that until
> directories start to get large (e.g. > 100k entries) and you are
> doing cold cache lookups.
>
> > >>xfs:
> > >>mkfs.xfs -f -i size=512 -i maxpct=90 -l lazy-count=1 -n size=64k /dev/sdd
>
> What is the output of this command?
>
> > >Do 64k dir blocks actually help you with the workload? They also tend
> >
> > Also just tested, with or without doesn't improve anything.
>
> Right, 64k directory blocks make a difference on cold cache
> traversals and lookups by flattening the btrees. They also make a
> difference in create/unlink performance once you get over a few
> million files in the one directory (once again due to reduced IO).
>
> > >to do a lot of useless memcpys in their current form, although these
> > >didn't show up on your profile. Did you try using a larger inode size
> > >as suggested in my previous mail?
> >
> > I just tried and now that I understand the xfs_bmap output, it is
> > interesting to see, that an xattr size up to 128 byte does not need
> > an extent + blocks, but 256 byte do have one extent and 8 blocks
> > even with an inode size of 2K. xfs_info tells me that isize=2048 was
> > accepted. I didn't test any sizes in between 128 and 256 byte yet.
> > Now while I can set the data/xattr size for the bonnie test to less
> > than 256 byte, that is not so easy with our real target FhGFS ;)
>
> That tells me your filesystem is either not using dynamic attribute
> fork offsets or that code is broken.
It is neither of these.
> The output of the above mkfs
> command will tell us what attribute fork behaviour is expected, so
> which of the two cases you are seeing.
>
> Also, what kernel are you testing on?
Ok, I've reproduced it on a 3.0-rc2 kernel with attr=2 and 2k
inodes. An attribute of 254 bytes stays in line:
....
u = (empty)
a.sfattr.hdr.totsize = 270
a.sfattr.hdr.count = 1
a.sfattr.list[0].namelen = 9
a.sfattr.list[0].valuelen = 254
a.sfattr.list[0].root = 0
a.sfattr.list[0].secure = 0
a.sfattr.list[0].name = "user.test"
a.sfattr.list[0].value = " ten chars ten chars ten chars ten chars
ten chars ten chars ten chars ten chars ten chars ten chars ten
chars ten chars ten chars ten chars ten chars ten chars ten chars
ten chars ten chars ten chars ten chars ten chars ten chars ten
chars ten chars ten"
but at 255 bytes:
u = (empty)
a.bmx[0] = [startoff,startblock,blockcount,extentflag] 0:[0,40,1,0]
it goes out of line. There's something strange happening there....
/me looks
#define XFS_ATTR_SF_ENTSIZE_MAX /* max space for name&value */ \
((1 << (NBBY*(int)sizeof(__uint8_t))) - 1)
There's the issue - shortform attribute structures (i.e. inline
attributes) have only 8 bits for the value/name lengths, so the
attribute is going out of line at a value length of 255 bytes.
So, the reason you are seeing this is that in line attributes must
be 254 bytes or smaller to remain in line regardless of the inode
size. If FhGFS is using multiple attributes smaller than 254 bytes,
then they will all stay inline until all the inode attribute fork
space is used. However, the first one that goes over this limit will
push them all out of line.
Unfortunately, that limit is fixed into the on-disk format for
attributes, so is kind of hard to change. :/
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Deleting files with extended attributes is dead slow
2011-08-18 3:05 ` Dave Chinner
@ 2011-08-22 14:35 ` Christoph Hellwig
0 siblings, 0 replies; 8+ messages in thread
From: Christoph Hellwig @ 2011-08-22 14:35 UTC (permalink / raw)
To: Dave Chinner; +Cc: Bernd Schubert, linux-xfs
Btw, one interesting thing I noticed is that xfs_attr_leaf_create always
zeroes and logs whe whole attr block. I'll need to audit this a bit
more, but from the highlevel POV I don't see why we can't simply just
logs the bits we actually added.
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2011-08-22 14:35 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-12 18:19 Deleting files with extended attributes is dead slow Bernd Schubert
2011-08-12 20:47 ` Christoph Hellwig
2011-08-16 16:13 ` Christoph Hellwig
[not found] ` <4E4BBC98.7020501@itwm.fraunhofer.de>
2011-08-17 17:02 ` Christoph Hellwig
2011-08-17 17:39 ` Bernd Schubert
2011-08-18 2:08 ` Dave Chinner
2011-08-18 3:05 ` Dave Chinner
2011-08-22 14:35 ` Christoph Hellwig
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox