On 6/13/24 01:54, Philippe Mathieu-Daudé wrote:
On 12/6/24 17:35, Alex Bennée wrote:
From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
This plugin uses the new time control interface to make decisions
about the state of time during the emulation. The algorithm is
currently very simple. The user specifies an ips rate which applies
... IPS rate (Instructions Per Second) which ...
per core. If the core runs ahead of its allocated execution time the
plugin sleeps for a bit to let real time catch up. Either way time is
updated for the emulation as a function of total executed instructions
with some adjustments for cores that idle.
Examples
--------
Slow down execution of /bin/true:
$ num_insn=$(./build/qemu-x86_64 -plugin ./build/tests/plugin/libinsn.so -d plugin
/bin/true |& grep total | sed -e 's/.*: //')
$ time ./build/qemu-x86_64 -plugin
./build/contrib/plugins/libips.so,ips=$(($num_insn/4)) /bin/true
real 4.000s
Boot a Linux kernel simulating a 250MHz cpu:
$ /build/qemu-system-x86_64 -kernel /boot/vmlinuz-6.1.0-21-amd64 -append
"console=ttyS0" -plugin
./build/contrib/plugins/libips.so,ips=$((250*1000*1000)) -smp 1 -m 512
check time until kernel panic on serial0
Tested in system mode by booting a full debian system, and using:
$ sysbench cpu run
Performance decrease linearly with the given number of ips.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-Id: <20240530220610.1245424-7-pierrick.bouvier@linaro.org>
---
contrib/plugins/ips.c | 164 +++++++++++++++++++++++++++++++++++++++
contrib/plugins/Makefile | 1 +
2 files changed, 165 insertions(+)
create mode 100644 contrib/plugins/ips.c
diff --git a/contrib/plugins/ips.c b/contrib/plugins/ips.c
new file mode 100644
index 0000000000..db77729264
--- /dev/null
+++ b/contrib/plugins/ips.c
@@ -0,0 +1,164 @@
+/*
+ * ips rate limiting plugin.
The plugin names are really to packed to my taste (each time I look
for
one I have to open most source files to figure out the correct one); so
please ease my life by using a more descriptive header at least:
Instructions Per Second (IPS) rate limiting plugin.
Thanks.
I agree most of the plugin names are pretty cryptic, and they are
lacking a common "help" system, to describe what they do, and which
options are available for them. It's definitely something we could add
in the future.
Regarding what you reported, I'm totally ok with the change.
However, since this is a new series, I'm not if I or Alex should
change it. If it's ok for you to modify this Alex, it could be simpler
than waiting for me to push a new patch with just this.