diff options
author | Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> | 2021-01-28 13:28:17 +0300 |
---|---|---|
committer | Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> | 2021-05-04 11:37:26 +0300 |
commit | 684d18efd1a35b75a6625072c68e1b7ea70bd3a8 (patch) | |
tree | 9767781bf83b3026245bdc53f6d03bf8cd2f6cff /scripts/simplebench | |
parent | af2ac8514f57fc690849369ad1d6f9d65b1e9437 (diff) |
simplebench/bench-backup: add target-cache argument
Allow benchmark with different kinds of target cache.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Diffstat (limited to 'scripts/simplebench')
-rwxr-xr-x | scripts/simplebench/bench-backup.py | 33 | ||||
-rwxr-xr-x | 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 @@ Tests, in form source-dir-label:target-dir-label''', 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): |