From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Alex Bennée" <alex.bennee@linaro.org>,
qemu-devel@nongnu.org
Cc: David Hildenbrand <david@redhat.com>,
Ilya Leoshkevich <iii@linux.ibm.com>,
Daniel Henrique Barboza <danielhb413@gmail.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Mark Burton <mburton@qti.qualcomm.com>,
qemu-s390x@nongnu.org, Peter Maydell <peter.maydell@linaro.org>,
kvm@vger.kernel.org, Laurent Vivier <lvivier@redhat.com>,
Halil Pasic <pasic@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Alexandre Iooss <erdnaxe@crans.org>,
qemu-arm@nongnu.org, Alexander Graf <agraf@csgraf.de>,
Nicholas Piggin <npiggin@gmail.com>,
Marco Liebel <mliebel@qti.qualcomm.com>,
Thomas Huth <thuth@redhat.com>,
Roman Bolshakov <rbolshakov@ddn.com>,
qemu-ppc@nongnu.org, Mahmoud Mandour <ma.mandourr@gmail.com>,
Cameron Esfahani <dirty@apple.com>,
Jamie Iles <quic_jiles@quicinc.com>,
"Dr. David Alan Gilbert" <dave@treblig.org>,
Richard Henderson <richard.henderson@linaro.org>
Subject: Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling
Date: Fri, 14 Jun 2024 10:39:38 -0700 [thread overview]
Message-ID: <db8d82d4-c88d-45ac-bc99-e85a4240add2@linaro.org> (raw)
In-Reply-To: <31ba8570-9009-4530-934d-3b73b07520d0@linaro.org>
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.
Let me know how you deal with this usually, and I'll do what is needed.
Thanks,
Pierrick
>> + * 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
>> + */
>
next prev parent reply other threads:[~2024-06-14 17:40 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-12 15:34 [PATCH 0/9] maintainer updates (gdbstub, plugins, time control) Alex Bennée
2024-06-12 15:35 ` [PATCH 1/9] include/exec: add missing include guard comment Alex Bennée
2024-06-12 15:56 ` Pierrick Bouvier
2024-06-18 23:08 ` Richard Henderson
2024-06-12 15:35 ` [PATCH 2/9] gdbstub: move enums into separate header Alex Bennée
2024-06-12 15:57 ` Pierrick Bouvier
2024-06-18 23:09 ` Richard Henderson
2024-06-12 15:35 ` [PATCH 3/9] plugins: Ensure register handles are not NULL Alex Bennée
2024-06-12 15:58 ` Pierrick Bouvier
2024-06-18 23:10 ` Richard Henderson
2024-06-12 15:35 ` [PATCH 4/9] sysemu: add set_virtual_time to accel ops Alex Bennée
2024-06-18 23:12 ` Richard Henderson
2024-06-12 15:35 ` [PATCH 5/9] qtest: use cpu interface in qtest_clock_warp Alex Bennée
2024-06-12 15:35 ` [PATCH 6/9] sysemu: generalise qtest_warp_clock as qemu_clock_advance_virtual_time Alex Bennée
2024-06-12 15:35 ` [PATCH 7/9] qtest: move qtest_{get, set}_virtual_clock to accel/qtest/qtest.c Alex Bennée
2024-06-12 15:35 ` [PATCH 8/9] plugins: add time control API Alex Bennée
2024-06-12 15:56 ` Pierrick Bouvier
2024-06-12 19:37 ` Alex Bennée
2024-06-12 19:54 ` Pierrick Bouvier
2024-06-13 8:57 ` Philippe Mathieu-Daudé
2024-06-13 15:56 ` Alex Bennée
2024-06-14 17:36 ` Pierrick Bouvier
2024-06-12 15:35 ` [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling Alex Bennée
2024-06-12 21:02 ` Dr. David Alan Gilbert
2024-06-14 17:42 ` Pierrick Bouvier
2024-06-14 22:00 ` Dr. David Alan Gilbert
2024-06-17 19:19 ` Pierrick Bouvier
2024-06-17 20:56 ` Dr. David Alan Gilbert
2024-06-17 22:29 ` Pierrick Bouvier
2024-06-17 22:45 ` Dr. David Alan Gilbert
2024-06-18 9:53 ` Alex Bennée
2024-06-19 4:40 ` Pierrick Bouvier
2024-06-19 9:49 ` Alex Bennée
2024-06-19 15:06 ` Pierrick Bouvier
2024-06-13 8:54 ` Philippe Mathieu-Daudé
2024-06-14 17:39 ` Pierrick Bouvier [this message]
2024-06-16 18:43 ` Alex Bennée
2024-06-17 19:11 ` Pierrick Bouvier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=db8d82d4-c88d-45ac-bc99-e85a4240add2@linaro.org \
--to=pierrick.bouvier@linaro.org \
--cc=agraf@csgraf.de \
--cc=alex.bennee@linaro.org \
--cc=borntraeger@linux.ibm.com \
--cc=danielhb413@gmail.com \
--cc=dave@treblig.org \
--cc=david@redhat.com \
--cc=dirty@apple.com \
--cc=erdnaxe@crans.org \
--cc=iii@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=lvivier@redhat.com \
--cc=ma.mandourr@gmail.com \
--cc=mburton@qti.qualcomm.com \
--cc=mliebel@qti.qualcomm.com \
--cc=mtosatti@redhat.com \
--cc=npiggin@gmail.com \
--cc=pasic@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=quic_jiles@quicinc.com \
--cc=rbolshakov@ddn.com \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).