From: "Theodore Ts'o" <tytso@mit.edu>
To: Linux Kernel Developers List <linux-kernel@vger.kernel.org>
Cc: "Theodore Ts'o" <tytso@mit.edu>,
Venkatesh Srinivas <venkateshs@google.com>,
Rusty Russell <rusty@rustcorp.com.au>,
"Michael S. Tsirkin" <mst@redhat.com>,
virtio-dev@lists.oasis-open.org,
virtualization@lists.linux-foundation.org,
Frank Swiderski <fes@google.com>
Subject: [PATCH] virtio-blk: make the queue depth the max supportable by the hypervisor
Date: Fri, 14 Mar 2014 23:34:31 -0400 [thread overview]
Message-ID: <1394854471-25700-1-git-send-email-tytso@mit.edu> (raw)
In-Reply-To: <1394841445-16142-1-git-send-email-venkateshs@google.com>
The current virtio block sets a queue depth of 64, which is
insufficient for very fast devices. It has been demonstrated that
with a high IOPS device, using a queue depth of 256 can double the
IOPS which can be sustained.
As suggested by Venkatash Srinivas, set the queue depth by default to
be one half the the device's virtqueue, which is the maximum queue
depth that can be supported by the channel to the host OS (each I/O
request requires at least two VQ entries).
Also allow the queue depth to be something which can be set at module
load time or via a kernel boot-time parameter, for
testing/benchmarking purposes.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Venkatesh Srinivas <venkateshs@google.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: virtio-dev@lists.oasis-open.org
Cc: virtualization@lists.linux-foundation.org
Cc: Frank Swiderski <fes@google.com>
---
This is a combination of my patch and Vekatash's patch. I agree that
setting the default automatically is better than requiring the user to
set the value by hand.
drivers/block/virtio_blk.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 6a680d4..0f70c01 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -481,6 +481,9 @@ static struct blk_mq_ops virtio_mq_ops = {
.free_hctx = blk_mq_free_single_hw_queue,
};
+static int queue_depth = -1;
+module_param(queue_depth, int, 0444);
+
static struct blk_mq_reg virtio_mq_reg = {
.ops = &virtio_mq_ops,
.nr_hw_queues = 1,
@@ -551,9 +554,14 @@ static int virtblk_probe(struct virtio_device *vdev)
goto out_free_vq;
}
+ virtio_mq_reg.queue_depth = queue_depth > 0 ? queue_depth :
+ (vblk->vq->num_free / 2);
virtio_mq_reg.cmd_size =
sizeof(struct virtblk_req) +
sizeof(struct scatterlist) * sg_elems;
+ virtblk_name_format("vd", index, vblk->disk->disk_name, DISK_NAME_LEN);
+ pr_info("%s: using queue depth %d\n", vblk->disk->disk_name,
+ virtio_mq_reg.queue_depth);
q = vblk->disk->queue = blk_mq_init_queue(&virtio_mq_reg, vblk);
if (!q) {
@@ -565,8 +573,6 @@ static int virtblk_probe(struct virtio_device *vdev)
q->queuedata = vblk;
- virtblk_name_format("vd", index, vblk->disk->disk_name, DISK_NAME_LEN);
-
vblk->disk->major = major;
vblk->disk->first_minor = index_to_minor(index);
vblk->disk->private_data = vblk;
--
1.9.0
next parent reply other threads:[~2014-03-15 3:34 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1394841445-16142-1-git-send-email-venkateshs@google.com>
2014-03-15 3:34 ` Theodore Ts'o [this message]
2014-03-15 10:57 ` Konrad Rzeszutek Wilk
2014-03-15 13:20 ` Theodore Ts'o
2014-03-15 13:57 ` Christoph Hellwig
2014-03-15 15:13 ` Theodore Ts'o
2014-03-17 0:42 ` Rusty Russell
2014-03-17 5:40 ` tytso
2014-03-19 6:28 ` Rusty Russell
2014-03-19 17:48 ` Venkatesh Srinivas
2014-03-25 18:50 ` Venkatesh Srinivas
2014-03-31 3:52 ` Rusty Russell
2014-04-01 2:27 ` Theodore Ts'o
2014-04-01 10:49 ` Stefan Hajnoczi
2014-04-02 7:36 ` Rusty Russell
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=1394854471-25700-1-git-send-email-tytso@mit.edu \
--to=tytso@mit.edu \
--cc=fes@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mst@redhat.com \
--cc=rusty@rustcorp.com.au \
--cc=venkateshs@google.com \
--cc=virtio-dev@lists.oasis-open.org \
--cc=virtualization@lists.linux-foundation.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
all inboxes | Powered by JetHome®