qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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
>> + */
> 

  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).