disk performance strange/low

Christoph Hellwig hch at infradead.org
Wed Aug 26 12:56:04 CDT 2009


On Wed, Aug 26, 2009 at 07:20:36PM +0200, Michael Monnerie wrote:
> On Dienstag 18 August 2009 Christoph Hellwig wrote:
> > On Tue, Aug 18, 2009 at 04:08:05AM +0200, Michael Monnerie wrote:
> > > On Montag 17 August 2009 Christoph Hellwig wrote:
> > > > Yes, that sounds like the problem of the VM not feeding us enough
> > > > pages to write. ?What kernel is this on? ?Latest 2.6.31-rc has a
> > > > workaround for it.
> > >
> > > 2.6.27.23-0.1-xen from openSUSE 11.1
> > > I can't switch as I use it with the free Xen. Thanks for the info.
> >
> > Try backporting commit c8a4051c3731b6db224482218cfd535ab9393ff8 from
> > mainline - it should apply just fine to a 2.6.27-ish kernel.
> 
> Thank you. I'm not a patcher, could you tell me how to do that?

Just take the patch I attached and apply it using

	patch -p1 < xfs-nr-to-write.diff

if you want to make sure it applies cleanly do a

	patch -p1 --dry-run < xfs-nr-to-write.diff

beforee to check if it doesn't cause any reject.

After that rebuild your kernel.
-------------- next part --------------
commit c8a4051c3731b6db224482218cfd535ab9393ff8
Author: Eric Sandeen <sandeen at sandeen.net>
Date:   Fri Jul 31 00:02:17 2009 -0500

    xfs: bump up nr_to_write in xfs_vm_writepage
    
    VM calculation for nr_to_write seems off.  Bump it way
    up, this gets simple streaming writes zippy again.
    To be reviewed again after Jens' writeback changes.
    
    Signed-off-by: Christoph Hellwig <hch at infradead.org>
    Signed-off-by: Eric Sandeen <sandeen at sandeen.net>
    Cc: Chris Mason <chris.mason at oracle.com>
    Reviewed-by: Felix Blyakher <felixb at sgi.com>
    Signed-off-by: Felix Blyakher <felixb at sgi.com>

diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c
index 7ec89fc..aecf251 100644
--- a/fs/xfs/linux-2.6/xfs_aops.c
+++ b/fs/xfs/linux-2.6/xfs_aops.c
@@ -1268,6 +1268,14 @@ xfs_vm_writepage(
 	if (!page_has_buffers(page))
 		create_empty_buffers(page, 1 << inode->i_blkbits, 0);
 
+
+	/*
+	 *  VM calculation for nr_to_write seems off.  Bump it way
+	 *  up, this gets simple streaming writes zippy again.
+	 *  To be reviewed again after Jens' writeback changes.
+	 */
+	wbc->nr_to_write *= 4;
+
 	/*
 	 * Convert delayed allocate, unwritten or unmapped space
 	 * to real space and flush out to disk.


More information about the xfs mailing list