1212c1933SFabiano Rosas# 2212c1933SFabiano Rosas# Migration test scenario comparison mapping 3212c1933SFabiano Rosas# 4212c1933SFabiano Rosas# Copyright (c) 2016 Red Hat, Inc. 5212c1933SFabiano Rosas# 6212c1933SFabiano Rosas# This library is free software; you can redistribute it and/or 7212c1933SFabiano Rosas# modify it under the terms of the GNU Lesser General Public 8212c1933SFabiano Rosas# License as published by the Free Software Foundation; either 9212c1933SFabiano Rosas# version 2.1 of the License, or (at your option) any later version. 10212c1933SFabiano Rosas# 11212c1933SFabiano Rosas# This library is distributed in the hope that it will be useful, 12212c1933SFabiano Rosas# but WITHOUT ANY WARRANTY; without even the implied warranty of 13212c1933SFabiano Rosas# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14212c1933SFabiano Rosas# Lesser General Public License for more details. 15212c1933SFabiano Rosas# 16212c1933SFabiano Rosas# You should have received a copy of the GNU Lesser General Public 17212c1933SFabiano Rosas# License along with this library; if not, see <http://www.gnu.org/licenses/>. 18212c1933SFabiano Rosas# 19212c1933SFabiano Rosas 20212c1933SFabiano Rosasfrom guestperf.scenario import Scenario 21212c1933SFabiano Rosas 22212c1933SFabiano Rosasclass Comparison(object): 23212c1933SFabiano Rosas def __init__(self, name, scenarios): 24212c1933SFabiano Rosas self._name = name 25212c1933SFabiano Rosas self._scenarios = scenarios 26212c1933SFabiano Rosas 27212c1933SFabiano RosasCOMPARISONS = [ 28212c1933SFabiano Rosas # Looking at effect of pausing guest during migration 29212c1933SFabiano Rosas # at various stages of iteration over RAM 30212c1933SFabiano Rosas Comparison("pause-iters", scenarios = [ 31212c1933SFabiano Rosas Scenario("pause-iters-0", 32212c1933SFabiano Rosas pause=True, pause_iters=0), 33212c1933SFabiano Rosas Scenario("pause-iters-1", 34212c1933SFabiano Rosas pause=True, pause_iters=1), 35212c1933SFabiano Rosas Scenario("pause-iters-5", 36212c1933SFabiano Rosas pause=True, pause_iters=5), 37212c1933SFabiano Rosas Scenario("pause-iters-20", 38212c1933SFabiano Rosas pause=True, pause_iters=20), 39212c1933SFabiano Rosas ]), 40212c1933SFabiano Rosas 41212c1933SFabiano Rosas 42212c1933SFabiano Rosas # Looking at use of post-copy in relation to bandwidth 43212c1933SFabiano Rosas # available for migration 44212c1933SFabiano Rosas Comparison("post-copy-bandwidth", scenarios = [ 45212c1933SFabiano Rosas Scenario("post-copy-bw-100mbs", 46212c1933SFabiano Rosas post_copy=True, bandwidth=12), 47212c1933SFabiano Rosas Scenario("post-copy-bw-300mbs", 48212c1933SFabiano Rosas post_copy=True, bandwidth=37), 49212c1933SFabiano Rosas Scenario("post-copy-bw-1gbs", 50212c1933SFabiano Rosas post_copy=True, bandwidth=125), 51212c1933SFabiano Rosas Scenario("post-copy-bw-10gbs", 52212c1933SFabiano Rosas post_copy=True, bandwidth=1250), 53212c1933SFabiano Rosas Scenario("post-copy-bw-100gbs", 54212c1933SFabiano Rosas post_copy=True, bandwidth=12500), 55212c1933SFabiano Rosas ]), 56212c1933SFabiano Rosas 57212c1933SFabiano Rosas 58212c1933SFabiano Rosas # Looking at effect of starting post-copy at different 59212c1933SFabiano Rosas # stages of the migration 60212c1933SFabiano Rosas Comparison("post-copy-iters", scenarios = [ 61212c1933SFabiano Rosas Scenario("post-copy-iters-0", 62212c1933SFabiano Rosas post_copy=True, post_copy_iters=0), 63212c1933SFabiano Rosas Scenario("post-copy-iters-1", 64212c1933SFabiano Rosas post_copy=True, post_copy_iters=1), 65212c1933SFabiano Rosas Scenario("post-copy-iters-5", 66212c1933SFabiano Rosas post_copy=True, post_copy_iters=5), 67212c1933SFabiano Rosas Scenario("post-copy-iters-20", 68212c1933SFabiano Rosas post_copy=True, post_copy_iters=20), 69212c1933SFabiano Rosas ]), 70212c1933SFabiano Rosas 71212c1933SFabiano Rosas 72212c1933SFabiano Rosas # Looking at effect of auto-converge with different 73212c1933SFabiano Rosas # throttling percentage step rates 74212c1933SFabiano Rosas Comparison("auto-converge-iters", scenarios = [ 75212c1933SFabiano Rosas Scenario("auto-converge-step-5", 76212c1933SFabiano Rosas auto_converge=True, auto_converge_step=5), 77212c1933SFabiano Rosas Scenario("auto-converge-step-10", 78212c1933SFabiano Rosas auto_converge=True, auto_converge_step=10), 79212c1933SFabiano Rosas Scenario("auto-converge-step-20", 80212c1933SFabiano Rosas auto_converge=True, auto_converge_step=20), 81212c1933SFabiano Rosas ]), 82212c1933SFabiano Rosas 83212c1933SFabiano Rosas 84212c1933SFabiano Rosas # Looking at use of auto-converge in relation to bandwidth 85212c1933SFabiano Rosas # available for migration 86212c1933SFabiano Rosas Comparison("auto-converge-bandwidth", scenarios = [ 87212c1933SFabiano Rosas Scenario("auto-converge-bw-100mbs", 88212c1933SFabiano Rosas auto_converge=True, bandwidth=12), 89212c1933SFabiano Rosas Scenario("auto-converge-bw-300mbs", 90212c1933SFabiano Rosas auto_converge=True, bandwidth=37), 91212c1933SFabiano Rosas Scenario("auto-converge-bw-1gbs", 92212c1933SFabiano Rosas auto_converge=True, bandwidth=125), 93212c1933SFabiano Rosas Scenario("auto-converge-bw-10gbs", 94212c1933SFabiano Rosas auto_converge=True, bandwidth=1250), 95212c1933SFabiano Rosas Scenario("auto-converge-bw-100gbs", 96212c1933SFabiano Rosas auto_converge=True, bandwidth=12500), 97212c1933SFabiano Rosas ]), 98212c1933SFabiano Rosas 99212c1933SFabiano Rosas 100212c1933SFabiano Rosas # Looking at effect of multi-thread compression with 101212c1933SFabiano Rosas # varying numbers of threads 102212c1933SFabiano Rosas Comparison("compr-mt", scenarios = [ 103212c1933SFabiano Rosas Scenario("compr-mt-threads-1", 104212c1933SFabiano Rosas compression_mt=True, compression_mt_threads=1), 105212c1933SFabiano Rosas Scenario("compr-mt-threads-2", 106212c1933SFabiano Rosas compression_mt=True, compression_mt_threads=2), 107212c1933SFabiano Rosas Scenario("compr-mt-threads-4", 108212c1933SFabiano Rosas compression_mt=True, compression_mt_threads=4), 109212c1933SFabiano Rosas ]), 110212c1933SFabiano Rosas 111212c1933SFabiano Rosas 112212c1933SFabiano Rosas # Looking at effect of xbzrle compression with varying 113212c1933SFabiano Rosas # cache sizes 114212c1933SFabiano Rosas Comparison("compr-xbzrle", scenarios = [ 115212c1933SFabiano Rosas Scenario("compr-xbzrle-cache-5", 116212c1933SFabiano Rosas compression_xbzrle=True, compression_xbzrle_cache=5), 117212c1933SFabiano Rosas Scenario("compr-xbzrle-cache-10", 118212c1933SFabiano Rosas compression_xbzrle=True, compression_xbzrle_cache=10), 119212c1933SFabiano Rosas Scenario("compr-xbzrle-cache-20", 120212c1933SFabiano Rosas compression_xbzrle=True, compression_xbzrle_cache=10), 121212c1933SFabiano Rosas Scenario("compr-xbzrle-cache-50", 122212c1933SFabiano Rosas compression_xbzrle=True, compression_xbzrle_cache=50), 123212c1933SFabiano Rosas ]), 124212c1933SFabiano Rosas 125212c1933SFabiano Rosas 126212c1933SFabiano Rosas # Looking at effect of multifd with 127212c1933SFabiano Rosas # varying numbers of channels 128212c1933SFabiano Rosas Comparison("compr-multifd", scenarios = [ 129212c1933SFabiano Rosas Scenario("compr-multifd-channels-4", 13042f5975cSHyman Huang multifd=True, multifd_channels=4), 131212c1933SFabiano Rosas Scenario("compr-multifd-channels-8", 132212c1933SFabiano Rosas multifd=True, multifd_channels=8), 133212c1933SFabiano Rosas Scenario("compr-multifd-channels-32", 134212c1933SFabiano Rosas multifd=True, multifd_channels=32), 135212c1933SFabiano Rosas Scenario("compr-multifd-channels-64", 136212c1933SFabiano Rosas multifd=True, multifd_channels=64), 137212c1933SFabiano Rosas ]), 138212c1933SFabiano Rosas 139212c1933SFabiano Rosas # Looking at effect of dirty-limit with 140212c1933SFabiano Rosas # varying x_vcpu_dirty_limit_period 141212c1933SFabiano Rosas Comparison("compr-dirty-limit-period", scenarios = [ 142212c1933SFabiano Rosas Scenario("compr-dirty-limit-period-500", 143212c1933SFabiano Rosas dirty_limit=True, x_vcpu_dirty_limit_period=500), 144212c1933SFabiano Rosas Scenario("compr-dirty-limit-period-800", 145212c1933SFabiano Rosas dirty_limit=True, x_vcpu_dirty_limit_period=800), 146212c1933SFabiano Rosas Scenario("compr-dirty-limit-period-1000", 147212c1933SFabiano Rosas dirty_limit=True, x_vcpu_dirty_limit_period=1000), 148212c1933SFabiano Rosas ]), 149212c1933SFabiano Rosas 150212c1933SFabiano Rosas 151212c1933SFabiano Rosas # Looking at effect of dirty-limit with 152212c1933SFabiano Rosas # varying vcpu_dirty_limit 153212c1933SFabiano Rosas Comparison("compr-dirty-limit", scenarios = [ 154212c1933SFabiano Rosas Scenario("compr-dirty-limit-10MB", 155212c1933SFabiano Rosas dirty_limit=True, vcpu_dirty_limit=10), 156212c1933SFabiano Rosas Scenario("compr-dirty-limit-20MB", 157212c1933SFabiano Rosas dirty_limit=True, vcpu_dirty_limit=20), 158212c1933SFabiano Rosas Scenario("compr-dirty-limit-50MB", 159212c1933SFabiano Rosas dirty_limit=True, vcpu_dirty_limit=50), 160212c1933SFabiano Rosas ]), 161*45f34156SHyman Huang 162*45f34156SHyman Huang # Looking at effect of multifd with 163*45f34156SHyman Huang # different compression algorithms 164*45f34156SHyman Huang Comparison("compr-multifd-compression", scenarios = [ 165*45f34156SHyman Huang Scenario("compr-multifd-compression-zlib", 166*45f34156SHyman Huang multifd=True, multifd_channels=2, multifd_compression="zlib"), 167*45f34156SHyman Huang Scenario("compr-multifd-compression-zstd", 168*45f34156SHyman Huang multifd=True, multifd_channels=2, multifd_compression="zstd"), 169*45f34156SHyman Huang Scenario("compr-multifd-compression-qpl", 170*45f34156SHyman Huang multifd=True, multifd_channels=2, multifd_compression="qpl"), 171*45f34156SHyman Huang Scenario("compr-multifd-compression-uadk", 172*45f34156SHyman Huang multifd=True, multifd_channels=2, multifd_compression="uadk"), 173*45f34156SHyman Huang ]), 174212c1933SFabiano Rosas] 175