- Adds 'working_set_request', 'working_set_config' HMP functions Start qemu with '-monitor telnet:127.0.0.1:4444,server=on,wait=off'
>> telnet localhost 4444 (qemu) working_set_config 200 800 3000 750 1000 (qemu) working_set_request (qemu) qom-get /machine/peripheral/balloon0 guest-working-set { "working_set": { "ws3": { "memory-size-bytes": { "anon": 298287104, "file": 647041024 }, "idle-age": 4294967292 }, "ws2": { "memory-size-bytes": { "anon": 4505600, "file": 2252800 }, "idle-age": 3000 }, "ws1": { "memory-size-bytes": { "anon": 1228800, "file": 614400 }, "idle-age": 800 }, "ws0": { "memory-size-bytes": { "anon": 409600, "file": 204800 }, "idle-age": 200 } } } Signed-off-by: T.J. Alumbaugh <talum...@google.com> --- hmp-commands.hx | 26 ++++++++++++++++++++++++++ hw/core/machine-hmp-cmds.c | 21 +++++++++++++++++++++ include/monitor/hmp.h | 2 ++ 3 files changed, 49 insertions(+) diff --git a/hmp-commands.hx b/hmp-commands.hx index 2cbd0f77a0..8ed044b23f 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -1398,6 +1398,32 @@ SRST Request VM to change its memory allocation to *value* (in MB). ERST + { + .name = "working_set_config", + .args_type = "i0:i,i1:i,i2:i,refresh:i,report:i", + .params = "bin intervals 0-2, refresh and report thresholds", + .help = "Working Set intervals, refresh/report thresholds (ms)", + .cmd = hmp_working_set_config, + }, + +SRST +``working_set_config`` + Set the intervals (in ms), refresh, report thresholds for Working Set reporting +ERST + + { + .name = "working_set_request", + .args_type = "", + .params = "", + .help = "Request the Working Set of the guest.", + .cmd = hmp_working_set_request, + }, + +SRST +``working_set_request`` + Request the Working Set from the guest. +ERST + { .name = "set_link", .args_type = "name:s,up:b", diff --git a/hw/core/machine-hmp-cmds.c b/hw/core/machine-hmp-cmds.c index c3e55ef9e9..3c0a7694a2 100644 --- a/hw/core/machine-hmp-cmds.c +++ b/hw/core/machine-hmp-cmds.c @@ -237,6 +237,27 @@ void hmp_balloon(Monitor *mon, const QDict *qdict) hmp_handle_error(mon, err); } +void hmp_working_set_request(Monitor *mon, const QDict *qdict) +{ + Error *err = NULL; + + qmp_working_set_request(&err); + hmp_handle_error(mon, err); +} + +void hmp_working_set_config(Monitor *mon, const QDict *qdict) +{ + uint64_t i0 = qdict_get_int(qdict, "i0"); + uint64_t i1 = qdict_get_int(qdict, "i1"); + uint64_t i2 = qdict_get_int(qdict, "i2"); + uint64_t refresh = qdict_get_int(qdict, "refresh"); + uint64_t report = qdict_get_int(qdict, "report"); + Error *err = NULL; + + qmp_working_set_config(i0, i1, i2, refresh, report, &err); + hmp_handle_error(mon, err); +} + void hmp_info_memory_devices(Monitor *mon, const QDict *qdict) { Error *err = NULL; diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h index 13f9a2dedb..a1e6c5e92a 100644 --- a/include/monitor/hmp.h +++ b/include/monitor/hmp.h @@ -59,6 +59,8 @@ void hmp_nmi(Monitor *mon, const QDict *qdict); void hmp_info_network(Monitor *mon, const QDict *qdict); void hmp_set_link(Monitor *mon, const QDict *qdict); void hmp_balloon(Monitor *mon, const QDict *qdict); +void hmp_working_set_config(Monitor *mon, const QDict *qdict); +void hmp_working_set_request(Monitor *mon, const QDict *qdict); void hmp_loadvm(Monitor *mon, const QDict *qdict); void hmp_savevm(Monitor *mon, const QDict *qdict); void hmp_delvm(Monitor *mon, const QDict *qdict); -- 2.41.0.rc0.172.g3f132b7071-goog