1212c1933SFabiano Rosas# 2212c1933SFabiano Rosas# Migration test scenario parameter description 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 Rosas 21212c1933SFabiano Rosasclass Scenario(object): 22212c1933SFabiano Rosas 23212c1933SFabiano Rosas def __init__(self, name, 24212c1933SFabiano Rosas downtime=500, 25212c1933SFabiano Rosas bandwidth=125000, # 1000 gig-e, effectively unlimited 26212c1933SFabiano Rosas max_iters=30, 27212c1933SFabiano Rosas max_time=300, 28212c1933SFabiano Rosas pause=False, pause_iters=5, 29212c1933SFabiano Rosas post_copy=False, post_copy_iters=5, 30212c1933SFabiano Rosas auto_converge=False, auto_converge_step=10, 31212c1933SFabiano Rosas compression_mt=False, compression_mt_threads=1, 32212c1933SFabiano Rosas compression_xbzrle=False, compression_xbzrle_cache=10, 33*45f34156SHyman Huang multifd=False, multifd_channels=2, multifd_compression="", 34212c1933SFabiano Rosas dirty_limit=False, x_vcpu_dirty_limit_period=500, 35212c1933SFabiano Rosas vcpu_dirty_limit=1): 36212c1933SFabiano Rosas 37212c1933SFabiano Rosas self._name = name 38212c1933SFabiano Rosas 39212c1933SFabiano Rosas # General migration tunables 40212c1933SFabiano Rosas self._downtime = downtime # milliseconds 41212c1933SFabiano Rosas self._bandwidth = bandwidth # MiB per second 42212c1933SFabiano Rosas self._max_iters = max_iters 43212c1933SFabiano Rosas self._max_time = max_time # seconds 44212c1933SFabiano Rosas 45212c1933SFabiano Rosas 46212c1933SFabiano Rosas # Strategies for ensuring completion 47212c1933SFabiano Rosas self._pause = pause 48212c1933SFabiano Rosas self._pause_iters = pause_iters 49212c1933SFabiano Rosas 50212c1933SFabiano Rosas self._post_copy = post_copy 51212c1933SFabiano Rosas self._post_copy_iters = post_copy_iters 52212c1933SFabiano Rosas 53212c1933SFabiano Rosas self._auto_converge = auto_converge 54212c1933SFabiano Rosas self._auto_converge_step = auto_converge_step # percentage CPU time 55212c1933SFabiano Rosas 56212c1933SFabiano Rosas self._compression_mt = compression_mt 57212c1933SFabiano Rosas self._compression_mt_threads = compression_mt_threads 58212c1933SFabiano Rosas 59212c1933SFabiano Rosas self._compression_xbzrle = compression_xbzrle 60212c1933SFabiano Rosas self._compression_xbzrle_cache = compression_xbzrle_cache # percentage of guest RAM 61212c1933SFabiano Rosas 62212c1933SFabiano Rosas self._multifd = multifd 63212c1933SFabiano Rosas self._multifd_channels = multifd_channels 64*45f34156SHyman Huang self._multifd_compression = multifd_compression 65212c1933SFabiano Rosas 66212c1933SFabiano Rosas self._dirty_limit = dirty_limit 67212c1933SFabiano Rosas self._x_vcpu_dirty_limit_period = x_vcpu_dirty_limit_period 68212c1933SFabiano Rosas self._vcpu_dirty_limit = vcpu_dirty_limit 69212c1933SFabiano Rosas 70212c1933SFabiano Rosas def serialize(self): 71212c1933SFabiano Rosas return { 72212c1933SFabiano Rosas "name": self._name, 73212c1933SFabiano Rosas "downtime": self._downtime, 74212c1933SFabiano Rosas "bandwidth": self._bandwidth, 75212c1933SFabiano Rosas "max_iters": self._max_iters, 76212c1933SFabiano Rosas "max_time": self._max_time, 77212c1933SFabiano Rosas "pause": self._pause, 78212c1933SFabiano Rosas "pause_iters": self._pause_iters, 79212c1933SFabiano Rosas "post_copy": self._post_copy, 80212c1933SFabiano Rosas "post_copy_iters": self._post_copy_iters, 81212c1933SFabiano Rosas "auto_converge": self._auto_converge, 82212c1933SFabiano Rosas "auto_converge_step": self._auto_converge_step, 83212c1933SFabiano Rosas "compression_mt": self._compression_mt, 84212c1933SFabiano Rosas "compression_mt_threads": self._compression_mt_threads, 85212c1933SFabiano Rosas "compression_xbzrle": self._compression_xbzrle, 86212c1933SFabiano Rosas "compression_xbzrle_cache": self._compression_xbzrle_cache, 87212c1933SFabiano Rosas "multifd": self._multifd, 88212c1933SFabiano Rosas "multifd_channels": self._multifd_channels, 89*45f34156SHyman Huang "multifd_compression": self._multifd_compression, 90212c1933SFabiano Rosas "dirty_limit": self._dirty_limit, 91212c1933SFabiano Rosas "x_vcpu_dirty_limit_period": self._x_vcpu_dirty_limit_period, 92212c1933SFabiano Rosas "vcpu_dirty_limit": self._vcpu_dirty_limit, 93212c1933SFabiano Rosas } 94212c1933SFabiano Rosas 95212c1933SFabiano Rosas @classmethod 96212c1933SFabiano Rosas def deserialize(cls, data): 97212c1933SFabiano Rosas return cls( 98212c1933SFabiano Rosas data["name"], 99212c1933SFabiano Rosas data["downtime"], 100212c1933SFabiano Rosas data["bandwidth"], 101212c1933SFabiano Rosas data["max_iters"], 102212c1933SFabiano Rosas data["max_time"], 103212c1933SFabiano Rosas data["pause"], 104212c1933SFabiano Rosas data["pause_iters"], 105212c1933SFabiano Rosas data["post_copy"], 106212c1933SFabiano Rosas data["post_copy_iters"], 107212c1933SFabiano Rosas data["auto_converge"], 108212c1933SFabiano Rosas data["auto_converge_step"], 109212c1933SFabiano Rosas data["compression_mt"], 110212c1933SFabiano Rosas data["compression_mt_threads"], 111212c1933SFabiano Rosas data["compression_xbzrle"], 112212c1933SFabiano Rosas data["compression_xbzrle_cache"], 113212c1933SFabiano Rosas data["multifd"], 114*45f34156SHyman Huang data["multifd_channels"], 115*45f34156SHyman Huang data["multifd_compression"]) 116