From: Duncan <1i5t5.duncan@cox.net>
To: linux-btrfs@vger.kernel.org
Subject: Re: Very slow filesystem
Date: Thu, 5 Jun 2014 19:53:42 +0000 (UTC) [thread overview]
Message-ID: <pan$95296$7c52a8f8$5f80de1d$977b2dd9@cox.net> (raw)
In-Reply-To: CAGqmi77dGTaZOT8u=XDMnYnDxhNoWhrhjZtHpD35OB28VvY8YQ@mail.gmail.com
Timofey Titovets posted on Thu, 05 Jun 2014 19:13:08 +0300 as excerpted:
> 2014-06-05 18:52 GMT+03:00 Igor M <igork20@gmail.com>:
>> One more question. Is there any other way to find out file
>> fragmentation ?
>> I just copied 35Gb file on new btrfs filesystem (compressed) and
>> filefrag reports 282275 extents found. This can't be right ?
> hes, because filefrag show compressed block (128kbite) as one extent.
Correct. Which is why my original answer had this:
>>> While compression changes things up a bit (filefrag doesn't know
>>> how to deal with it yet and its report isn't reliable),
I skipped over the "why" at the time as it wasn't necessary for the then-
current discussion, but indeed, the reason is because filefrag counts
each 128 KiB block as a separate fragment because it doesn't understand
them, and as a result, it's not (currently) usable for btrfs-compressed
files.
They (the btrfs, filefrag, and kernel folks) are working on teaching
filefrag about the problem so it can report correct information, but the
approach being taken is to setup generic kernel functionality to report
that information to filefrag, such that other filesystems can use the
same functionality, which makes it a rather more complicated project than
a simple one-shot fix for btrfs by itself would be. So while the problem
is indeed being actively worked on, it could be some time before we
actually have a filefrag that's accurate in btrfs-compressed-file
situations, but once we do, we can be confident the solution is a correct
one that can be used well into the future by btrfs and other filesystems
as well, not just a brittle hack of a few minutes to a day that can't be
used for anything else and that could well break again two kernel cycles
down the road.
Unfortunately, I know of nothing else that can report that information,
so the only real suggestion I have is to either turn off compression or
forget about tracking individual file fragmentation for now and go only
on performance.
But as it happens, the NOCOW file attribute turns off compression (as
well as checksumming) for that file anyway, because in-place rewrite
would otherwise trigger complex issues and race conditions that are a
risk to the data as well as performance, which is why traditional non-COW
filesystems don't tend to offer these features in the first place.
Btrfs' normal COW nature makes these features possible, but as this
thread already explores, unfortunately simply isn't suitable for certain
access patterns.
So if the file is properly (that is, at creation) set NOCOW, filefrag
should indeed be accurate, because the file won't be (btrfs-)compressed.
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
next prev parent reply other threads:[~2014-06-05 19:54 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-04 22:15 Very slow filesystem Igor M
2014-06-04 22:27 ` Fajar A. Nugraha
2014-06-04 22:40 ` Roman Mamedov
2014-06-04 22:45 ` Igor M
2014-06-04 23:17 ` Timofey Titovets
2014-06-05 3:05 ` Duncan
2014-06-05 3:22 ` Fajar A. Nugraha
2014-06-05 4:45 ` Duncan
2014-06-05 7:50 ` Igor M
2014-06-05 10:54 ` Russell Coker
2014-06-05 15:52 ` Igor M
2014-06-05 16:13 ` Timofey Titovets
2014-06-05 19:53 ` Duncan [this message]
2014-06-06 19:06 ` Mitch Harder
2014-06-06 19:59 ` Duncan
2014-06-07 2:29 ` Russell Coker
2014-06-05 8:08 ` Erkki Seppala
2014-06-05 8:12 ` Erkki Seppala
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='pan$95296$7c52a8f8$5f80de1d$977b2dd9@cox.net' \
--to=1i5t5.duncan@cox.net \
--cc=linux-btrfs@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).