mirror of https://github.com/xemu-project/xemu.git
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>
This commit is contained in:
parent
af2ac8514f
commit
684d18efd1
|
@ -65,13 +65,26 @@ def bench(args):
|
||||||
test_cases.append({'id': t, 'source': source, 'target': nbd_drv})
|
test_cases.append({'id': t, 'source': source, 'target': nbd_drv})
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
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'
|
fname = dirs[dst] + '/test-target'
|
||||||
if args.compressed:
|
if args.compressed:
|
||||||
fname += '.qcow2'
|
fname += '.qcow2'
|
||||||
target = drv_file(fname)
|
target = drv_file(fname, o_direct=o_direct)
|
||||||
if args.compressed:
|
if args.compressed:
|
||||||
target = drv_qcow2(target)
|
target = drv_qcow2(target)
|
||||||
test_cases.append({'id': t, 'source': source, 'target': 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>])
|
binaries = [] # list of (<label>, <path>, [<options>])
|
||||||
for i, q in enumerate(args.env):
|
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
|
Use compressed backup. It automatically means
|
||||||
automatically creating qcow2 target with
|
automatically creating qcow2 target with
|
||||||
lazy_refcounts for each test run''', action='store_true')
|
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())
|
bench(p.parse_args())
|
||||||
|
|
|
@ -115,9 +115,13 @@ def bench_block_copy(qemu_binary, cmd, cmd_options, source, target):
|
||||||
'-blockdev', json.dumps(target)])
|
'-blockdev', json.dumps(target)])
|
||||||
|
|
||||||
|
|
||||||
def drv_file(filename):
|
def drv_file(filename, o_direct=True):
|
||||||
return {'driver': 'file', 'filename': filename,
|
node = {'driver': 'file', 'filename': filename}
|
||||||
'cache': {'direct': True}, 'aio': 'native'}
|
if o_direct:
|
||||||
|
node['cache'] = {'direct': True}
|
||||||
|
node['aio'] = 'native'
|
||||||
|
|
||||||
|
return node
|
||||||
|
|
||||||
|
|
||||||
def drv_nbd(host, port):
|
def drv_nbd(host, port):
|
||||||
|
|
Loading…
Reference in New Issue