From: "Alex Bennée" <alex.bennee@linaro.org>
To: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Cc: "Dr. David Alan Gilbert" <dave@treblig.org>,
qemu-devel@nongnu.org, "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>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"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>,
"Richard Henderson" <richard.henderson@linaro.org>
Subject: Re: [PATCH 9/9] contrib/plugins: add ips plugin example for cost modeling
Date: Tue, 18 Jun 2024 10:53:55 +0100 [thread overview]
Message-ID: <874j9qefv0.fsf@draig.linaro.org> (raw)
In-Reply-To: <4e5fded0-d1a9-4494-a66d-6488ce1bcb33@linaro.org> (Pierrick Bouvier's message of "Mon, 17 Jun 2024 15:29:56 -0700")
Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:
> On 6/17/24 13:56, Dr. David Alan Gilbert wrote:
>> * Pierrick Bouvier (pierrick.bouvier@linaro.org) wrote:
>>> On 6/14/24 15:00, Dr. David Alan Gilbert wrote:
>>>> * Pierrick Bouvier (pierrick.bouvier@linaro.org) wrote:
>>>>> Hi Dave,
>>>>>
>>>>> On 6/12/24 14:02, Dr. David Alan Gilbert wrote:
>>>>>> * Alex Bennée (alex.bennee@linaro.org) 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
>>>>>>> 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.
>>>>>>
>>>>>> A few random thoughts:
>>>>>> a) Are there any definitions of what a plugin that controls time
>>>>>> should do with a live migration?
>>>>>
>>>>> It's not something that was considered as part of this work.
>>>>
>>>> That's OK, the only thing is we need to stop anyone from hitting problems
>>>> when they don't realise it's not been addressed.
>>>> One way might be to add a migration blocker; see include/migration/blocker.h
>>>> then you might print something like 'Migration not available due to plugin ....'
>>>>
>>>
>>> So basically, we could make a call to migrate_add_blocker(), when someone
>>> request time_control through plugin API?
>>>
>>> IMHO, it's something that should be part of plugin API (if any plugin calls
>>> qemu_plugin_request_time_control()), instead of the plugin code itself. This
>>> way, any plugin getting time control automatically blocks any potential
>>> migration.
>> Note my question asked for a 'any definitions of what a plugin ..' -
>> so
>> you could define it that way, another one is to think that in the future
>> you may allow it and the plugin somehow interacts with migration not to
>> change time at certain migration phases.
>>
>
> I would be in favor to forbid usage for now in this context. I'm not
> sure why people would play with migration and plugins generally at
> this time (there might be experiments or use cases I'm not aware of),
> so a simple barrier preventing that seems ok.
>
> This plugin is part of an experiment where we implement a qemu feature
> (icount=auto in this case) by using plugins. If it turns into a
> successful usage and this plugin becomes popular, we can always lift
> the limitation later.
>
> @Alex, would you like to add this now (icount=auto is still not
> removed from qemu), or wait for integration, and add this as another
> patch?
I think we follow the deprecation process so once integrated we post a
deprecation notice in:
https://qemu.readthedocs.io/en/master/about/deprecated.html
and then remove it after a couple of releases.
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
next prev parent reply other threads:[~2024-06-18 9:53 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 [this message]
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
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=874j9qefv0.fsf@draig.linaro.org \
--to=alex.bennee@linaro.org \
--cc=agraf@csgraf.de \
--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=pierrick.bouvier@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.