Thread (20 messages) 20 messages, 4 authors, 2013-01-18

Re: [PATCH v2.4 0/3] mm/fs: Remove unnecessary waiting for stable pages

From: Darrick J. Wong <hidden>
Date: 2013-01-17 02:49:02
Also in: linux-fsdevel, lkml

On Tue, Jan 15, 2013 at 04:33:59PM -0800, Andrew Morton wrote:
On Tue, 15 Jan 2013 16:22:46 -0800
"Darrick J. Wong" [off-list ref] wrote:
quoted
quoted
quoted
This patchset has been tested on 3.8.0-rc3 on x64 with ext3, ext4, and xfs.
What does everyone think about queueing this for 3.9?
This patchset lacks any performance testing results.
On my setup (various consumer SSDs and spinny disks, none of which support
T10DIF) I see that the maximum write latency with these patches applied is
about half of what it is without the patches.  But don't take my word for it;
Andy Lutomirski[1] says that his soft-rt latency-sensitive programs no longer
freak out when he applies the patch set.  Afaik, Google and Taobao run custom
kernels with all this turned off, so they should see similar latency
improvements too.

Obviously, I see no difference on the DIF disk.
We're talking 2001 here ;) Try leaping into your retro time machine and
run dbench on ext2 on a spinny disk and I expect you'll see significant
performance changes.

The problem back in 2001 was that we held lock_page() across the
duration of page writeback, so if another thread came in and tried to
dirty the page, it would block on lock_page() until IO completion.  I
can't remember whether writeback would also block read().  Maybe it did,
in which case the effects of this patchset won't be as dramatic as were
the effects of splitting PG_lock into PG_lock and PG_writeback.
Now that you've stirred my memory, I /do/ dimly recall that Linux waited for
writeback back in the old days.  At least we'll be back to that.  As a side
note, the average latency of a write to a non-DIF disk dropped down to nearly
nothing.
quoted
quoted
For clarity's sake, please provide a description of which filesystems
(and under which circumstances) will block behind writeback when
userspace is attempting to dirty a page.  Both before and, particularly,
after this patchset.  IOW, did everything get fixed?
Heh, this is complicated.

Before this patchset, all filesystems would block, regardless of whether or not
it was necessary.  ext3 would wait, but still generate occasional checksum
errors.  The network filesystems were left to do their own thing, so they'd
wait too.

After this patchset, all the disk filesystems except ext3 and btrfs will wait
only if the hardware requires it.  ext3 (if necessary) snapshots pages instead
of blocking, and btrfs provides its own bdi so the mm will never wait.  Network
filesystems haven't been touched, so either they provide their own wait code,
or they don't block at all.  The blocking behavior is back to what it was
before 3.0 if you don't have a disk requiring stable page writes.

(I will reconfirm this statement before sending out the next iteration.)

I will of course add all of this to the cover message.
OK, thanks, that sounds reasonable.

Do we generate nice kernel messages (at mount or device-probe time)
which will permit people to work out which strategy their device/fs is
using?
No.  /sys/devices/virtual/bdi/*/stable_pages_required will tell you
stable pages are on or not, but so far only ext3 uses snapshots and the rest
just wait.  Do you think a printk would be useful?

--D
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help