mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
kvm: support -overcommit cpu-pm=on|off
With this flag, kvm allows guest to control host CPU power state. This increases latency for other processes using same host CPU in an unpredictable way, but if decreases idle entry/exit times for the running VCPU, so to use it QEMU needs a hint about whether host CPU is overcommitted, hence the flag name. Follow-up patches will expose this capability to guest (using mwait leaf). Based on a patch by Wanpeng Li <kernellwp@gmail.com> . Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Message-Id: <20180622192148.178309-2-mst@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
0c8465440d
commit
6f131f13e6
4 changed files with 79 additions and 1 deletions
32
vl.c
32
vl.c
|
@ -142,6 +142,7 @@ ram_addr_t ram_size;
|
|||
const char *mem_path = NULL;
|
||||
int mem_prealloc = 0; /* force preallocation of physical target memory */
|
||||
bool enable_mlock = false;
|
||||
bool enable_cpu_pm = false;
|
||||
int nb_nics;
|
||||
NICInfo nd_table[MAX_NICS];
|
||||
int autostart;
|
||||
|
@ -390,6 +391,22 @@ static QemuOptsList qemu_realtime_opts = {
|
|||
},
|
||||
};
|
||||
|
||||
static QemuOptsList qemu_overcommit_opts = {
|
||||
.name = "overcommit",
|
||||
.head = QTAILQ_HEAD_INITIALIZER(qemu_overcommit_opts.head),
|
||||
.desc = {
|
||||
{
|
||||
.name = "mem-lock",
|
||||
.type = QEMU_OPT_BOOL,
|
||||
},
|
||||
{
|
||||
.name = "cpu-pm",
|
||||
.type = QEMU_OPT_BOOL,
|
||||
},
|
||||
{ /* end of list */ }
|
||||
},
|
||||
};
|
||||
|
||||
static QemuOptsList qemu_msg_opts = {
|
||||
.name = "msg",
|
||||
.head = QTAILQ_HEAD_INITIALIZER(qemu_msg_opts.head),
|
||||
|
@ -3906,7 +3923,20 @@ int main(int argc, char **argv, char **envp)
|
|||
if (!opts) {
|
||||
exit(1);
|
||||
}
|
||||
enable_mlock = qemu_opt_get_bool(opts, "mlock", true);
|
||||
/* Don't override the -overcommit option if set */
|
||||
enable_mlock = enable_mlock ||
|
||||
qemu_opt_get_bool(opts, "mlock", true);
|
||||
break;
|
||||
case QEMU_OPTION_overcommit:
|
||||
opts = qemu_opts_parse_noisily(qemu_find_opts("overcommit"),
|
||||
optarg, false);
|
||||
if (!opts) {
|
||||
exit(1);
|
||||
}
|
||||
/* Don't override the -realtime option if set */
|
||||
enable_mlock = enable_mlock ||
|
||||
qemu_opt_get_bool(opts, "mem-lock", false);
|
||||
enable_cpu_pm = qemu_opt_get_bool(opts, "cpu-pm", false);
|
||||
break;
|
||||
case QEMU_OPTION_msg:
|
||||
opts = qemu_opts_parse_noisily(qemu_find_opts("msg"), optarg,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue