Re: howto keep xfs directory searches fast for a long time

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Aug 13, 2012 at 06:44:34PM +0200, Michael Monnerie wrote:
> I guess the best I can do is run du/find every morning to pre-fill the 
> inode caches on that VM, so when someone connects the search runs fast.

You're doing it wrong. This is exactly what updatedb (run via cron)
and locate (the updatedb search tool) are designed for.

$ time locate xfs_admin
.....
real    0m0.618s
user    0m0.608s
sys     0m0.004s
$
$ time find / -name xfs_admin*
....
real    0m18.045s
user    0m2.936s
sys     0m9.293s
$ time find / -name xfs_admin* > /dev/null 2>&1

real    0m1.794s
user    0m0.688s
sys     0m1.068s
$ time find / -name xfs_admin* > /dev/null 2>&1

real    0m1.752s
user    0m0.724s
sys     0m0.984s
$ time find / -name xfs_admin* > /dev/null 2>&1

real    0m1.768s
user    0m0.732s
sys     0m0.996s

locate is 3x faster than even a cached find on a filesystem with a
million inodes in it and enough RAM to cache them all. And if you
have limited RAM, (i.e. cold cache) it is 30x faster than running
the find on a RAID0 of SSDs that can do > 90,000 random 4k read
IOPS. The differences for spinning rust will be much, much
greater...

Use the right tool for the job....

> The current VM shows this:
> 
> # df -i /disks/big1/
> Filesystem                    Inodes   IUsed      IFree IUse% Mounted on
> /dev/mapper/sp1--sha 1717934464 1255882 1716678582    1% /disks/big1
> # df /disks/big1/
> Filesystem               1K-blocks       Used  Available Use% Mounted on
> /dev/mapper/sp1--sha 8587585536 6004421384 2583164152  70% /disks/big1
> 
> So 6TB data in 1.3 mio inodes. The VM caches that easily, seems that's 
> the only real thing to optimize against.
> 
> http://xfs.org/index.php/XFS_FAQ#Q:_I_want_to_tune_my_XFS_filesystems_for_.3Csomething.3E

I appreciate the sentiment, but as the the person that wrote the
original entry and directs the most people to it, I'm probably just
going to remove this addition. The whole point of that FAQ is to
say "unless you *know* you have a problem, don't touch anything".

What you've added essentially says "if you *think* you might need
<something>, then do...". This train of thought is *exactly* what
the FAQ entry is advising *against* doing because in most cases what
people -think- they need is incorrect or misguided.

You've even provided a great example to emphasise the point the
entry is making - you need to understand the workload before
tweaking knobs. Your workload is occassional fast searches of files,
which is exactly what updatedb/locate provides without kernel
or filesystem tweaks...

> CFQ seems bad, but there's no documented way out of that.

If you know what CFQ is, then you know how to change it. If you
don't know what it is, then you don't know enough to make an
enlightened choice as a replacement. If you lacking knowledge of
basic storage concepts and setup, then you're reading the wrong
document. Google is only a browser tab away.

BTW, if you want to add "how to tune XFS" entries, then create a
completely new wiki page about it that first points in big red,
shiny letters that the above FAQ entry should be read first, and
that questions about optimising XFS for bonnie++ and other
benchmarks will be directed to /dev/null. Structure it to provide
information about the basics - alignment, striping, data layout,
metadata layout, RAID configurations, etc and how the different XFS
mkfs and mount options interact with the different storage
configurations.

If we are going to provide tuning guidelines on the XFS wiki, then
it needs to be structured, comprehensive and correct. If you want
random bits of marginally valid information abou ttuning XFS from
random websites around the web, Google is only a browser tab
away....

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs


[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux