Browse Source

contrib/plugins: allow setting of instructions per quantum

The default is we update time every 1/10th of a second or so. However
for some cases we might want to update time more frequently. Allow
this to be set via the command line through the ipq argument.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250603110204.838117-7-alex.bennee@linaro.org>
pull/287/head
Alex Bennée 10 months ago
parent
commit
002655381f
  1. 15
      contrib/plugins/ips.c
  2. 4
      docs/about/emulation.rst

15
contrib/plugins/ips.c

@ -145,6 +145,8 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
const qemu_info_t *info, int argc,
char **argv)
{
bool ipq_set = false;
for (int i = 0; i < argc; i++) {
char *opt = argv[i];
g_auto(GStrv) tokens = g_strsplit(opt, "=", 2);
@ -175,6 +177,14 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
return -1;
}
}
} else if (g_strcmp0(tokens[0], "ipq") == 0) {
max_insn_per_quantum = g_ascii_strtoull(tokens[1], NULL, 10);
if (!max_insn_per_quantum) {
fprintf(stderr, "bad ipq value: %s\n", tokens[0]);
return -1;
}
ipq_set = true;
} else {
fprintf(stderr, "option parsing failed: %s\n", opt);
return -1;
@ -182,7 +192,10 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
}
vcpus = qemu_plugin_scoreboard_new(sizeof(vCPUTime));
max_insn_per_quantum = max_insn_per_second / NUM_TIME_UPDATE_PER_SEC;
if (!ipq_set) {
max_insn_per_quantum = max_insn_per_second / NUM_TIME_UPDATE_PER_SEC;
}
if (max_insn_per_quantum == 0) {
fprintf(stderr, "minimum of %d instructions per second needed\n",

4
docs/about/emulation.rst

@ -811,6 +811,10 @@ This plugin can limit the number of Instructions Per Second that are executed::
* - ips=N
- Maximum number of instructions per cpu that can be executed in one second.
The plugin will sleep when the given number of instructions is reached.
* - ipq=N
- Instructions per quantum. How many instructions before we re-calculate time.
The lower the number the more accurate time will be, but the less efficient the plugin.
Defaults to ips/10
Other emulation features
------------------------

Loading…
Cancel
Save