xref: /qemu/tests/migration-stress/guestperf/scenario.py (revision 409437e16df273fc5f78f6cd1cb53023eaeb9b72)
1*409437e1SDaniel P. Berrange#
2*409437e1SDaniel P. Berrange# Migration test scenario parameter description
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. Berrange
21*409437e1SDaniel P. Berrangeclass Scenario(object):
22*409437e1SDaniel P. Berrange
23*409437e1SDaniel P. Berrange    def __init__(self, name,
24*409437e1SDaniel P. Berrange                 downtime=500,
25*409437e1SDaniel P. Berrange                 bandwidth=125000, # 1000 gig-e, effectively unlimited
26*409437e1SDaniel P. Berrange                 max_iters=30,
27*409437e1SDaniel P. Berrange                 max_time=300,
28*409437e1SDaniel P. Berrange                 pause=False, pause_iters=5,
29*409437e1SDaniel P. Berrange                 post_copy=False, post_copy_iters=5,
30*409437e1SDaniel P. Berrange                 auto_converge=False, auto_converge_step=10,
31*409437e1SDaniel P. Berrange                 compression_mt=False, compression_mt_threads=1,
32*409437e1SDaniel P. Berrange                 compression_xbzrle=False, compression_xbzrle_cache=10):
33*409437e1SDaniel P. Berrange
34*409437e1SDaniel P. Berrange        self._name = name
35*409437e1SDaniel P. Berrange
36*409437e1SDaniel P. Berrange        # General migration tunables
37*409437e1SDaniel P. Berrange        self._downtime = downtime  # milliseconds
38*409437e1SDaniel P. Berrange        self._bandwidth = bandwidth # MiB per second
39*409437e1SDaniel P. Berrange        self._max_iters = max_iters
40*409437e1SDaniel P. Berrange        self._max_time = max_time # seconds
41*409437e1SDaniel P. Berrange
42*409437e1SDaniel P. Berrange
43*409437e1SDaniel P. Berrange        # Strategies for ensuring completion
44*409437e1SDaniel P. Berrange        self._pause = pause
45*409437e1SDaniel P. Berrange        self._pause_iters = pause_iters
46*409437e1SDaniel P. Berrange
47*409437e1SDaniel P. Berrange        self._post_copy = post_copy
48*409437e1SDaniel P. Berrange        self._post_copy_iters = post_copy_iters
49*409437e1SDaniel P. Berrange
50*409437e1SDaniel P. Berrange        self._auto_converge = auto_converge
51*409437e1SDaniel P. Berrange        self._auto_converge_step = auto_converge_step # percentage CPU time
52*409437e1SDaniel P. Berrange
53*409437e1SDaniel P. Berrange        self._compression_mt = compression_mt
54*409437e1SDaniel P. Berrange        self._compression_mt_threads = compression_mt_threads
55*409437e1SDaniel P. Berrange
56*409437e1SDaniel P. Berrange        self._compression_xbzrle = compression_xbzrle
57*409437e1SDaniel P. Berrange        self._compression_xbzrle_cache = compression_xbzrle_cache # percentage of guest RAM
58*409437e1SDaniel P. Berrange
59*409437e1SDaniel P. Berrange    def serialize(self):
60*409437e1SDaniel P. Berrange        return {
61*409437e1SDaniel P. Berrange            "name": self._name,
62*409437e1SDaniel P. Berrange            "downtime": self._downtime,
63*409437e1SDaniel P. Berrange            "bandwidth": self._bandwidth,
64*409437e1SDaniel P. Berrange            "max_iters": self._max_iters,
65*409437e1SDaniel P. Berrange            "max_time": self._max_time,
66*409437e1SDaniel P. Berrange            "pause": self._pause,
67*409437e1SDaniel P. Berrange            "pause_iters": self._pause_iters,
68*409437e1SDaniel P. Berrange            "post_copy": self._post_copy,
69*409437e1SDaniel P. Berrange            "post_copy_iters": self._post_copy_iters,
70*409437e1SDaniel P. Berrange            "auto_converge": self._auto_converge,
71*409437e1SDaniel P. Berrange            "auto_converge_step": self._auto_converge_step,
72*409437e1SDaniel P. Berrange            "compression_mt": self._compression_mt,
73*409437e1SDaniel P. Berrange            "compression_mt_threads": self._compression_mt_threads,
74*409437e1SDaniel P. Berrange            "compression_xbzrle": self._compression_xbzrle,
75*409437e1SDaniel P. Berrange            "compression_xbzrle_cache": self._compression_xbzrle_cache,
76*409437e1SDaniel P. Berrange        }
77*409437e1SDaniel P. Berrange
78*409437e1SDaniel P. Berrange    @classmethod
79*409437e1SDaniel P. Berrange    def deserialize(cls, data):
80*409437e1SDaniel P. Berrange        return cls(
81*409437e1SDaniel P. Berrange            data["name"],
82*409437e1SDaniel P. Berrange            data["downtime"],
83*409437e1SDaniel P. Berrange            data["bandwidth"],
84*409437e1SDaniel P. Berrange            data["max_iters"],
85*409437e1SDaniel P. Berrange            data["max_time"],
86*409437e1SDaniel P. Berrange            data["pause"],
87*409437e1SDaniel P. Berrange            data["pause_iters"],
88*409437e1SDaniel P. Berrange            data["post_copy"],
89*409437e1SDaniel P. Berrange            data["post_copy_iters"],
90*409437e1SDaniel P. Berrange            data["auto_converge"],
91*409437e1SDaniel P. Berrange            data["auto_converge_step"],
92*409437e1SDaniel P. Berrange            data["compression_mt"],
93*409437e1SDaniel P. Berrange            data["compression_mt_threads"],
94*409437e1SDaniel P. Berrange            data["compression_xbzrle"],
95*409437e1SDaniel P. Berrange            data["compression_xbzrle_cache"])
96