xref: /qemu/tests/migration-stress/guestperf/hardware.py (revision 212c19331b0c53ab299ae3d646409fad2da90602)
1409437e1SDaniel P. Berrange#
2409437e1SDaniel P. Berrange# Migration test hardware configuration description
3409437e1SDaniel P. Berrange#
4409437e1SDaniel P. Berrange# Copyright (c) 2016 Red Hat, Inc.
5409437e1SDaniel P. Berrange#
6409437e1SDaniel P. Berrange# This library is free software; you can redistribute it and/or
7409437e1SDaniel P. Berrange# modify it under the terms of the GNU Lesser General Public
8409437e1SDaniel P. Berrange# License as published by the Free Software Foundation; either
93a645d36SGan Qixin# version 2.1 of the License, or (at your option) any later version.
10409437e1SDaniel P. Berrange#
11409437e1SDaniel P. Berrange# This library is distributed in the hope that it will be useful,
12409437e1SDaniel P. Berrange# but WITHOUT ANY WARRANTY; without even the implied warranty of
13409437e1SDaniel P. Berrange# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14409437e1SDaniel P. Berrange# Lesser General Public License for more details.
15409437e1SDaniel P. Berrange#
16409437e1SDaniel P. Berrange# You should have received a copy of the GNU Lesser General Public
17409437e1SDaniel P. Berrange# License along with this library; if not, see <http://www.gnu.org/licenses/>.
18409437e1SDaniel P. Berrange#
19409437e1SDaniel P. Berrange
20409437e1SDaniel P. Berrange
21409437e1SDaniel P. Berrangeclass Hardware(object):
22409437e1SDaniel P. Berrange    def __init__(self, cpus=1, mem=1,
23409437e1SDaniel P. Berrange                 src_cpu_bind=None, src_mem_bind=None,
24409437e1SDaniel P. Berrange                 dst_cpu_bind=None, dst_mem_bind=None,
25409437e1SDaniel P. Berrange                 prealloc_pages = False,
26*4cc563d4SHyman Huang                 huge_pages=False, locked_pages=False,
27*4cc563d4SHyman Huang                 dirty_ring_size=0):
28409437e1SDaniel P. Berrange        self._cpus = cpus
29409437e1SDaniel P. Berrange        self._mem = mem # GiB
30409437e1SDaniel P. Berrange        self._src_mem_bind = src_mem_bind # List of NUMA nodes
31409437e1SDaniel P. Berrange        self._src_cpu_bind = src_cpu_bind # List of pCPUs
32409437e1SDaniel P. Berrange        self._dst_mem_bind = dst_mem_bind # List of NUMA nodes
33409437e1SDaniel P. Berrange        self._dst_cpu_bind = dst_cpu_bind # List of pCPUs
34409437e1SDaniel P. Berrange        self._prealloc_pages = prealloc_pages
35409437e1SDaniel P. Berrange        self._huge_pages = huge_pages
36409437e1SDaniel P. Berrange        self._locked_pages = locked_pages
37*4cc563d4SHyman Huang        self._dirty_ring_size = dirty_ring_size
38409437e1SDaniel P. Berrange
39409437e1SDaniel P. Berrange
40409437e1SDaniel P. Berrange    def serialize(self):
41409437e1SDaniel P. Berrange        return {
42409437e1SDaniel P. Berrange            "cpus": self._cpus,
43409437e1SDaniel P. Berrange            "mem": self._mem,
44409437e1SDaniel P. Berrange            "src_mem_bind": self._src_mem_bind,
45409437e1SDaniel P. Berrange            "dst_mem_bind": self._dst_mem_bind,
46409437e1SDaniel P. Berrange            "src_cpu_bind": self._src_cpu_bind,
47409437e1SDaniel P. Berrange            "dst_cpu_bind": self._dst_cpu_bind,
48409437e1SDaniel P. Berrange            "prealloc_pages": self._prealloc_pages,
49409437e1SDaniel P. Berrange            "huge_pages": self._huge_pages,
50409437e1SDaniel P. Berrange            "locked_pages": self._locked_pages,
51*4cc563d4SHyman Huang            "dirty_ring_size": self._dirty_ring_size,
52409437e1SDaniel P. Berrange        }
53409437e1SDaniel P. Berrange
54409437e1SDaniel P. Berrange    @classmethod
55409437e1SDaniel P. Berrange    def deserialize(cls, data):
56409437e1SDaniel P. Berrange        return cls(
57409437e1SDaniel P. Berrange            data["cpus"],
58409437e1SDaniel P. Berrange            data["mem"],
59409437e1SDaniel P. Berrange            data["src_cpu_bind"],
60409437e1SDaniel P. Berrange            data["src_mem_bind"],
61409437e1SDaniel P. Berrange            data["dst_cpu_bind"],
62409437e1SDaniel P. Berrange            data["dst_mem_bind"],
63409437e1SDaniel P. Berrange            data["prealloc_pages"],
64409437e1SDaniel P. Berrange            data["huge_pages"],
65*4cc563d4SHyman Huang            data["locked_pages"],
66*4cc563d4SHyman Huang            data["dirty_ring_size"])
67