From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: qemu-stable@nongnu.org, Alberto Garcia <berto@igalia.com>,
Kevin Wolf <kwolf@redhat.com>
Subject: [Qemu-devel] [PATCH 38/67] qemu-iotests: Test I/O in a single drive from a throttling group
Date: Wed, 14 Dec 2016 18:44:32 -0600 [thread overview]
Message-ID: <1481762701-4587-39-git-send-email-mdroth@linux.vnet.ibm.com> (raw)
In-Reply-To: <1481762701-4587-1-git-send-email-mdroth@linux.vnet.ibm.com>
From: Alberto Garcia <berto@igalia.com>
iotest 093 contains a test that creates a throttling group with
several drives and performs I/O in all of them. This patch adds a new
test that creates a similar setup but only performs I/O in one of the
drives at the same time.
This is useful to test that the round robin algorithm is behaving
properly in these scenarios, and is specifically written using the
regression introduced in 27ccdd52598290f0f8b58be56e as an example.
Signed-off-by: Alberto Garcia <berto@igalia.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
(cherry picked from commit a26ddb43963e77aeebc2a4f011d27b2d9c017f21)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
tests/qemu-iotests/093 | 33 ++++++++++++++++++++++++++++-----
tests/qemu-iotests/093.out | 4 ++--
2 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/tests/qemu-iotests/093 b/tests/qemu-iotests/093
index ffcb271..2ed393a 100755
--- a/tests/qemu-iotests/093
+++ b/tests/qemu-iotests/093
@@ -53,7 +53,7 @@ class ThrottleTestCase(iotests.QMPTestCase):
result = self.vm.qmp("block_set_io_throttle", conv_keys=False, **params)
self.assert_qmp(result, 'return', {})
- def do_test_throttle(self, ndrives, seconds, params):
+ def do_test_throttle(self, ndrives, seconds, params, first_drive = 0):
def check_limit(limit, num):
# IO throttling algorithm is discrete, allow 10% error so the test
# is more robust
@@ -85,12 +85,14 @@ class ThrottleTestCase(iotests.QMPTestCase):
# Send I/O requests to all drives
for i in range(rd_nr):
for drive in range(0, ndrives):
- self.vm.hmp_qemu_io("drive%d" % drive, "aio_read %d %d" %
+ idx = first_drive + drive
+ self.vm.hmp_qemu_io("drive%d" % idx, "aio_read %d %d" %
(i * rq_size, rq_size))
for i in range(wr_nr):
for drive in range(0, ndrives):
- self.vm.hmp_qemu_io("drive%d" % drive, "aio_write %d %d" %
+ idx = first_drive + drive
+ self.vm.hmp_qemu_io("drive%d" % idx, "aio_write %d %d" %
(i * rq_size, rq_size))
# We'll store the I/O stats for each drive in these arrays
@@ -105,15 +107,17 @@ class ThrottleTestCase(iotests.QMPTestCase):
# Read the stats before advancing the clock
for i in range(0, ndrives):
+ idx = first_drive + i
start_rd_bytes[i], start_rd_iops[i], start_wr_bytes[i], \
- start_wr_iops[i] = self.blockstats('drive%d' % i)
+ start_wr_iops[i] = self.blockstats('drive%d' % idx)
self.vm.qtest("clock_step %d" % ns)
# Read the stats after advancing the clock
for i in range(0, ndrives):
+ idx = first_drive + i
end_rd_bytes[i], end_rd_iops[i], end_wr_bytes[i], \
- end_wr_iops[i] = self.blockstats('drive%d' % i)
+ end_wr_iops[i] = self.blockstats('drive%d' % idx)
# Check that the I/O is within the limits and evenly distributed
for i in range(0, ndrives):
@@ -129,6 +133,7 @@ class ThrottleTestCase(iotests.QMPTestCase):
self.assertTrue(check_limit(params['iops_rd'], rd_iops))
self.assertTrue(check_limit(params['iops_wr'], wr_iops))
+ # Connect N drives to a VM and test I/O in all of them
def test_all(self):
params = {"bps": 4096,
"bps_rd": 4096,
@@ -146,6 +151,24 @@ class ThrottleTestCase(iotests.QMPTestCase):
self.configure_throttle(ndrives, limits)
self.do_test_throttle(ndrives, 5, limits)
+ # Connect N drives to a VM and test I/O in just one of them a time
+ def test_one(self):
+ params = {"bps": 4096,
+ "bps_rd": 4096,
+ "bps_wr": 4096,
+ "iops": 10,
+ "iops_rd": 10,
+ "iops_wr": 10,
+ }
+ # Repeat the test for each one of the drives
+ for drive in range(0, self.max_drives):
+ # Pick each out of all possible params and test
+ for tk in params:
+ limits = dict([(k, 0) for k in params])
+ limits[tk] = params[tk] * self.max_drives
+ self.configure_throttle(self.max_drives, limits)
+ self.do_test_throttle(1, 5, limits, drive)
+
def test_burst(self):
params = {"bps": 4096,
"bps_rd": 4096,
diff --git a/tests/qemu-iotests/093.out b/tests/qemu-iotests/093.out
index 914e373..2f7d390 100644
--- a/tests/qemu-iotests/093.out
+++ b/tests/qemu-iotests/093.out
@@ -1,5 +1,5 @@
-.....
+.......
----------------------------------------------------------------------
-Ran 5 tests
+Ran 7 tests
OK
--
1.9.1
next prev parent reply other threads:[~2016-12-15 0:46 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-15 0:43 [Qemu-devel] [PATCH 00/67] Patch Round-up for stable 2.7.1, freeze on 2016-12-20 Michael Roth
2016-12-15 0:43 ` [Qemu-devel] [PATCH 01/67] linux-headers: update Michael Roth
2016-12-15 0:43 ` [Qemu-devel] [PATCH 02/67] hw/ppc/spapr: Move code related to "ibm, pa-features" to a separate function Michael Roth
2016-12-15 0:43 ` [Qemu-devel] [PATCH 03/67] hw/ppc/spapr: Fix the selection of the processor features Michael Roth
2016-12-15 0:43 ` [Qemu-devel] [PATCH 04/67] ppc: Check the availability of transactional memory Michael Roth
2016-12-15 0:43 ` [Qemu-devel] [PATCH 05/67] virtio: zero vq->inuse in virtio_reset() Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 06/67] virtio-balloon: discard virtqueue element on reset Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 07/67] vnc: fix qemu crash because of SIGSEGV Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 08/67] 9pfs: fix potential segfault during walk Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 09/67] scsi: mptsas: use g_new0 to allocate MPTSASRequest object Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 10/67] scsi: pvscsi: limit process IO loop to ring size Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 11/67] qemu-char: avoid segfault if user lacks of permisson of a given logfile Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 12/67] scsi-disk: change disk serial length from 20 to 36 Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 13/67] vmw_pvscsi: check page count while initialising descriptor rings Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 14/67] scsi: mptconfig: fix an assert expression Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 15/67] scsi: mptconfig: fix misuse of MPTSAS_CONFIG_PACK Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 16/67] crypto: ensure XTS is only used with ciphers with 16 byte blocks Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 17/67] iothread: Stop threads before main() quits Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 18/67] scsi-disk: Cleaning up around tray open state Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 19/67] virtio-scsi: Don't abort when media is ejected Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 20/67] ahci: clear aiocb in ncq_cb Michael Roth
2016-12-19 23:07 ` John Snow
2016-12-21 16:56 ` Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 21/67] s390x/css: handle cssid 255 correctly Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 22/67] vfio/pci: Fix regression in MSI routing configuration Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 23/67] qcow2: fix encryption during cow of sectors Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 24/67] iscsi: Fix divide-by-zero regression on raw SG devices Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 25/67] block: reintroduce bdrv_flush_all Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 26/67] qemu: use bdrv_flush_all for vm_stop et al Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 27/67] block-backend: remove blk_flush_all Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 28/67] migrate: Fix cpu-throttle-increment regression in HMP Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 29/67] qht: simplify qht_reset_size Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 30/67] qht: fix unlock-after-free segfault upon resizing Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 31/67] char: fix missing return in error path for chardev TLS init Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 32/67] qmp: fix object-add assert() without props Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 33/67] qapi: Fix crash when 'any' or 'null' parameter is missing Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 34/67] tests/test-qmp-input-strict: Cover missing struct members Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 35/67] rbd: shift byte count as a 64-bit value Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 36/67] ppc/kvm: Mark 64kB page size support as disabled if not available Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 37/67] throttle: Correct access to wrong BlockBackendPublic structures Michael Roth
2016-12-15 0:44 ` Michael Roth [this message]
2016-12-15 0:44 ` [Qemu-devel] [PATCH 39/67] net: rtl8139: limit processing of ring descriptors Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 40/67] memory: Replace skip_dump flag with "ram_device" Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 41/67] memory: Don't use memcpy for ram_device regions Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 42/67] acpi/ipmi: Initialize the fwinfo before fetching it Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 43/67] net: fix sending of data with -net socket, listen backend Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 44/67] target-ppc: Fix CPU migration from qemu-2.6 <-> later versions Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 45/67] virtio: allow per-device-class legacy features Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 46/67] virtio-net: mark VIRTIO_NET_F_GSO as legacy Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 47/67] block: Don't mark node clean after failed flush Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 48/67] vhost: adapt vhost_verify_ring_mappings() to virtio 1 ring layout Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 49/67] slirp: Fix access to freed memory Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 50/67] qcow2: Inform block layer about discard boundaries Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 51/67] block: Let write zeroes fallback work even with small max_transfer Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 52/67] block: Return -ENOTSUP rather than assert on unaligned discards Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 53/67] block: Pass unaligned discard requests to drivers Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 54/67] block/curl: Use BDRV_SECTOR_SIZE Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 55/67] block/curl: Fix return value from curl_read_cb Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 56/67] block/curl: Remember all sockets Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 57/67] block/curl: Do not wait for data beyond EOF Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 58/67] vhost: drop legacy vring layout bits Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 59/67] ivshmem: Fix 64 bit memory bar configuration Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 60/67] pci-assign: sync MSI/MSI-X cap and table with PCIDevice Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 61/67] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 62/67] intel_iommu: fix incorrect device invalidate Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 63/67] vhost-user-test: Use libqos instead of pxe-virtio.rom Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 64/67] vl: Delay initialization of memory backends Michael Roth
2016-12-15 0:44 ` [Qemu-devel] [PATCH 65/67] Revert "megasas: remove useless check for cmd->frame" Michael Roth
2016-12-15 0:45 ` [Qemu-devel] [PATCH 66/67] msmouse: Fix segfault caused by free the chr before chardev cleanup Michael Roth
2016-12-15 0:45 ` [Qemu-devel] [PATCH 67/67] vfio/pci: Fix vfio_rtl8168_quirk_data_read address offset Michael Roth
2016-12-15 6:14 ` [Qemu-devel] [PATCH 00/67] Patch Round-up for stable 2.7.1, freeze on 2016-12-20 Stefan Weil
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=1481762701-4587-39-git-send-email-mdroth@linux.vnet.ibm.com \
--to=mdroth@linux.vnet.ibm.com \
--cc=berto@igalia.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@nongnu.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;
as well as URLs for NNTP newsgroup(s).