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