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:
parent
fbe99823e2
commit
a2ae2dad06
@ -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
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
@ -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}
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user