Dirty ring size configuration is not supported by guestperf tool.
Introduce dirty-ring-size (ranges in [1024, 65536]) option so
developers can play with dirty-ring and dirty-limit feature easier.
To set dirty ring size with 4096 during migration test:
$ ./tests/migration/guestperf.py --dirty-ring-size 4096 xxx
Signed-off-by: Hyman Huang <yong.huang@smartx.com>
---
tests/migration/guestperf/engine.py | 6 +++++-
tests/migration/guestperf/hardware.py | 8 ++++++--
tests/migration/guestperf/shell.py | 6 +++++-
3 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/tests/migration/guestperf/engine.py b/tests/migration/guestperf/engine.py
index da96ca034a..aabf6de4d9 100644
--- a/tests/migration/guestperf/engine.py
+++ b/tests/migration/guestperf/engine.py
@@ -325,7 +325,6 @@ def _get_common_args(self, hardware, tunnelled=False):
cmdline = "'" + cmdline + "'"
argv = [
- "-accel", "kvm",
"-cpu", "host",
"-kernel", self._kernel,
"-initrd", self._initrd,
@@ -333,6 +332,11 @@ def _get_common_args(self, hardware, tunnelled=False):
"-m", str((hardware._mem * 1024) + 512),
"-smp", str(hardware._cpus),
]
+ if hardware._dirty_ring_size:
+ argv.extend(["-accel", "kvm,dirty-ring-size=%s" %
+ hardware._dirty_ring_size])
+ else:
+ argv.extend(["-accel", "kvm"])
argv.extend(self._get_qemu_serial_args())
diff --git a/tests/migration/guestperf/hardware.py b/tests/migration/guestperf/hardware.py
index 3145785ffd..f779cc050b 100644
--- a/tests/migration/guestperf/hardware.py
+++ b/tests/migration/guestperf/hardware.py
@@ -23,7 +23,8 @@ def __init__(self, cpus=1, mem=1,
src_cpu_bind=None, src_mem_bind=None,
dst_cpu_bind=None, dst_mem_bind=None,
prealloc_pages = False,
- huge_pages=False, locked_pages=False):
+ huge_pages=False, locked_pages=False,
+ dirty_ring_size=0):
self._cpus = cpus
self._mem = mem # GiB
self._src_mem_bind = src_mem_bind # List of NUMA nodes
@@ -33,6 +34,7 @@ def __init__(self, cpus=1, mem=1,
self._prealloc_pages = prealloc_pages
self._huge_pages = huge_pages
self._locked_pages = locked_pages
+ self._dirty_ring_size = dirty_ring_size
def serialize(self):
@@ -46,6 +48,7 @@ def serialize(self):
"prealloc_pages": self._prealloc_pages,
"huge_pages": self._huge_pages,
"locked_pages": self._locked_pages,
+ "dirty_ring_size": self._dirty_ring_size,
}
@classmethod
@@ -59,4 +62,5 @@ def deserialize(cls, data):
data["dst_mem_bind"],
data["prealloc_pages"],
data["huge_pages"],
- data["locked_pages"])
+ data["locked_pages"],
+ data["dirty_ring_size"])
diff --git a/tests/migration/guestperf/shell.py b/tests/migration/guestperf/shell.py
index 8a809e3dda..7d6b8cd7cf 100644
--- a/tests/migration/guestperf/shell.py
+++ b/tests/migration/guestperf/shell.py
@@ -60,6 +60,8 @@ def __init__(self):
parser.add_argument("--prealloc-pages", dest="prealloc_pages", default=False)
parser.add_argument("--huge-pages", dest="huge_pages", default=False)
parser.add_argument("--locked-pages", dest="locked_pages", default=False)
+ parser.add_argument("--dirty-ring-size", dest="dirty_ring_size",
+ default=0, type=int)
self._parser = parser
@@ -89,7 +91,9 @@ def split_map(value):
locked_pages=args.locked_pages,
huge_pages=args.huge_pages,
- prealloc_pages=args.prealloc_pages)
+ prealloc_pages=args.prealloc_pages,
+
+ dirty_ring_size=args.dirty_ring_size)
class Shell(BaseShell):
--
2.39.1
Hyman Huang <yong.huang@smartx.com> writes: > Dirty ring size configuration is not supported by guestperf tool. > > Introduce dirty-ring-size (ranges in [1024, 65536]) option so > developers can play with dirty-ring and dirty-limit feature easier. > > To set dirty ring size with 4096 during migration test: > $ ./tests/migration/guestperf.py --dirty-ring-size 4096 xxx > > Signed-off-by: Hyman Huang <yong.huang@smartx.com> Reviewed-by: Fabiano Rosas <farosas@suse.de>
ping.
Regarding the performance of the live migration, Guestperf could provide us
with a clear response. IMHO, by just adding a few metrics, it might be
developed
into a more user-friendly metrics system in the future.
We may still enrich it prior to that.
On Fri, Oct 20, 2023 at 11:24 PM Hyman Huang <yong.huang@smartx.com> wrote:
> Dirty ring size configuration is not supported by guestperf tool.
>
> Introduce dirty-ring-size (ranges in [1024, 65536]) option so
> developers can play with dirty-ring and dirty-limit feature easier.
>
> To set dirty ring size with 4096 during migration test:
> $ ./tests/migration/guestperf.py --dirty-ring-size 4096 xxx
>
> Signed-off-by: Hyman Huang <yong.huang@smartx.com>
> ---
> tests/migration/guestperf/engine.py | 6 +++++-
> tests/migration/guestperf/hardware.py | 8 ++++++--
> tests/migration/guestperf/shell.py | 6 +++++-
> 3 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/tests/migration/guestperf/engine.py
> b/tests/migration/guestperf/engine.py
> index da96ca034a..aabf6de4d9 100644
> --- a/tests/migration/guestperf/engine.py
> +++ b/tests/migration/guestperf/engine.py
> @@ -325,7 +325,6 @@ def _get_common_args(self, hardware, tunnelled=False):
> cmdline = "'" + cmdline + "'"
>
> argv = [
> - "-accel", "kvm",
> "-cpu", "host",
> "-kernel", self._kernel,
> "-initrd", self._initrd,
> @@ -333,6 +332,11 @@ def _get_common_args(self, hardware, tunnelled=False):
> "-m", str((hardware._mem * 1024) + 512),
> "-smp", str(hardware._cpus),
> ]
> + if hardware._dirty_ring_size:
> + argv.extend(["-accel", "kvm,dirty-ring-size=%s" %
> + hardware._dirty_ring_size])
> + else:
> + argv.extend(["-accel", "kvm"])
>
> argv.extend(self._get_qemu_serial_args())
>
> diff --git a/tests/migration/guestperf/hardware.py
> b/tests/migration/guestperf/hardware.py
> index 3145785ffd..f779cc050b 100644
> --- a/tests/migration/guestperf/hardware.py
> +++ b/tests/migration/guestperf/hardware.py
> @@ -23,7 +23,8 @@ def __init__(self, cpus=1, mem=1,
> src_cpu_bind=None, src_mem_bind=None,
> dst_cpu_bind=None, dst_mem_bind=None,
> prealloc_pages = False,
> - huge_pages=False, locked_pages=False):
> + huge_pages=False, locked_pages=False,
> + dirty_ring_size=0):
> self._cpus = cpus
> self._mem = mem # GiB
> self._src_mem_bind = src_mem_bind # List of NUMA nodes
> @@ -33,6 +34,7 @@ def __init__(self, cpus=1, mem=1,
> self._prealloc_pages = prealloc_pages
> self._huge_pages = huge_pages
> self._locked_pages = locked_pages
> + self._dirty_ring_size = dirty_ring_size
>
>
> def serialize(self):
> @@ -46,6 +48,7 @@ def serialize(self):
> "prealloc_pages": self._prealloc_pages,
> "huge_pages": self._huge_pages,
> "locked_pages": self._locked_pages,
> + "dirty_ring_size": self._dirty_ring_size,
> }
>
> @classmethod
> @@ -59,4 +62,5 @@ def deserialize(cls, data):
> data["dst_mem_bind"],
> data["prealloc_pages"],
> data["huge_pages"],
> - data["locked_pages"])
> + data["locked_pages"],
> + data["dirty_ring_size"])
> diff --git a/tests/migration/guestperf/shell.py
> b/tests/migration/guestperf/shell.py
> index 8a809e3dda..7d6b8cd7cf 100644
> --- a/tests/migration/guestperf/shell.py
> +++ b/tests/migration/guestperf/shell.py
> @@ -60,6 +60,8 @@ def __init__(self):
> parser.add_argument("--prealloc-pages", dest="prealloc_pages",
> default=False)
> parser.add_argument("--huge-pages", dest="huge_pages",
> default=False)
> parser.add_argument("--locked-pages", dest="locked_pages",
> default=False)
> + parser.add_argument("--dirty-ring-size", dest="dirty_ring_size",
> + default=0, type=int)
>
> self._parser = parser
>
> @@ -89,7 +91,9 @@ def split_map(value):
>
> locked_pages=args.locked_pages,
> huge_pages=args.huge_pages,
> - prealloc_pages=args.prealloc_pages)
> + prealloc_pages=args.prealloc_pages,
> +
> + dirty_ring_size=args.dirty_ring_size)
>
>
> class Shell(BaseShell):
> --
> 2.39.1
>
>
--
Best regards
ping1
在 2023/10/23 10:03, Yong Huang 写道:
> ping.
>
> Regarding the performance of the live migration, Guestperf could
> provide us
> with a clear response. IMHO, by just adding a few metrics, it might be
> developed
> into a more user-friendly metrics system in the future.
>
> We may still enrich it prior to that.
>
> On Fri, Oct 20, 2023 at 11:24 PM Hyman Huang <yong.huang@smartx.com>
> wrote:
>
> Dirty ring size configuration is not supported by guestperf tool.
>
> Introduce dirty-ring-size (ranges in [1024, 65536]) option so
> developers can play with dirty-ring and dirty-limit feature easier.
>
> To set dirty ring size with 4096 during migration test:
> $ ./tests/migration/guestperf.py --dirty-ring-size 4096 xxx
>
> Signed-off-by: Hyman Huang <yong.huang@smartx.com>
> ---
> tests/migration/guestperf/engine.py | 6 +++++-
> tests/migration/guestperf/hardware.py | 8 ++++++--
> tests/migration/guestperf/shell.py | 6 +++++-
> 3 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/tests/migration/guestperf/engine.py
> b/tests/migration/guestperf/engine.py
> index da96ca034a..aabf6de4d9 100644
> --- a/tests/migration/guestperf/engine.py
> +++ b/tests/migration/guestperf/engine.py
> @@ -325,7 +325,6 @@ def _get_common_args(self, hardware,
> tunnelled=False):
> cmdline = "'" + cmdline + "'"
>
> argv = [
> - "-accel", "kvm",
> "-cpu", "host",
> "-kernel", self._kernel,
> "-initrd", self._initrd,
> @@ -333,6 +332,11 @@ def _get_common_args(self, hardware,
> tunnelled=False):
> "-m", str((hardware._mem * 1024) + 512),
> "-smp", str(hardware._cpus),
> ]
> + if hardware._dirty_ring_size:
> + argv.extend(["-accel", "kvm,dirty-ring-size=%s" %
> + hardware._dirty_ring_size])
> + else:
> + argv.extend(["-accel", "kvm"])
>
> argv.extend(self._get_qemu_serial_args())
>
> diff --git a/tests/migration/guestperf/hardware.py
> b/tests/migration/guestperf/hardware.py
> index 3145785ffd..f779cc050b 100644
> --- a/tests/migration/guestperf/hardware.py
> +++ b/tests/migration/guestperf/hardware.py
> @@ -23,7 +23,8 @@ def __init__(self, cpus=1, mem=1,
> src_cpu_bind=None, src_mem_bind=None,
> dst_cpu_bind=None, dst_mem_bind=None,
> prealloc_pages = False,
> - huge_pages=False, locked_pages=False):
> + huge_pages=False, locked_pages=False,
> + dirty_ring_size=0):
> self._cpus = cpus
> self._mem = mem # GiB
> self._src_mem_bind = src_mem_bind # List of NUMA nodes
> @@ -33,6 +34,7 @@ def __init__(self, cpus=1, mem=1,
> self._prealloc_pages = prealloc_pages
> self._huge_pages = huge_pages
> self._locked_pages = locked_pages
> + self._dirty_ring_size = dirty_ring_size
>
>
> def serialize(self):
> @@ -46,6 +48,7 @@ def serialize(self):
> "prealloc_pages": self._prealloc_pages,
> "huge_pages": self._huge_pages,
> "locked_pages": self._locked_pages,
> + "dirty_ring_size": self._dirty_ring_size,
> }
>
> @classmethod
> @@ -59,4 +62,5 @@ def deserialize(cls, data):
> data["dst_mem_bind"],
> data["prealloc_pages"],
> data["huge_pages"],
> - data["locked_pages"])
> + data["locked_pages"],
> + data["dirty_ring_size"])
> diff --git a/tests/migration/guestperf/shell.py
> b/tests/migration/guestperf/shell.py
> index 8a809e3dda..7d6b8cd7cf 100644
> --- a/tests/migration/guestperf/shell.py
> +++ b/tests/migration/guestperf/shell.py
> @@ -60,6 +60,8 @@ def __init__(self):
> parser.add_argument("--prealloc-pages",
> dest="prealloc_pages", default=False)
> parser.add_argument("--huge-pages", dest="huge_pages",
> default=False)
> parser.add_argument("--locked-pages",
> dest="locked_pages", default=False)
> + parser.add_argument("--dirty-ring-size",
> dest="dirty_ring_size",
> + default=0, type=int)
>
> self._parser = parser
>
> @@ -89,7 +91,9 @@ def split_map(value):
>
> locked_pages=args.locked_pages,
> huge_pages=args.huge_pages,
> - prealloc_pages=args.prealloc_pages)
> + prealloc_pages=args.prealloc_pages,
> +
> + dirty_ring_size=args.dirty_ring_size)
>
>
> class Shell(BaseShell):
> --
> 2.39.1
>
>
>
> --
> Best regards
© 2016 - 2025 Red Hat, Inc.