79c4324644
Change-Id: I2d302dda68298877c65c99147f5bf22186a59aac
130 lines
3.7 KiB
Diff
130 lines
3.7 KiB
Diff
From f254d3fe1e7b50c850c634adf554e4e384a4abad Mon Sep 17 00:00:00 2001
|
|
From: Hao Wang <wanghao232@huawei.com>
|
|
Date: Tue, 16 Mar 2021 20:32:47 +0800
|
|
Subject: [PATCH 3/7] migration/dirtyrate: Introduce domdirtyrate-calc virsh
|
|
api
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Introduce domdirtyrate-calc virsh api to start calculating domain's
|
|
memory dirty rate:
|
|
# virsh domdirtyrate-calc <domain> [--seconds <sec>]
|
|
|
|
cherry-pick from a2ae2dad062e8b23efac132488ce6aaea388de51
|
|
|
|
Signed-off-by: Hao Wang <wanghao232@huawei.com>
|
|
Signed-off-by: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
|
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
---
|
|
docs/manpages/virsh.rst | 17 ++++++++++++
|
|
tools/virsh-domain.c | 58 +++++++++++++++++++++++++++++++++++++++++
|
|
2 files changed, 75 insertions(+)
|
|
|
|
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
|
|
index dc404ddfe8..b44e8f9301 100644
|
|
--- a/docs/manpages/virsh.rst
|
|
+++ b/docs/manpages/virsh.rst
|
|
@@ -1696,6 +1696,23 @@ states other than "ok" or "error" the command also prints number of
|
|
seconds elapsed since the control interface entered its current state.
|
|
|
|
|
|
+domdirtyrate-calc
|
|
+-----------------
|
|
+
|
|
+**Syntax:**
|
|
+
|
|
+::
|
|
+
|
|
+ domdirtyrate-calc <domain> [--seconds <sec>]
|
|
+
|
|
+Calculate an active domain's memory dirty rate which may be expected by
|
|
+user in order to decide whether it's proper to be migrated out or not.
|
|
+The ``seconds`` parameter can be used to calculate dirty rate in a
|
|
+specific time which allows 60s at most now and would be default to 1s
|
|
+if missing. The calculated dirty rate information is available by calling
|
|
+'domstats --dirtyrate'.
|
|
+
|
|
+
|
|
domdisplay
|
|
----------
|
|
|
|
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
|
|
index b5375ebd3e..0d42496898 100644
|
|
--- a/tools/virsh-domain.c
|
|
+++ b/tools/virsh-domain.c
|
|
@@ -14399,6 +14399,58 @@ cmdHotpatch(vshControl *ctl,
|
|
return true;
|
|
}
|
|
|
|
+/*
|
|
+ * "domdirtyrate" command
|
|
+ */
|
|
+static const vshCmdInfo info_domdirtyrate_calc[] = {
|
|
+ {.name = "help",
|
|
+ .data = N_("Calculate a vm's memory dirty rate")
|
|
+ },
|
|
+ {.name = "desc",
|
|
+ .data = N_("Calculate memory dirty rate of a domain in order to "
|
|
+ "decide whether it's proper to be migrated out or not.\n"
|
|
+ "The calculated dirty rate information is available by "
|
|
+ "calling 'domstats --dirtyrate'.")
|
|
+ },
|
|
+ {.name = NULL}
|
|
+};
|
|
+
|
|
+static const vshCmdOptDef opts_domdirtyrate_calc[] = {
|
|
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
|
|
+ {.name = "seconds",
|
|
+ .type = VSH_OT_INT,
|
|
+ .help = N_("calculate memory dirty rate within specified seconds, "
|
|
+ "the supported value range from 1 to 60, default to 1.")
|
|
+ },
|
|
+ {.name = NULL}
|
|
+};
|
|
+
|
|
+static bool
|
|
+cmdDomDirtyRateCalc(vshControl *ctl, const vshCmd *cmd)
|
|
+{
|
|
+ virDomainPtr dom = NULL;
|
|
+ int seconds = 1; /* the default value is 1 */
|
|
+ bool ret = false;
|
|
+
|
|
+ if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
|
|
+ return false;
|
|
+
|
|
+ if (vshCommandOptInt(ctl, cmd, "seconds", &seconds) < 0)
|
|
+ goto cleanup;
|
|
+
|
|
+ if (virDomainStartDirtyRateCalc(dom, seconds, 0) < 0)
|
|
+ goto cleanup;
|
|
+
|
|
+ vshPrintExtra(ctl, _("Start to calculate domain's memory "
|
|
+ "dirty rate successfully.\n"));
|
|
+ ret = true;
|
|
+
|
|
+ cleanup:
|
|
+ virshDomainFree(dom);
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+
|
|
const vshCmdDef domManagementCmds[] = {
|
|
{.name = "attach-device",
|
|
.handler = cmdAttachDevice,
|
|
@@ -15032,5 +15084,11 @@ const vshCmdDef domManagementCmds[] = {
|
|
.info = info_hotpatch,
|
|
.flags = 0
|
|
},
|
|
+ {.name = "domdirtyrate-calc",
|
|
+ .handler = cmdDomDirtyRateCalc,
|
|
+ .opts = opts_domdirtyrate_calc,
|
|
+ .info = info_domdirtyrate_calc,
|
|
+ .flags = 0
|
|
+ },
|
|
{.name = NULL}
|
|
};
|
|
--
|
|
2.27.0
|
|
|