xref: /openbmc/qemu/tests/migration-stress/guestperf/hardware.py (revision bdce9bc9179bd7b6f4e12c759dd3cd6794e26a6b)
1*212c1933SFabiano Rosas#
2*212c1933SFabiano Rosas# Migration test hardware configuration description
3*212c1933SFabiano Rosas#
4*212c1933SFabiano Rosas# Copyright (c) 2016 Red Hat, Inc.
5*212c1933SFabiano Rosas#
6*212c1933SFabiano Rosas# This library is free software; you can redistribute it and/or
7*212c1933SFabiano Rosas# modify it under the terms of the GNU Lesser General Public
8*212c1933SFabiano Rosas# License as published by the Free Software Foundation; either
9*212c1933SFabiano Rosas# version 2.1 of the License, or (at your option) any later version.
10*212c1933SFabiano Rosas#
11*212c1933SFabiano Rosas# This library is distributed in the hope that it will be useful,
12*212c1933SFabiano Rosas# but WITHOUT ANY WARRANTY; without even the implied warranty of
13*212c1933SFabiano Rosas# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14*212c1933SFabiano Rosas# Lesser General Public License for more details.
15*212c1933SFabiano Rosas#
16*212c1933SFabiano Rosas# You should have received a copy of the GNU Lesser General Public
17*212c1933SFabiano Rosas# License along with this library; if not, see <http://www.gnu.org/licenses/>.
18*212c1933SFabiano Rosas#
19*212c1933SFabiano Rosas
20*212c1933SFabiano Rosas
21*212c1933SFabiano Rosasclass Hardware(object):
22*212c1933SFabiano Rosas    def __init__(self, cpus=1, mem=1,
23*212c1933SFabiano Rosas                 src_cpu_bind=None, src_mem_bind=None,
24*212c1933SFabiano Rosas                 dst_cpu_bind=None, dst_mem_bind=None,
25*212c1933SFabiano Rosas                 prealloc_pages = False,
26*212c1933SFabiano Rosas                 huge_pages=False, locked_pages=False,
27*212c1933SFabiano Rosas                 dirty_ring_size=0):
28*212c1933SFabiano Rosas        self._cpus = cpus
29*212c1933SFabiano Rosas        self._mem = mem # GiB
30*212c1933SFabiano Rosas        self._src_mem_bind = src_mem_bind # List of NUMA nodes
31*212c1933SFabiano Rosas        self._src_cpu_bind = src_cpu_bind # List of pCPUs
32*212c1933SFabiano Rosas        self._dst_mem_bind = dst_mem_bind # List of NUMA nodes
33*212c1933SFabiano Rosas        self._dst_cpu_bind = dst_cpu_bind # List of pCPUs
34*212c1933SFabiano Rosas        self._prealloc_pages = prealloc_pages
35*212c1933SFabiano Rosas        self._huge_pages = huge_pages
36*212c1933SFabiano Rosas        self._locked_pages = locked_pages
37*212c1933SFabiano Rosas        self._dirty_ring_size = dirty_ring_size
38*212c1933SFabiano Rosas
39*212c1933SFabiano Rosas
40*212c1933SFabiano Rosas    def serialize(self):
41*212c1933SFabiano Rosas        return {
42*212c1933SFabiano Rosas            "cpus": self._cpus,
43*212c1933SFabiano Rosas            "mem": self._mem,
44*212c1933SFabiano Rosas            "src_mem_bind": self._src_mem_bind,
45*212c1933SFabiano Rosas            "dst_mem_bind": self._dst_mem_bind,
46*212c1933SFabiano Rosas            "src_cpu_bind": self._src_cpu_bind,
47*212c1933SFabiano Rosas            "dst_cpu_bind": self._dst_cpu_bind,
48*212c1933SFabiano Rosas            "prealloc_pages": self._prealloc_pages,
49*212c1933SFabiano Rosas            "huge_pages": self._huge_pages,
50*212c1933SFabiano Rosas            "locked_pages": self._locked_pages,
51*212c1933SFabiano Rosas            "dirty_ring_size": self._dirty_ring_size,
52*212c1933SFabiano Rosas        }
53*212c1933SFabiano Rosas
54*212c1933SFabiano Rosas    @classmethod
55*212c1933SFabiano Rosas    def deserialize(cls, data):
56*212c1933SFabiano Rosas        return cls(
57*212c1933SFabiano Rosas            data["cpus"],
58*212c1933SFabiano Rosas            data["mem"],
59*212c1933SFabiano Rosas            data["src_cpu_bind"],
60*212c1933SFabiano Rosas            data["src_mem_bind"],
61*212c1933SFabiano Rosas            data["dst_cpu_bind"],
62*212c1933SFabiano Rosas            data["dst_mem_bind"],
63*212c1933SFabiano Rosas            data["prealloc_pages"],
64*212c1933SFabiano Rosas            data["huge_pages"],
65*212c1933SFabiano Rosas            data["locked_pages"],
66*212c1933SFabiano Rosas            data["dirty_ring_size"])
67