[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 24/27] Recipes and jobs for running unixbench both on host and guest
From: Dario Faggioli <raistlin@xxxxxxxx> Recipes are defined for running unixbench on baremetal, PV and HVM guests, with similar HW resources. Jobs making use of those recipes are instantiated too. Aim is making investigating performances loss due to virtualization overhead easy and automatable. In this case, rebooting the host is necessary (to boot it baremetal, rather than on Dom0), and that makes leak checks impossible. A mechanism is therefore introduced for specifying, in sg-run-job, that for a particular job, we don't want the leak checks. Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx> Cc: Wei Liu <wei.liu2@xxxxxxxxxx> Cc: Ian Campbell <Ian.Campbell@xxxxxxxxxx> Cc: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> --- README | 11 +++++++++++ make-bench-flight | 20 ++++++++++++++++++++ sg-run-job | 33 +++++++++++++++++++++++++++++++-- 3 files changed, 62 insertions(+), 2 deletions(-) diff --git a/README b/README index b3880b5..1e777df 100644 --- a/README +++ b/README @@ -200,6 +200,17 @@ bench-$BENCHNAME-$ARCH-<XEN_OPTS>-<GUEST_OPTS> <GUEST_OPTS> tells about the guest's configuration (e.g., whether it's HVM or PV, number of vCPUs, RAM, etc.). +bench-hostcmp-$BENCHNAME-$ARCH-<XEN_OPTS>-<GUEST_OPTS> + + A benchmarking job, for comparing baremetal and guest performances. + This runs benchmark $BENCHNAME on a $ARCH baremetal host, and on + PV and HVM guests running on a $ARCH hypervisor and dom0. + + In the remainder of the job's name, <XEN_OPTS> tells something + about Xen's configuration (e.g., what scheduler will be used); + <GUEST_OPTS> tells about the guest's configuration (e.g., whether + it's HVM or PV, number of vCPUs, RAM, etc.). + NB: $ARCH (and $XENARCH etc) are Debian arch names, i386, amd64, armhf. Standalone Mode diff --git a/make-bench-flight b/make-bench-flight index 125f244..d41cbbd 100755 --- a/make-bench-flight +++ b/make-bench-flight @@ -109,12 +109,32 @@ do_kernbench_tests () { all_hostflags=$most_hostflags } +do_hostcmp_unixbench_tests () { + sched=$1 + + # x86_64 only (for now) + if [ $xenarch != amd64 ]; then + return + fi + # "homogeneous" tests only (for now) + if [ $xenarch != $dom0arch ]; then + return + fi + + job_create_test \ + bench-hostcmp-unixbench-$xenarch-$sched bench-hostcmp-unixbench \ + xl $xenarch $dom0arch xen_boot_append="sched=$sched" max_bench_cpus=16 \ + max_bench_mem=24576 $debian_runvars bios=seabios unixbench_params="-i 3" \ + debbenchhvm_image=debian-7.2.0-amd64-CD-1.iso all_hostflags=$most_hostflags +} + test_matrix_do_one () { for s in credit credit2; do for t in pv hvm; do do_unixbench_tests $t $s 4 4096 # 4 vcpus, 4GB RAM do_kernbench_tests $t $s 4 4096 done + do_hostcmp_unixbench_tests $s done } diff --git a/sg-run-job b/sg-run-job index 32c94db..5954032 100755 --- a/sg-run-job +++ b/sg-run-job @@ -30,10 +30,17 @@ proc run-job {job} { set anyfailed 0 jobdb::prepare $job + set do_leak_check 1 set nh [need-hosts/$jobinfo(recipe)] if {![string compare $nh BUILD]} { set need_xen_hosts {} set need_build_host 1 + } elseif {[string match REBOOT* $nh]} { + # no leak checks for tests that reboot the host + set do_leak_check 0 + set nh [lreplace $nh 0 0] + set need_xen_hosts $nh + set need_build_host 0 } else { set need_xen_hosts $nh set need_build_host 0 @@ -54,10 +61,10 @@ proc run-job {job} { per-host-ts . xen-install/@ ts-xen-install per-host-ts . xen-boot/@ ts-host-reboot - per-host-ts . =(*) {ts-leak-check basis} + if {$do_leak_check} {per-host-ts . =(*) {ts-leak-check basis} } if {$ok} { catching-otherwise fail run-job/$jobinfo(recipe) } - per-host-ts . = {ts-leak-check check} + if {$do_leak_check} {per-host-ts . = {ts-leak-check check} } if {!$need_build_host} { per-host-ts !broken capture-logs/@(*) ts-logs-capture @@ -381,6 +388,28 @@ proc run-job/bench-kernbench-hvm {} { bench-kernbench-guest debianhvm } +proc need-hosts/bench-hostcmp-unixbench {} { return {REBOOT host} } +proc run-job/bench-hostcmp-unixbench {} { + # Run benchmark in a PV guest + set g debbenchpv + run-ts . = ts-debian-install + host $g + run-ts . = ts-debian-fixup + host $g + run-ts . = ts-bench-hostcmp-guest-prep + host $g + bench-unixbench-guest $g + # Run benchmark in an HVM guest + set g debbenchhvm + run-ts . = ts-debian-hvm-install + host $g + run-ts . = ts-guest-stop + host $g + run-ts . = ts-bench-hostcmp-guest-prep + host $g + bench-unixbench-guest $g + # Run benchmark on the host + run-ts . = ts-bench-hostcmp-host-prep + run-ts . = ts-host-reboot + bench-unixbench-host + run-ts . = ts-bench-hostcmp-post + run-ts . = ts-host-reboot +} + #---------- builds ---------- proc need-hosts/build {} { return BUILD } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |