xfs
[Top] [All Lists]

Re: mysterious dbench results

To: Rajagopal Ananthanarayanan <ananth@xxxxxxx>
Subject: Re: mysterious dbench results
From: Jens Axboe <axboe@xxxxxxx>
Date: Tue, 20 Feb 2001 22:59:31 +0100
Cc: Thomas Graichen <graichen@xxxxxxxxxxxxx>, linux-xfs@xxxxxxxxxxx
In-reply-to: <3A92E0A3.8592B42E@xxxxxxx>; from ananth@xxxxxxx on Tue, Feb 20, 2001 at 01:24:51PM -0800
References: <96nvna$goj$1@xxxxxxxxxxxxxxxxxxxxxx> <news2mail-96o1pc$6nm$1@xxxxxxxxxxxxxxxxxxxxxx> <96ot5r$ev3$1@xxxxxxxxxxxxxxxxxxxxxx> <news2mail-96p228$ujq$1@xxxxxxxxxxxxxxxxxxxxxx> <3A92E0A3.8592B42E@xxxxxxx>
Sender: owner-linux-xfs@xxxxxxxxxxx
On Tue, Feb 20 2001, Rajagopal Ananthanarayanan wrote:
> One reason for these problems could be that
> XFS pages are not balanced properly in memory.
> I've been experimenting with attaching buffers
> to all XFS pages & then let the flush_dirty_buffers
> methods take care of the write-outs. Attached is
> an experimental patch that might improve the situation.
> Please note that this code is work-in-progress so use
> it only on a test system.

Another reason could be that because xfs ships kio writes,
the elevator is effectively a noop. You don't do the merge
check of course, but then the insertion scan is also skipped.
So xfs ends up being a fifo request queueing.

> +#ifdef REQ_DEBUG
> +#define CHECK_REQ(req, i) \
> +     do { \
> +             if ((req->bh == req->bhtail && req->bh->b_reqnext) || \
> +                     (req->bh != req->bhtail && !req->bh->b_reqnext)) \
> +                     req_foo(req, el_ret, 1); \
> +     } while (0);
> +
> +void
> +req_foo(struct request *req, int el_ret, int i)
> +{
> +     printk("reqest 0x%p inconsistent (elret %d i %d)\n", req, el_ret, i);
> +}

To be honest, this looks very worthless. If we get the above wrong,
the machine will very quickly corrupt data and go down.
end_that_request_first would also complain about destroyed buffer
list, which is enough of a checkup.

-- 
Jens Axboe


<Prev in Thread] Current Thread [Next in Thread>