[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modelin
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling |
Date: |
Thu, 13 Jun 2024 10:54:34 +0200 |
User-agent: |
Mozilla Thunderbird |
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.
+ * This plugin can be used to restrict the execution of a system to a
+ * particular number of Instructions Per Second (ips). This controls
+ * time as seen by the guest so while wall-clock time may be longer
+ * from the guests point of view time will pass at the normal rate.
+ *
+ * This uses the new plugin API which allows the plugin to control
+ * system time.
+ *
+ * Copyright (c) 2023 Linaro Ltd
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
- Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling, (continued)
- Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling, Pierrick Bouvier, 2024/06/14
- Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling, Dr. David Alan Gilbert, 2024/06/14
- Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling, Pierrick Bouvier, 2024/06/17
- Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling, Dr. David Alan Gilbert, 2024/06/17
- Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling, Pierrick Bouvier, 2024/06/17
- Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling, Dr. David Alan Gilbert, 2024/06/17
- Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling, Alex Bennée, 2024/06/18
- Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling, Pierrick Bouvier, 2024/06/19
- Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling, Alex Bennée, 2024/06/19
- Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling, Pierrick Bouvier, 2024/06/19
Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling,
Philippe Mathieu-Daudé <=