qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Akihiko Odaki <akihiko.odaki@daynix.com>
To: "Peter Xu" <peterx@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>
Cc: Thomas Huth <thuth@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Yuri Benditovich <yuri.benditovich@daynix.com>,
	eduardo@habkost.net, marcel.apfelbaum@gmail.com,
	philmd@linaro.org, wangyanan55@huawei.com,
	dmitry.fleytman@gmail.com, jasowang@redhat.com,
	sriram.yagnaraman@est.tech, sw@weilnetz.de,
	qemu-devel@nongnu.org, yan@daynix.com,
	Fabiano Rosas <farosas@suse.de>,
	devel@lists.libvirt.org
Subject: Re: [PATCH v2 4/4] virtio-net: Add support for USO features
Date: Thu, 1 Aug 2024 14:05:54 +0900	[thread overview]
Message-ID: <39a8bb8b-4191-4f41-aaf7-06df24bf3280@daynix.com> (raw)
In-Reply-To: <Zqk6x2nd3Twz--75@x1n>

On 2024/07/31 4:11, Peter Xu wrote:
> On Tue, Jul 30, 2024 at 07:46:12PM +0100, Daniel P. Berrangé wrote:
>> On Tue, Jul 30, 2024 at 02:13:51PM -0400, Peter Xu wrote:
>>> On Mon, Jul 29, 2024 at 06:26:41PM +0100, Daniel P. Berrangé wrote:
>>>> On Mon, Jul 29, 2024 at 01:00:30PM -0400, Peter Xu wrote:
>>>>> On Mon, Jul 29, 2024 at 04:58:03PM +0100, Daniel P. Berrangé wrote:
>>>>>>
>>>>>> We've got two mutually conflicting goals with the machine type
>>>>>> definitions.
>>>>>>
>>>>>> Primarily we use them to ensure stable ABI, but an important
>>>>>> secondary goal is to enable new tunables to have new defaults
>>>>>> set, without having to update every mgmt app.  The latter
>>>>>> works very well when the defaults have no dependancy on the
>>>>>> platform kernel/OS, but breaks migration when they do have a
>>>>>> platform dependancy.
>>>>>>
>>>>>>>    - Firstly, never quietly flipping any bit that affects the ABI...
>>>>>>>
>>>>>>>    - Have a default value of off, then QEMU will always allow the VM to boot
>>>>>>>      by default, while advanced users can opt-in on new features.  We can't
>>>>>>>      make this ON by default otherwise some VMs can already fail to boot,
>>>>>>>
>>>>>>>    - If the host doesn't support the feature while the cmdline enabled it,
>>>>>>>      it needs to fail QEMU boot rather than flipping, so that it says "hey,
>>>>>>>      this host does not support running such VM specified, due to XXX
>>>>>>>      feature missing".
>>>>>>>
>>>>>>> That's the only way an user could understand what happened, and IMHO that's
>>>>>>> a clean way that we stick with QEMU cmdline on defining the guest ABI,
>>>>>>> while in which the machine type is the fundation of such definition, as the
>>>>>>> machine type can decides many of the rest compat properties.  And that's
>>>>>>> the whole point of the compat properties too (to make sure the guest ABI is
>>>>>>> stable).
>>>>>>>
>>>>>>> If kernel breaks it easily, all compat property things that we maintain can
>>>>>>> already stop making sense in general, because it didn't define the whole
>>>>>>> guest ABI..
>>>>>>>
>>>>>>> So AFAIU that's really what we used for years, I hope I didn't overlook
>>>>>>> somehting.  And maybe we don't yet need the "-platform" layer if we can
>>>>>>> keep up with this rule?
>>>>>>
>>>>>> We've failed at this for years wrt enabling use of new defaults that have
>>>>>> a platform depedancy, so historical practice isn't a good reference.
>>>>>>
>>>>>> There are 100's (possibly 1000's) of tunables set implicitly as part of
>>>>>> the machine type, and of those, libvirt likely only exposes a few 10's
>>>>>> of tunables. The vast majority are low level details that no mgmt app
>>>>>> wants to know about, they just want to accept QEMU's new defaults,
>>>>>> while preserving machine ABI. This is a good thing. No one wants the
>>>>>> burden of wiring up every single tunable into libvirt and mgmt apps.
>>>>>>
>>>>>> This is what the "-platform" concept would be intended to preserve. It
>>>>>> would allow a way to enable groups of settings that have a platform level
>>>>>> dependancy, without ever having to teach either libvirt or the mgmt apps
>>>>>> about the individual tunables.
>>>>>
>>>>> Do you think we can achieve similar goal by simply turning the feature to
>>>>> ON only after a few QEMU releases?  I also mentioned that idea below.
>>>>>
>>>>> https://lore.kernel.org/r/ZqQNKZ9_OPhDq2AK@x1n
>>>>>
>>>>> So far it really sounds like the right thing to do to me to fix all similar
>>>>> issues, even without introducing anything new we need to maintain.
>>>>
>>>> Turning a feature with a platform dependency to "on" implies that
>>>> the machine type will cease to work out of the box for platforms
>>>> which lack the feature. IMHO that's not acceptable behaviour for
>>>> any of our supported platforms.
>>>
>>> Right, that's why I was thinking whether we should just always be on the
>>> safe side, even if I just replied in the other email to Akihiko, that we do
>>> have the option to make this more aggresive by turning those to ON after
>>> even 1-2 years or even less.. and we have control of how aggressive this
>>> can be.
>>>
>>>>
>>>> IOW, "after a few QEMU releases" implies a delay of as much as
>>>> 5 years, while we wait for platforms which don't support the
>>>> feature to drop out of our supported targets list.  I don't
>>>> think that'll satisfy the desire to get the new feature
>>>> available to users as soon as practical for their particular
>>>> platform.
>>>
>>> The feature is always available since the 1st day, right?  We just need the
>>> user to opt-in, by specifying ON in the cmdline.
>>>
>>> That'll be my take on this that QEMU's default VM setup should be always
>>> bootable, migratable, and so on.  Then user opt-in on stuff like this one,
>>> where there's implication on the ABIs.  The "user" can also include
>>> Libvirt.  I mean when something is really important, Libvirt should, IMHO,
>>> opt-in by treating that similarly like many cpu properties, and by probing
>>> the host first.
>>>
>>> IIUC there aren't a lot of things like that (part of guest ABI & host
>>> kernel / HW dependent), am I right?  Otherwise I would expect more failures
>>> like this one, but it isn't as much as that yet.  IIUC it means the efforts
>>> to make Libvirt get involved should be hopefully under control too.  The
>>> worst case is Libvirt doesn't auto-on it, but again the user should always
>>> have the option to turn it on when it's necessary.
>>
>> If it is left to libvirt, then it would very likely end up being a user
>> opt-in, not auto-enabled.
> 
> Not sure whether there's other opinions, but that's definitely fine by me.
> 
> I think it even makes more sense, as even if Libvirt probed the host and
> auto-on the feature, it also means Libvirt made a decision for the user,
> saying "having a better performance" is more important than "being able to
> migrate this VM everywhere".
> 
> I don't see a way that can make such fair decision besides requesting the
> user to opt-in always for those, then the user is fully aware what is
> enabled, with the hope that when a migration fails later with "target host
> doesn't support feature XXX" the user is crystal clear on what happened.

