1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

migration/dirtyrate: Introduce domdirtyrate-calc virsh api

Introduce domdirtyrate-calc virsh api to start calculating domain's
memory dirty rate:
	# virsh domdirtyrate-calc <domain> [--seconds <sec>]

Signed-off-by: Hao Wang <wanghao232@huawei.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Hao Wang 2021-03-16 20:32:47 +08:00 committed by Michal Privoznik
parent fbe99823e2
commit a2ae2dad06
2 changed files with 75 additions and 0 deletions

View File

@ -1704,6 +1704,23 @@ states other than "ok" or "error" the command also prints number of
seconds elapsed since the control interface entered its current state. 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 domdisplay
---------- ----------

View File

@ -14402,6 +14402,58 @@ cmdSetUserSSHKeys(vshControl *ctl, const vshCmd *cmd)
} }
/*
* "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[] = { const vshCmdDef domManagementCmds[] = {
{.name = "attach-device", {.name = "attach-device",
.handler = cmdAttachDevice, .handler = cmdAttachDevice,
@ -15041,5 +15093,11 @@ const vshCmdDef domManagementCmds[] = {
.info = info_guestinfo, .info = info_guestinfo,
.flags = 0 .flags = 0
}, },
{.name = "domdirtyrate-calc",
.handler = cmdDomDirtyRateCalc,
.opts = opts_domdirtyrate_calc,
.info = info_domdirtyrate_calc,
.flags = 0
},
{.name = NULL} {.name = NULL}
}; };