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.
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
----------

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[] = {
{.name = "attach-device",
.handler = cmdAttachDevice,
@ -15041,5 +15093,11 @@ const vshCmdDef domManagementCmds[] = {
.info = info_guestinfo,
.flags = 0
},
{.name = "domdirtyrate-calc",
.handler = cmdDomDirtyRateCalc,
.opts = opts_domdirtyrate_calc,
.info = info_domdirtyrate_calc,
.flags = 0
},
{.name = NULL}
};