[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH 0/5] Implement icount=auto using TCG Plugins
From: |
Pierrick Bouvier |
Subject: |
[RFC PATCH 0/5] Implement icount=auto using TCG Plugins |
Date: |
Wed, 13 Mar 2024 14:54:59 +0400 |
The goal here is to be able to scale temporally execution of qemu-user/system,
using a given number of instructions per second.
We define a virtual clock, that can be late or in advance compared to real time.
When we are in advance, we slow execution (by sleeping) until catching real
time.
Finally, we should be able to cleanup icount=auto mode completely, and keep
icount usage for determistic purposes only.
It is built upon new TCG Plugins inline ops (store + conditional callbacks):
20240312075428.244210-1-pierrick.bouvier@linaro.org
Example in user-mode:
- Retrieve number of instructions to execute /bin/true
$ ./build/qemu-x86_64 -plugin ./build/tests/plugin/libinsn.so -d plugin
/bin/true
cpu 0 insns: 120546
total insns: 120546
- Slow execution to match 5 seconds
$ time ./build/qemu-x86_64 -plugin
./build/contrib/plugins/libips,ips=$((120546/5)) /bin/true
real 0m4.985s
Alex Bennée (4):
sysemu: add set_virtual_time to accel ops
qtest: use cpu interface in qtest_clock_warp
sysemu: generalise qtest_warp_clock as qemu_clock_advance_virtual_time
plugins: add time control API
Pierrick Bouvier (1):
contrib/plugins: add ips plugin example for cost modelling
include/qemu/qemu-plugin.h | 23 ++
include/qemu/timer.h | 15 ++
include/sysemu/accel-ops.h | 18 +-
include/sysemu/cpu-timers.h | 3 +-
include/sysemu/qtest.h | 1 +
accel/qtest/qtest.c | 1 +
contrib/plugins/ips.c | 239 ++++++++++++++++++
plugins/api.c | 31 +++
...t-virtual-clock.c => cpus-virtual-clock.c} | 5 +
system/cpus.c | 11 +
system/qtest.c | 27 +-
util/qemu-timer.c | 26 ++
contrib/plugins/Makefile | 1 +
plugins/qemu-plugins.symbols | 2 +
stubs/meson.build | 2 +-
15 files changed, 379 insertions(+), 26 deletions(-)
create mode 100644 contrib/plugins/ips.c
rename stubs/{cpus-get-virtual-clock.c => cpus-virtual-clock.c} (68%)
--
2.39.2
- [RFC PATCH 0/5] Implement icount=auto using TCG Plugins,
Pierrick Bouvier <=
- [RFC PATCH 1/5] sysemu: add set_virtual_time to accel ops, Pierrick Bouvier, 2024/03/13
- [RFC PATCH 3/5] sysemu: generalise qtest_warp_clock as qemu_clock_advance_virtual_time, Pierrick Bouvier, 2024/03/13
- [RFC PATCH 4/5] plugins: add time control API, Pierrick Bouvier, 2024/03/13
- [RFC PATCH 5/5] contrib/plugins: add ips plugin example for cost modelling, Pierrick Bouvier, 2024/03/13
- [RFC PATCH 2/5] qtest: use cpu interface in qtest_clock_warp, Pierrick Bouvier, 2024/03/13