1*409437e1SDaniel P. Berrange# 2*409437e1SDaniel P. Berrange# Migration test scenario comparison mapping 3*409437e1SDaniel P. Berrange# 4*409437e1SDaniel P. Berrange# Copyright (c) 2016 Red Hat, Inc. 5*409437e1SDaniel P. Berrange# 6*409437e1SDaniel P. Berrange# This library is free software; you can redistribute it and/or 7*409437e1SDaniel P. Berrange# modify it under the terms of the GNU Lesser General Public 8*409437e1SDaniel P. Berrange# License as published by the Free Software Foundation; either 9*409437e1SDaniel P. Berrange# version 2 of the License, or (at your option) any later version. 10*409437e1SDaniel P. Berrange# 11*409437e1SDaniel P. Berrange# This library is distributed in the hope that it will be useful, 12*409437e1SDaniel P. Berrange# but WITHOUT ANY WARRANTY; without even the implied warranty of 13*409437e1SDaniel P. Berrange# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14*409437e1SDaniel P. Berrange# Lesser General Public License for more details. 15*409437e1SDaniel P. Berrange# 16*409437e1SDaniel P. Berrange# You should have received a copy of the GNU Lesser General Public 17*409437e1SDaniel P. Berrange# License along with this library; if not, see <http://www.gnu.org/licenses/>. 18*409437e1SDaniel P. Berrange# 19*409437e1SDaniel P. Berrange 20*409437e1SDaniel P. Berrangefrom guestperf.scenario import Scenario 21*409437e1SDaniel P. Berrange 22*409437e1SDaniel P. Berrangeclass Comparison(object): 23*409437e1SDaniel P. Berrange def __init__(self, name, scenarios): 24*409437e1SDaniel P. Berrange self._name = name 25*409437e1SDaniel P. Berrange self._scenarios = scenarios 26*409437e1SDaniel P. Berrange 27*409437e1SDaniel P. BerrangeCOMPARISONS = [ 28*409437e1SDaniel P. Berrange # Looking at effect of pausing guest during migration 29*409437e1SDaniel P. Berrange # at various stages of iteration over RAM 30*409437e1SDaniel P. Berrange Comparison("pause-iters", scenarios = [ 31*409437e1SDaniel P. Berrange Scenario("pause-iters-0", 32*409437e1SDaniel P. Berrange pause=True, pause_iters=0), 33*409437e1SDaniel P. Berrange Scenario("pause-iters-1", 34*409437e1SDaniel P. Berrange pause=True, pause_iters=1), 35*409437e1SDaniel P. Berrange Scenario("pause-iters-5", 36*409437e1SDaniel P. Berrange pause=True, pause_iters=5), 37*409437e1SDaniel P. Berrange Scenario("pause-iters-20", 38*409437e1SDaniel P. Berrange pause=True, pause_iters=20), 39*409437e1SDaniel P. Berrange ]), 40*409437e1SDaniel P. Berrange 41*409437e1SDaniel P. Berrange 42*409437e1SDaniel P. Berrange # Looking at use of post-copy in relation to bandwidth 43*409437e1SDaniel P. Berrange # available for migration 44*409437e1SDaniel P. Berrange Comparison("post-copy-bandwidth", scenarios = [ 45*409437e1SDaniel P. Berrange Scenario("post-copy-bw-100mbs", 46*409437e1SDaniel P. Berrange post_copy=True, bandwidth=12), 47*409437e1SDaniel P. Berrange Scenario("post-copy-bw-300mbs", 48*409437e1SDaniel P. Berrange post_copy=True, bandwidth=37), 49*409437e1SDaniel P. Berrange Scenario("post-copy-bw-1gbs", 50*409437e1SDaniel P. Berrange post_copy=True, bandwidth=125), 51*409437e1SDaniel P. Berrange Scenario("post-copy-bw-10gbs", 52*409437e1SDaniel P. Berrange post_copy=True, bandwidth=1250), 53*409437e1SDaniel P. Berrange Scenario("post-copy-bw-100gbs", 54*409437e1SDaniel P. Berrange post_copy=True, bandwidth=12500), 55*409437e1SDaniel P. Berrange ]), 56*409437e1SDaniel P. Berrange 57*409437e1SDaniel P. Berrange 58*409437e1SDaniel P. Berrange # Looking at effect of starting post-copy at different 59*409437e1SDaniel P. Berrange # stages of the migration 60*409437e1SDaniel P. Berrange Comparison("post-copy-iters", scenarios = [ 61*409437e1SDaniel P. Berrange Scenario("post-copy-iters-0", 62*409437e1SDaniel P. Berrange post_copy=True, post_copy_iters=0), 63*409437e1SDaniel P. Berrange Scenario("post-copy-iters-1", 64*409437e1SDaniel P. Berrange post_copy=True, post_copy_iters=1), 65*409437e1SDaniel P. Berrange Scenario("post-copy-iters-5", 66*409437e1SDaniel P. Berrange post_copy=True, post_copy_iters=5), 67*409437e1SDaniel P. Berrange Scenario("post-copy-iters-20", 68*409437e1SDaniel P. Berrange post_copy=True, post_copy_iters=20), 69*409437e1SDaniel P. Berrange ]), 70*409437e1SDaniel P. Berrange 71*409437e1SDaniel P. Berrange 72*409437e1SDaniel P. Berrange # Looking at effect of auto-converge with different 73*409437e1SDaniel P. Berrange # throttling percentage step rates 74*409437e1SDaniel P. Berrange Comparison("auto-converge-iters", scenarios = [ 75*409437e1SDaniel P. Berrange Scenario("auto-converge-step-5", 76*409437e1SDaniel P. Berrange auto_converge=True, auto_converge_step=5), 77*409437e1SDaniel P. Berrange Scenario("auto-converge-step-10", 78*409437e1SDaniel P. Berrange auto_converge=True, auto_converge_step=10), 79*409437e1SDaniel P. Berrange Scenario("auto-converge-step-20", 80*409437e1SDaniel P. Berrange auto_converge=True, auto_converge_step=20), 81*409437e1SDaniel P. Berrange ]), 82*409437e1SDaniel P. Berrange 83*409437e1SDaniel P. Berrange 84*409437e1SDaniel P. Berrange # Looking at use of auto-converge in relation to bandwidth 85*409437e1SDaniel P. Berrange # available for migration 86*409437e1SDaniel P. Berrange Comparison("auto-converge-bandwidth", scenarios = [ 87*409437e1SDaniel P. Berrange Scenario("auto-converge-bw-100mbs", 88*409437e1SDaniel P. Berrange auto_converge=True, bandwidth=12), 89*409437e1SDaniel P. Berrange Scenario("auto-converge-bw-300mbs", 90*409437e1SDaniel P. Berrange auto_converge=True, bandwidth=37), 91*409437e1SDaniel P. Berrange Scenario("auto-converge-bw-1gbs", 92*409437e1SDaniel P. Berrange auto_converge=True, bandwidth=125), 93*409437e1SDaniel P. Berrange Scenario("auto-converge-bw-10gbs", 94*409437e1SDaniel P. Berrange auto_converge=True, bandwidth=1250), 95*409437e1SDaniel P. Berrange Scenario("auto-converge-bw-100gbs", 96*409437e1SDaniel P. Berrange auto_converge=True, bandwidth=12500), 97*409437e1SDaniel P. Berrange ]), 98*409437e1SDaniel P. Berrange 99*409437e1SDaniel P. Berrange 100*409437e1SDaniel P. Berrange # Looking at effect of multi-thread compression with 101*409437e1SDaniel P. Berrange # varying numbers of threads 102*409437e1SDaniel P. Berrange Comparison("compr-mt", scenarios = [ 103*409437e1SDaniel P. Berrange Scenario("compr-mt-threads-1", 104*409437e1SDaniel P. Berrange compression_mt=True, compression_mt_threads=1), 105*409437e1SDaniel P. Berrange Scenario("compr-mt-threads-2", 106*409437e1SDaniel P. Berrange compression_mt=True, compression_mt_threads=2), 107*409437e1SDaniel P. Berrange Scenario("compr-mt-threads-4", 108*409437e1SDaniel P. Berrange compression_mt=True, compression_mt_threads=4), 109*409437e1SDaniel P. Berrange ]), 110*409437e1SDaniel P. Berrange 111*409437e1SDaniel P. Berrange 112*409437e1SDaniel P. Berrange # Looking at effect of xbzrle compression with varying 113*409437e1SDaniel P. Berrange # cache sizes 114*409437e1SDaniel P. Berrange Comparison("compr-xbzrle", scenarios = [ 115*409437e1SDaniel P. Berrange Scenario("compr-xbzrle-cache-5", 116*409437e1SDaniel P. Berrange compression_xbzrle=True, compression_xbzrle_cache=5), 117*409437e1SDaniel P. Berrange Scenario("compr-xbzrle-cache-10", 118*409437e1SDaniel P. Berrange compression_xbzrle=True, compression_xbzrle_cache=10), 119*409437e1SDaniel P. Berrange Scenario("compr-xbzrle-cache-20", 120*409437e1SDaniel P. Berrange compression_xbzrle=True, compression_xbzrle_cache=10), 121*409437e1SDaniel P. Berrange Scenario("compr-xbzrle-cache-50", 122*409437e1SDaniel P. Berrange compression_xbzrle=True, compression_xbzrle_cache=50), 123*409437e1SDaniel P. Berrange ]), 124*409437e1SDaniel P. Berrange] 125