提交 42af2443 编写于 作者: H Hu Tao 提交者: Eric Blake

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

This enables user to modify cpu.shares even when domain is inactive.
上级 bb9f1bbf
...@@ -1596,6 +1596,9 @@ static const vshCmdOptDef opts_schedinfo[] = { ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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;
......
...@@ -570,11 +570,14 @@ This is roughly equivalent to doing a hibernate on a running computer, ...@@ -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 ...@@ -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.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册