I think it is better to distinguish saying "having a better performance 
is more important than being able to migrate this VM everywhere" from 
explicitly selecting all available offload features; the latter is lot 
of chores. More importantly, users may not just know these features may 
prevent migration; they may just look like performance features nice to 
have at first glance.

I don' think what a user would want are not individual performance 
knobs, but a user is more likely to need to express the platforms they 
would want to migrate VMs on. There are several possible scenarios in 
particular:
1) Migration everywhere
2) Migration on specific machines
3) Migration on some known platforms
4) No migration (migration on nowhere)

If a user chooses 1-3), QEMU may reject platform-dependent features even 
if the user requests one; in this way, we don't need the users to make 
things crystal clear, but we can expect QEMU does so.

If a user chooses 2-4), QEMU may enable all offloading features 
available on the specified platforms. Again, the user will no longer 
have to know each individual performance features. QEMU may also reject 
migration to platforms not specified to prevent misconfiguration.

The -platform proposal earlier corresponds to 3). However it has a 
downside that QEMU needs to know about platforms, which may not be 
trivial. In that case, we can support 1), 2), and 4).

Regards,
Akihiko Odaki


  parent reply	other threads:[~2024-08-01  5:07 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-31 22:31 [PATCH v2 0/4] virtio-net: add USO feature (UDP segmentation offload) Yuri Benditovich
2023-07-31 22:31 ` [PATCH v2 1/4] tap: Add USO support to tap device Yuri Benditovich
2023-07-31 22:31 ` [PATCH v2 2/4] tap: Add check for USO features Yuri Benditovich
2023-07-31 22:31 ` [PATCH v2 3/4] virtio-net: Add USO flags to vhost support Yuri Benditovich
2023-07-31 22:31 ` [PATCH v2 4/4] virtio-net: Add support for USO features Yuri Benditovich
2023-08-02  5:17   ` Akihiko Odaki
2024-07-25 22:18   ` Peter Xu
2024-07-26  2:12     ` Jason Wang
2024-07-26 15:01       ` Peter Xu
2024-07-26  6:08     ` Michael S. Tsirkin
2024-07-26  7:03       ` Thomas Huth
2024-07-26  7:25         ` Michael S. Tsirkin
2024-07-26 11:32           ` Peter Xu
2024-07-26 17:39           ` Thomas Huth
2024-07-26 20:55             ` Peter Xu
2024-08-01  5:41             ` Michael S. Tsirkin
2024-07-26  8:48         ` Daniel P. Berrangé
2024-07-26 14:43           ` Peter Xu
2024-07-26 15:17             ` Daniel P. Berrangé
2024-07-26 20:47               ` Peter Xu
2024-07-28 15:18                 ` Akihiko Odaki
2024-07-29  3:50                   ` Jason Wang
2024-07-29  4:45                     ` Akihiko Odaki
2024-07-29 14:29                       ` Peter Xu
2024-07-29 16:43                         ` Akihiko Odaki
2024-07-30  2:04                           ` Jason Wang
2024-07-30  2:57                             ` Akihiko Odaki
2024-07-30  3:03                               ` Jason Wang
2024-07-30  3:11                                 ` Akihiko Odaki
2024-07-30  3:17                                   ` Jason Wang
2024-07-30  3:28                                     ` Akihiko Odaki
2024-07-30  3:45                                       ` Jason Wang
2024-07-30 10:23                                         ` Akihiko Odaki
2024-07-30 11:52                                           ` Yuri Benditovich
2024-07-31  2:05                                           ` Jason Wang
2024-07-29 15:58                 ` Daniel P. Berrangé
2024-07-29 17:00                   ` Peter Xu
2024-07-29 17:23                     ` Akihiko Odaki
2024-07-30 18:02                       ` Peter Xu
2024-07-29 17:26                     ` Daniel P. Berrangé
2024-07-30 18:13                       ` Peter Xu
2024-07-30 18:46                         ` Daniel P. Berrangé
2024-07-30 19:11                           ` Peter Xu
2024-07-30 19:22                             ` Michael S. Tsirkin
2024-07-30 20:03                               ` Peter Xu
2024-07-30 21:32                                 ` Michael S. Tsirkin
2024-07-30 22:01                                   ` Peter Xu
2024-07-31  2:01                                   ` Jason Wang
2024-07-31  7:04                                   ` Daniel P. Berrangé
2024-07-31  7:41                                     ` Michael S. Tsirkin
2024-07-31 12:57                                       ` Peter Xu
2024-08-01  2:28                                         ` Jason Wang
2024-08-01  5:28                                           ` Akihiko Odaki
2024-08-01  5:34                                         ` Michael S. Tsirkin
2024-08-01  5:51                                         ` Michael S. Tsirkin
2024-08-01 15:36                                           ` Peter Xu
2024-08-01 15:39                                             ` Michael S. Tsirkin
2024-08-01 15:45                                           ` Daniel P. Berrangé
2024-08-01 15:50                                             ` Michael S. Tsirkin
2024-08-01 15:58                                               ` Daniel P. Berrangé
2024-08-01  5:05                             ` Akihiko Odaki [this message]
2024-08-01 15:13                               ` Peter Xu
2024-08-01 15:15                                 ` Michael S. Tsirkin
2024-08-01 15:25                                   ` Daniel P. Berrangé
2024-08-02  4:30                                 ` Akihiko Odaki
2024-08-02 13:21                                   ` Michael S. Tsirkin
2024-08-02 15:05                                   ` Peter Xu
2024-08-02 15:54                                     ` Akihiko Odaki
2024-08-02 16:26                                       ` Peter Xu
2024-08-02 16:40                                         ` Michael S. Tsirkin
2024-08-02 20:56                                           ` Peter Xu
2024-08-04  6:49                                         ` Akihiko Odaki
2024-08-04 13:08                                           ` Peter Xu
2024-08-04 13:41                                             ` Michael S. Tsirkin
2024-08-05  7:27                                             ` Akihiko Odaki
2024-08-06 20:41                                               ` Peter Xu
2024-08-08 11:43                                                 ` Akihiko Odaki
2024-08-08 13:55                                                   ` Peter Xu
2024-08-08 14:45                                                     ` Michael S. Tsirkin
2024-08-09 10:28                                                     ` Akihiko Odaki
2024-08-05  7:30                                           ` Michael S. Tsirkin
2024-08-05  7:53                                             ` Akihiko Odaki
2024-08-05  8:23                                               ` Michael S. Tsirkin
2024-08-05  9:37                                                 ` Akihiko Odaki
2024-08-05 10:08                                                   ` Michael S. Tsirkin
2024-08-06  7:35                                                     ` Akihiko Odaki
2024-08-06 13:29                                                       ` Michael S. Tsirkin
2024-08-08 10:52                                                         ` Akihiko Odaki
2024-08-08 10:54                                                           ` Michael S. Tsirkin
2024-08-08 11:03                                                             ` Akihiko Odaki
2024-08-08 11:12                                                               ` Michael S. Tsirkin
2024-08-08 11:32                                                                 ` Akihiko Odaki
2024-08-08 14:21                                                                   ` Peter Xu
2024-08-08 14:15                                                                 ` Peter Xu
2024-08-08 14:47                                                                   ` Michael S. Tsirkin
2024-08-08 15:25                                                                     ` Peter Xu
2024-08-09 12:50                                                                       ` Fabiano Rosas
2024-08-18  5:04                                                                         ` Akihiko Odaki
2024-08-18  7:03                                                                           ` Michael S. Tsirkin
2024-08-19  4:27                                                                             ` Akihiko Odaki
2024-08-11  7:35                                                                       ` Michael S. Tsirkin
2024-08-18  5:09                                                                       ` Akihiko Odaki
2024-07-29 17:02                   ` Akihiko Odaki
2024-08-01  5:38                     ` Michael S. Tsirkin
2024-07-29  3:52       ` Jason Wang
2023-08-09 20:21 ` [PATCH v2 0/4] virtio-net: add USO feature (UDP segmentation offload) Yuri Benditovich
2023-08-10  3:14   ` Jason Wang

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=39a8bb8b-4191-4f41-aaf7-06df24bf3280@daynix.com \
    --to=akihiko.odaki@daynix.com \
    --cc=berrange@redhat.com \
    --cc=devel@lists.libvirt.org \
    --cc=dmitry.fleytman@gmail.com \
    --cc=eduardo@habkost.net \
    --cc=farosas@suse.de \
    --cc=jasowang@redhat.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=mst@redhat.com \
    --cc=peterx@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=sriram.yagnaraman@est.tech \
    --cc=sw@weilnetz.de \
    --cc=thuth@redhat.com \
    --cc=wangyanan55@huawei.com \
    --cc=yan@daynix.com \
    --cc=yuri.benditovich@daynix.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).