From: Sergei Shtylyov <sshtylyov@mvista.com>
To: shaohua.li@intel.com
Cc: linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org,
jaxboe@fusionio.com, htejun@gmail.com, jgarzik@pobox.com,
hch@infradead.org, djwong@us.ibm.com
Subject: Re: [patch v2 2/3] block: hold queue if flush is running for non-queueable flush drive
Date: Wed, 04 May 2011 14:42:05 +0400 [thread overview]
Message-ID: <4DC12D7D.4060705@ru.mvista.com> (raw)
In-Reply-To: <20110504082115.270298766@sli10-conroe.sh.intel.com>
Hello.
On 04-05-2011 12:17, shaohua.li@intel.com wrote:
> In some drives, flush requests are non-queueable. When flush request is running,
> normal read/write requests can't run. If block layer dispatches such request,
> driver can't handle it and requeue it.
> Tejun suggested we can hold the queue when flush is running. This can avoid
> unnecessary requeue.
> Also this can improve performance. Say we have requests f1, w1, f2 (f is flush
> request, and w is write request). When f1 is running, queue will be hold, so w1
> will not be added to queue list. Just after f1 is finished, f2 will be
> dispatched. Since f1 already flushs cache out, f2 can be finished very quickly.
> In my test, the queue holding completely solves a regression introduced by
> commit 53d63e6b0dfb9588, which is about 20% regression running a sysbench fileio
Please specify that commit's summary -- for human readers. The ID is only
immediately usable to gitweb.
> workload.
> Signed-off-by: Shaohua Li <shaohua.li@intel.com>
[...]
> Index: linux/block/blk.h
> ===================================================================
> --- linux.orig/block/blk.h 2011-05-04 14:20:33.000000000 +0800
> +++ linux/block/blk.h 2011-05-04 16:09:42.000000000 +0800
> @@ -61,7 +61,17 @@ static inline struct request *__elv_next
> rq = list_entry_rq(q->queue_head.next);
> return rq;
> }
> -
> + /*
> + * Flush request is running and flush request isn't queeueable
Queueable.
WBR, Sergei
next prev parent reply other threads:[~2011-05-04 10:43 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-04 8:17 [patch v2 0/3] block: optimize flush for non-queueable flush drive shaohua.li
2011-05-04 8:17 ` [patch v2 1/3] block: add a non-queueable flush flag shaohua.li
2011-05-04 9:05 ` Tejun Heo
2011-05-04 8:17 ` [patch v2 2/3] block: hold queue if flush is running for non-queueable flush drive shaohua.li
2011-05-04 9:09 ` Tejun Heo
2011-05-04 10:42 ` Sergei Shtylyov [this message]
2011-05-04 8:17 ` [patch v2 3/3] SATA: enable non-queueable flush flag shaohua.li
2011-05-04 8:53 ` Tejun Heo
2011-05-04 10:29 ` Jeff Garzik
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=4DC12D7D.4060705@ru.mvista.com \
--to=sshtylyov@mvista.com \
--cc=djwong@us.ibm.com \
--cc=hch@infradead.org \
--cc=htejun@gmail.com \
--cc=jaxboe@fusionio.com \
--cc=jgarzik@pobox.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=shaohua.li@intel.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