virtio-blk: base queue-depth on virtqueue ringsize or module param
authorRusty Russell <rusty@rustcorp.com.au>
Wed, 19 Mar 2014 06:38:24 +0000 (17:08 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Mon, 24 Mar 2014 01:50:18 +0000 (12:20 +1030)
commitfc4324b4597c4eb8907207e82f9a6acec84dd335
treee26df11a67a5eb36c29d08e57467e33692308e69
parentb1ee30ae6ec4aa1e711bdab7e17d6c531e492294
virtio-blk: base queue-depth on virtqueue ringsize or module param

Venkatash spake thus:

  virtio-blk set the default queue depth to 64 requests, which was
  insufficient for high-IOPS devices. Instead set the blk-queue depth to
  the device's virtqueue depth divided by two (each I/O requires at least
  two VQ entries).

But behold, Ted added a module parameter:

  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.

And I rewrote it substantially, mainly to take
VIRTIO_RING_F_INDIRECT_DESC into account.

As QEMU sets the vq size for PCI to 128, Venkatash's patch wouldn't
have made a change.  This version does (since QEMU also offers
VIRTIO_RING_F_INDIRECT_DESC.

Inspired-by: "Theodore Ts'o" <tytso@mit.edu>
Based-on-the-true-story-of: Venkatesh Srinivas <venkateshs@google.com>
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>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/block/virtio_blk.c