virsh: add parameters --live, --config and --current to cmd schedinfo

This enables user to modify cpu.shares even when domain is inactive.
This commit is contained in:
Hu Tao 2011-05-17 14:20:03 +08:00 committed by Eric Blake
parent bb9f1bbf4a
commit 42af244347
2 changed files with 36 additions and 5 deletions

View File

@ -1596,6 +1596,9 @@ static const vshCmdOptDef opts_schedinfo[] = {
{"set", VSH_OT_STRING, VSH_OFLAG_NONE, N_("parameter=value")}, {"set", VSH_OT_STRING, VSH_OFLAG_NONE, N_("parameter=value")},
{"weight", VSH_OT_INT, VSH_OFLAG_NONE, N_("weight for XEN_CREDIT")}, {"weight", VSH_OT_INT, VSH_OFLAG_NONE, N_("weight for XEN_CREDIT")},
{"cap", VSH_OT_INT, VSH_OFLAG_NONE, N_("cap for XEN_CREDIT")}, {"cap", VSH_OT_INT, VSH_OFLAG_NONE, N_("cap for XEN_CREDIT")},
{"current", VSH_OT_BOOL, 0, N_("get/set current scheduler info")},
{"config", VSH_OT_BOOL, 0, N_("get/set value to be used on next boot")},
{"live", VSH_OT_BOOL, 0, N_("get/set value from running domain")},
{NULL, 0, 0, NULL} {NULL, 0, 0, NULL}
}; };
@ -1703,6 +1706,23 @@ cmdSchedinfo(vshControl *ctl, const vshCmd *cmd)
int update = 0; int update = 0;
int i, ret; int i, ret;
bool ret_val = false; bool ret_val = false;
unsigned int flags = 0;
int current = vshCommandOptBool(cmd, "current");
int config = vshCommandOptBool(cmd, "config");
int live = vshCommandOptBool(cmd, "live");
if (current) {
if (live || config) {
vshError(ctl, "%s", _("--current must be specified exclusively"));
return false;
}
flags = VIR_DOMAIN_SCHEDPARAM_CURRENT;
} else {
if (config)
flags |= VIR_DOMAIN_SCHEDPARAM_CONFIG;
if (live)
flags |= VIR_DOMAIN_SCHEDPARAM_LIVE;
}
if (!vshConnectionUsability(ctl, ctl->conn)) if (!vshConnectionUsability(ctl, ctl->conn))
return false; return false;
@ -1712,7 +1732,7 @@ cmdSchedinfo(vshControl *ctl, const vshCmd *cmd)
/* Print SchedulerType */ /* Print SchedulerType */
schedulertype = virDomainGetSchedulerType(dom, &nparams); schedulertype = virDomainGetSchedulerType(dom, &nparams);
if (schedulertype!= NULL){ if (schedulertype != NULL){
vshPrint(ctl, "%-15s: %s\n", _("Scheduler"), vshPrint(ctl, "%-15s: %s\n", _("Scheduler"),
schedulertype); schedulertype);
VIR_FREE(schedulertype); VIR_FREE(schedulertype);
@ -1741,7 +1761,11 @@ cmdSchedinfo(vshControl *ctl, const vshCmd *cmd)
/* Update parameters & refresh data */ /* Update parameters & refresh data */
if (update) { if (update) {
ret = virDomainSetSchedulerParameters(dom, params, nparams); if (flags || current)
ret = virDomainSetSchedulerParametersFlags(dom, params,
nparams, flags);
else
ret = virDomainSetSchedulerParameters(dom, params, nparams);
if (ret == -1) if (ret == -1)
goto cleanup; goto cleanup;

View File

@ -570,11 +570,14 @@ This is roughly equivalent to doing a hibernate on a running computer,
with all the same limitations. Open network connections may be with all the same limitations. Open network connections may be
severed upon restore, as TCP timeouts may have expired. severed upon restore, as TCP timeouts may have expired.
=item B<schedinfo> optional I<--set> B<parameter=value> I<domain-id> =item B<schedinfo> optional I<--set> B<parameter=value> I<domain-id> I<--config>
I<--live> I<--current>
=item B<schedinfo> optional I<--weight> B<number> optional I<--cap> B<number> I<domain-id> =item B<schedinfo> optional I<--weight> B<number> optional I<--cap> B<number>
I<domain-id>
Allows you to show (and set) the domain scheduler parameters. The parameters available for each hypervisor are: Allows you to show (and set) the domain scheduler parameters. The parameters
available for each hypervisor are:
LXC, QEMU/KVM (posix scheduler): cpu_shares LXC, QEMU/KVM (posix scheduler): cpu_shares
@ -582,6 +585,10 @@ Xen (credit scheduler): weight, cap
ESX (allocation scheduler): reservation, limit, shares ESX (allocation scheduler): reservation, limit, shares
If I<--live> is specified, set scheduler information of a running guest.
If I<--config> is specified, affect the next boot of a persistent guest.
If I<--current> is specified, affect the current guest state.
B<Note>: The cpu_shares parameter has a valid value range of 0-262144; Negative B<Note>: The cpu_shares parameter has a valid value range of 0-262144; Negative
values are wrapped to positive, and larger values are capped at the maximum. values are wrapped to positive, and larger values are capped at the maximum.
Therefore, -1 is a useful shorthand for 262144. Therefore, -1 is a useful shorthand for 262144.