[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 06/17] contrib/plugins: allow setting of instructions per quan
From: |
Alex Bennée |
Subject: |
[PATCH v4 06/17] contrib/plugins: allow setting of instructions per quantum |
Date: |
Tue, 3 Jun 2025 12:01:53 +0100 |
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.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
v4
- simplify error checking, don't bother with errno
v3
- error checking for ipq
v2
- checkpatch fixes.
---
docs/about/emulation.rst | 4 ++++
contrib/plugins/ips.c | 15 ++++++++++++++-
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/docs/about/emulation.rst b/docs/about/emulation.rst
index a72591ee4d..456d01d5b0 100644
--- a/docs/about/emulation.rst
+++ b/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
------------------------
diff --git a/contrib/plugins/ips.c b/contrib/plugins/ips.c
index eb4418c25b..c9948976f6 100644
--- a/contrib/plugins/ips.c
+++ b/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",
--
2.47.2
- [PATCH v4 00/17] Maintainer updates for May (testing, plugins, virtio-gpu) - pre-PR, Alex Bennée, 2025/06/03
- [PATCH v4 07/17] MAINTAINERS: add myself to virtio-gpu for Odd Fixes, Alex Bennée, 2025/06/03
- [PATCH v4 04/17] tests/qtest: Avoid unaligned access in IGB test, Alex Bennée, 2025/06/03
- [PATCH v4 01/17] tests/docker: expose $HOME/.cache/qemu as docker volume, Alex Bennée, 2025/06/03
- [PATCH v4 05/17] contrib/plugins: add a scaling factor to the ips arg, Alex Bennée, 2025/06/03
- [PATCH v4 06/17] contrib/plugins: allow setting of instructions per quantum,
Alex Bennée <=
- [PATCH v4 09/17] hw/display: re-arrange memory region tracking, Alex Bennée, 2025/06/03
- Re: [PATCH v4 09/17] hw/display: re-arrange memory region tracking, Akihiko Odaki, 2025/06/05
- Re: [PATCH v4 09/17] hw/display: re-arrange memory region tracking, Alex Bennée, 2025/06/05
- Re: [PATCH v4 09/17] hw/display: re-arrange memory region tracking, Akihiko Odaki, 2025/06/06
- Re: [PATCH v4 09/17] hw/display: re-arrange memory region tracking, Alex Bennée, 2025/06/06
- Re: [PATCH v4 09/17] hw/display: re-arrange memory region tracking, Akihiko Odaki, 2025/06/06
- Re: [PATCH v4 09/17] hw/display: re-arrange memory region tracking, Akihiko Odaki, 2025/06/08
[PATCH v4 11/17] ui/gtk-gl-area: Remove extra draw call in refresh, Alex Bennée, 2025/06/03
[PATCH v4 12/17] virtio-gpu: support context init multiple timeline, Alex Bennée, 2025/06/03
[PATCH v4 08/17] MAINTAINERS: add Akihiko and Dmitry as reviewers, Alex Bennée, 2025/06/03