qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 0/8] migration: introduce dirtylimit capability


From: Hyman
Subject: Re: [PATCH 0/8] migration: introduce dirtylimit capability
Date: Wed, 10 Aug 2022 23:41:28 +0800
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0

Ping.
How about this series? hoping to get comments if anyone has played with it.

Thanks !

Hyman

在 2022/7/23 15:49, huangy81@chinatelecom.cn 写道:
From: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>

Abstract
========

This series added a new migration capability called "dirtylimit".  It can
be enabled when dirty ring is enabled, and it'll improve the vCPU performance
during the process of migration. It is based on the previous patchset:
https://lore.kernel.org/qemu-devel/cover.1656177590.git.huangy81@chinatelecom.cn/

As mentioned in patchset "support dirty restraint on vCPU", dirtylimit way of
migration can make the read-process not be penalized. This series wires up the
vcpu dirty limit and wrappers as dirtylimit capability of migration. I introduce
two parameters vcpu-dirtylimit-period and vcpu-dirtylimit to implement the setup
of dirtylimit during live migration.

To validate the implementation, i tested a 32 vCPU vm live migration with such
model:
Only dirty vcpu0, vcpu1 with heavy memory workoad and leave the rest vcpus
untouched, running unixbench on the vpcu8-vcpu15 by setup the cpu affinity as
the following command:
taskset -c 8-15 ./Run -i 2 -c 8 {unixbench test item}

The following are results:

host cpu: Intel(R) Xeon(R) Platinum 8378A
host interface speed: 1000Mb/s
   |---------------------+--------+------------+---------------|
   | UnixBench test item | Normal | Dirtylimit | Auto-converge |
   |---------------------+--------+------------+---------------|
   | dhry2reg            | 32800  | 32786      | 25292         |
   | whetstone-double    | 10326  | 10315      | 9847          |
   | pipe                | 15442  | 15271      | 14506         |
   | context1            | 7260   | 6235       | 4514          |
   | spawn               | 3663   | 3317       | 3249          |
   | syscall             | 4669   | 4667       | 3841          |
   |---------------------+--------+------------+---------------|
 From the data above we can draw a conclusion that vcpus that do not dirty 
memory
in vm are almost unaffected during the dirtylimit migration, but the auto 
converge
way does.

I also tested the total time of dirtylimit migration with variable dirty memory
size in vm.

senario 1:
host cpu: Intel(R) Xeon(R) Platinum 8378A
host interface speed: 1000Mb/s
   |-----------------------+----------------+-------------------|
   | dirty memory size(MB) | Dirtylimit(ms) | Auto-converge(ms) |
   |-----------------------+----------------+-------------------|
   | 60                    | 2014           | 2131              |
   | 70                    | 5381           | 12590             |
   | 90                    | 6037           | 33545             |
   | 110                   | 7660           | [*]               |
   |-----------------------+----------------+-------------------|
   [*]: This case means migration is not convergent.

senario 2:
host cpu: Intel(R) Xeon(R) CPU E5-2650
host interface speed: 10000Mb/s
   |-----------------------+----------------+-------------------|
   | dirty memory size(MB) | Dirtylimit(ms) | Auto-converge(ms) |
   |-----------------------+----------------+-------------------|
   | 1600                  | 15842          | 27548             |
   | 2000                  | 19026          | 38447             |
   | 2400                  | 19897          | 46381             |
   | 2800                  | 22338          | 57149             |
   |-----------------------+----------------+-------------------|
Above data shows that dirtylimit way of migration can also reduce the total
time of migration and it achieves convergence more easily in some case.

In addition to implement dirtylimit capability itself, this series
add 3 tests for migration, aiming at playing around for developer simply:
  1. qtest for dirty limit migration
  2. support dirty ring way of migration for guestperf tool
  3. support dirty limit migration for guestperf tool

Please review, thanks !

Hyman Huang (8):
   qapi/migration: Introduce x-vcpu-dirty-limit-period parameter
   qapi/migration: Introduce vcpu-dirty-limit parameters
   migration: Introduce dirty-limit capability
   migration: Implement dirty-limit convergence algo
   migration: Export dirty-limit time info
   tests: Add migration dirty-limit capability test
   tests/migration: Introduce dirty-ring-size option into guestperf
   tests/migration: Introduce dirty-limit into guestperf

  include/sysemu/dirtylimit.h             |  2 +
  migration/migration.c                   | 50 ++++++++++++++++++
  migration/migration.h                   |  1 +
  migration/ram.c                         | 53 ++++++++++++++-----
  migration/trace-events                  |  1 +
  monitor/hmp-cmds.c                      | 26 ++++++++++
  qapi/migration.json                     | 57 ++++++++++++++++----
  softmmu/dirtylimit.c                    | 33 +++++++++++-
  tests/migration/guestperf/comparison.py | 14 +++++
  tests/migration/guestperf/engine.py     | 33 +++++++++++-
  tests/migration/guestperf/hardware.py   |  8 ++-
  tests/migration/guestperf/progress.py   | 17 +++++-
  tests/migration/guestperf/scenario.py   | 11 +++-
  tests/migration/guestperf/shell.py      | 25 ++++++++-
  tests/qtest/migration-test.c            | 92 +++++++++++++++++++++++++++++++++
  15 files changed, 392 insertions(+), 31 deletions(-)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]