public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Joe Landman <joe.landman@gmail.com>
To: xfs@oss.sgi.com
Subject: Re: Issues and new to the group
Date: Thu, 26 Sep 2013 10:59:41 -0400	[thread overview]
Message-ID: <52444BDD.9060100@gmail.com> (raw)
In-Reply-To: <100f01cebaba$0ae84280$20b8c780$@host2max.com>

On 09/26/2013 09:12 AM, Ronnie Tartar wrote:
> Stan,
>
> Thanks for the reply.
>
> My fragmentation is:
>
> [root@AP-FS1 ~]# xfs_db -c frag -r /dev/xvdb1
> actual 10470159, ideal 10409782, fragmentation factor 0.58%

This was never likely the cause ...

[...]

> This is running virtualized, definitely not a rust bucket.  It's x5570 cpus

... well, this is likely the cause (virtualized)

> with MD3200 Array with light I/O.
>
> Seems like i/o wait is not problem, system% is problem.  Is this the OS
> trying to find spot for these files?

 From your previous description

> takes.  The folders are image folders that have anywhere between 5 to
> 10 million images in each folder.

The combination of very large folders, and virtualization is working 
against you.  Couple that with an old (ancient by Linux standards) xfs 
in the virtual CentOS 5.9 system, and you aren't going to have much joy 
with this without changing a few things.

First and foremost:

Can you change from one single large folder to a heirarchical set of 
folders?  The single large folder means any metadata operation (ls, 
stat, open, close) has a huge set of lists to traverse.  It will work, 
albiet slowly.  As a rule of thumb, we try to make sure our users don't 
go much beyond 10k files/folder.  If they need to, building a heirarchy 
of folders slightly increases management complexity, but keeps the lists 
that are needed to be traversed much smaller.

A strategy for doing this:  If your files are named "aaaa0001" 
"aaaa0002" ... "zzzz9999" or similar, then you can chop off the first 
letter, and make a directory of it, and then put all files starting with 
that letter in that directory.  Then within each of those directories, 
do the same thing with the second letter.  This gets you 676 directories 
and about 15k files per directory.  Much faster directory operations. 
Much smaller lists to traverse.

If you can't change the layout, this is a much harder problem to solve, 
though you could do it by using one very large file, maintaining your 
own start/end and file metadata in other files, and writing your files 
at specific offsets (start and end above).  This isn't a good solution 
unless you know how to write file systems.

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

  parent reply	other threads:[~2013-09-26 14:59 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-26 11:47 Issues and new to the group Ronnie Tartar
2013-09-26 12:06 ` Stan Hoeppner
2013-09-26 13:12   ` Ronnie Tartar
2013-09-26 13:30     ` Ronnie Tartar
2013-09-26 14:23       ` Eric Sandeen
2013-09-26 23:46         ` Stan Hoeppner
2013-09-26 14:59     ` Joe Landman [this message]
2013-09-26 15:26       ` Jay Ashworth
2013-09-26 22:47         ` Dave Chinner
2013-09-26 22:16       ` Dave Chinner
2013-09-27  2:17         ` Joe Landman
2013-09-27  2:39       ` Stan Hoeppner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52444BDD.9060100@gmail.com \
    --to=joe.landman@gmail.com \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox