qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

bench-example.py (2493B)


      1 #!/usr/bin/env python3
      2 #
      3 # Benchmark example
      4 #
      5 # Copyright (c) 2019 Virtuozzo International GmbH.
      6 #
      7 # This program is free software; you can redistribute it and/or modify
      8 # it under the terms of the GNU General Public License as published by
      9 # the Free Software Foundation; either version 2 of the License, or
     10 # (at your option) any later version.
     11 #
     12 # This program is distributed in the hope that it will be useful,
     13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 # GNU General Public License for more details.
     16 #
     17 # You should have received a copy of the GNU General Public License
     18 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     19 #
     20 
     21 import simplebench
     22 from results_to_text import results_to_text
     23 from bench_block_job import bench_block_copy, drv_file, drv_nbd
     24 
     25 
     26 def bench_func(env, case):
     27     """ Handle one "cell" of benchmarking table. """
     28     return bench_block_copy(env['qemu_binary'], env['cmd'], {},
     29                             case['source'], case['target'])
     30 
     31 
     32 # You may set the following five variables to correct values, to turn this
     33 # example to real benchmark.
     34 ssd_source = '/path-to-raw-source-image-at-ssd'
     35 ssd_target = '/path-to-raw-target-image-at-ssd'
     36 hdd_target = '/path-to-raw-source-image-at-hdd'
     37 nbd_ip = 'nbd-ip-addr'
     38 nbd_port = 'nbd-port-number'
     39 
     40 # Test-cases are "rows" in benchmark resulting table, 'id' is a caption for
     41 # the row, other fields are handled by bench_func.
     42 test_cases = [
     43     {
     44         'id': 'ssd -> ssd',
     45         'source': drv_file(ssd_source),
     46         'target': drv_file(ssd_target)
     47     },
     48     {
     49         'id': 'ssd -> hdd',
     50         'source': drv_file(ssd_source),
     51         'target': drv_file(hdd_target)
     52     },
     53     {
     54         'id': 'ssd -> nbd',
     55         'source': drv_file(ssd_source),
     56         'target': drv_nbd(nbd_ip, nbd_port)
     57     },
     58 ]
     59 
     60 # Test-envs are "columns" in benchmark resulting table, 'id is a caption for
     61 # the column, other fields are handled by bench_func.
     62 test_envs = [
     63     {
     64         'id': 'backup-1',
     65         'cmd': 'blockdev-backup',
     66         'qemu_binary': '/path-to-qemu-binary-1'
     67     },
     68     {
     69         'id': 'backup-2',
     70         'cmd': 'blockdev-backup',
     71         'qemu_binary': '/path-to-qemu-binary-2'
     72     },
     73     {
     74         'id': 'mirror',
     75         'cmd': 'blockdev-mirror',
     76         'qemu_binary': '/path-to-qemu-binary-1'
     77     }
     78 ]
     79 
     80 result = simplebench.bench(bench_func, test_envs, test_cases, count=3)
     81 print(results_to_text(result))