[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 4/8] simplebench/bench-backup: add target-cache argument
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PATCH v2 4/8] simplebench/bench-backup: add target-cache argument |
Date: |
Thu, 4 Mar 2021 13:17:34 +0300 |
Allow benchmark with different kinds of target cache.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
scripts/simplebench/bench-backup.py | 33 ++++++++++++++++++++------
scripts/simplebench/bench_block_job.py | 10 +++++---
2 files changed, 33 insertions(+), 10 deletions(-)
diff --git a/scripts/simplebench/bench-backup.py
b/scripts/simplebench/bench-backup.py
index 72eae85bb1..fbc85f266f 100755
--- a/scripts/simplebench/bench-backup.py
+++ b/scripts/simplebench/bench-backup.py
@@ -65,13 +65,26 @@ def bench(args):
test_cases.append({'id': t, 'source': source, 'target': nbd_drv})
continue
- fname = dirs[dst] + '/test-target'
- if args.compressed:
- fname += '.qcow2'
- target = drv_file(fname)
- if args.compressed:
- target = drv_qcow2(target)
- test_cases.append({'id': t, 'source': source, 'target': target})
+ if args.target_cache == 'both':
+ target_caches = ['direct', 'cached']
+ else:
+ target_caches = [args.target_cache]
+
+ for c in target_caches:
+ o_direct = c == 'direct'
+ fname = dirs[dst] + '/test-target'
+ if args.compressed:
+ fname += '.qcow2'
+ target = drv_file(fname, o_direct=o_direct)
+ if args.compressed:
+ target = drv_qcow2(target)
+
+ test_id = t
+ if args.target_cache == 'both':
+ test_id += f'({c})'
+
+ test_cases.append({'id': test_id, 'source': source,
+ 'target': target})
binaries = [] # list of (<label>, <path>, [<options>])
for i, q in enumerate(args.env):
@@ -186,5 +199,11 @@ def __call__(self, parser, namespace, values,
option_string=None):
Use compressed backup. It automatically means
automatically creating qcow2 target with
lazy_refcounts for each test run''', action='store_true')
+ p.add_argument('--target-cache', help='''\
+Setup cache for target nodes. Options:
+ direct: default, use O_DIRECT and aio=native
+ cached: use system cache (Qemu default) and aio=threads (Qemu default)
+ both: generate two test cases for each src:dst pair''',
+ default='direct', choices=('direct', 'cached', 'both'))
bench(p.parse_args())
diff --git a/scripts/simplebench/bench_block_job.py
b/scripts/simplebench/bench_block_job.py
index 08f86ed9c1..8f8385ccce 100755
--- a/scripts/simplebench/bench_block_job.py
+++ b/scripts/simplebench/bench_block_job.py
@@ -115,9 +115,13 @@ def bench_block_copy(qemu_binary, cmd, cmd_options,
source, target):
'-blockdev', json.dumps(target)])
-def drv_file(filename):
- return {'driver': 'file', 'filename': filename,
- 'cache': {'direct': True}, 'aio': 'native'}
+def drv_file(filename, o_direct=True):
+ node = {'driver': 'file', 'filename': filename}
+ if o_direct:
+ node['cache'] = {'direct': True}
+ node['aio'] = 'native'
+
+ return node
def drv_nbd(host, port):
--
2.29.2
- [PATCH v2 5/8] simplebench/bench_block_job: handle error in BLOCK_JOB_COMPLETED, (continued)
- [PATCH v2 5/8] simplebench/bench_block_job: handle error in BLOCK_JOB_COMPLETED, Vladimir Sementsov-Ogievskiy, 2021/03/04
- [PATCH v2 2/8] simplebench: bench_one(): support count=1, Vladimir Sementsov-Ogievskiy, 2021/03/04
- [PATCH v2 6/8] simplebench/bench-backup: support qcow2 source files, Vladimir Sementsov-Ogievskiy, 2021/03/04
- [PATCH v2 3/8] simplebench/bench-backup: add --compressed option, Vladimir Sementsov-Ogievskiy, 2021/03/04
- [PATCH v2 7/8] simplebench/bench-backup: add --count and --no-initial-run, Vladimir Sementsov-Ogievskiy, 2021/03/04
- [PATCH v2 4/8] simplebench/bench-backup: add target-cache argument,
Vladimir Sementsov-Ogievskiy <=
- [PATCH v2 8/8] simplebench/bench_block_job: drop caches before test run, Vladimir Sementsov-Ogievskiy, 2021/03/04
[PATCH v2 9/8] MAINTAINERS: update Benchmark util: add git tree, Vladimir Sementsov-Ogievskiy, 2021/03/04