On 2023/11/13 20:44, Yuri Benditovich wrote:
>
>
> On Sat, Nov 11, 2023 at 5:28 PM Akihiko Odaki <akihiko.odaki@daynix.com
> <mailto:akihiko.odaki@daynix.com>> wrote:
>
> On 2023/11/03 22:14, Yuri Benditovich wrote:
> >
> >
> > On Fri, Nov 3, 2023 at 11:55 AM Akihiko Odaki
> <akihiko.odaki@daynix.com <mailto:akihiko.odaki@daynix.com>
> > <mailto:akihiko.odaki@daynix.com
> <mailto:akihiko.odaki@daynix.com>>> wrote:
> >
> > On 2023/11/03 18:35, Yuri Benditovich wrote:
> > >
> > >
> > > On Thu, Nov 2, 2023 at 4:56 PM Akihiko Odaki
> > <akihiko.odaki@daynix.com <mailto:akihiko.odaki@daynix.com>
> <mailto:akihiko.odaki@daynix.com <mailto:akihiko.odaki@daynix.com>>
> > > <mailto:akihiko.odaki@daynix.com
> <mailto:akihiko.odaki@daynix.com>
> > <mailto:akihiko.odaki@daynix.com
> <mailto:akihiko.odaki@daynix.com>>>> wrote:
> > >
> > > On 2023/11/02 19:20, Yuri Benditovich wrote:
> > > >
> > > >
> > > > On Thu, Nov 2, 2023 at 11:33 AM Michael S. Tsirkin
> > > <mst@redhat.com <mailto:mst@redhat.com>
> <mailto:mst@redhat.com <mailto:mst@redhat.com>>
> > <mailto:mst@redhat.com <mailto:mst@redhat.com>
> <mailto:mst@redhat.com <mailto:mst@redhat.com>>>
> > > > <mailto:mst@redhat.com <mailto:mst@redhat.com>
> <mailto:mst@redhat.com <mailto:mst@redhat.com>>
> > <mailto:mst@redhat.com <mailto:mst@redhat.com>
> <mailto:mst@redhat.com <mailto:mst@redhat.com>>>>> wrote:
> > > >
> > > > On Thu, Nov 02, 2023 at 11:09:27AM +0200, Yuri
> > Benditovich wrote:
> > > > > Probably we mix two different patches in this
> > discussion.
> > > > > Focusing on the patch in the e-mail header:
> > > > >
> > > > > IMO it is not acceptable to fail QEMU run
> for one
> > feature
> > > that we
> > > > can't make
> > > > > active when we silently drop all other
> features in
> > such a
> > > case.
> > > >
> > > > If the feature is off by default then it seems more
> > reasonable
> > > > and silent masking can be seen as a bug.
> > > > Most virtio features are on by default this is
> why it's
> > > > reasonable to mask them.
> > > >
> > > >
> > > > If we are talking about RSS: setting it initially
> off is the
> > > development
> > > > time decision.
> > > > When it will be completely stable there is no reason to
> > keep it
> > > off by
> > > > default, so this is more a question of time and of a
> > readiness of
> > > libvirt.
> > >
> > > It is not ok to make "on" the default; that will
> enable RSS
> > even when
> > > eBPF steering support is not present and can result in
> > performance
> > > degradation.
> > >
> > >
> > > Exactly as it is today - with vhost=on the host does not
> suggest RSS
> > > without eBPF.
> > > I do not understand what you call "performance
> degradation", can you
> > > describe the scenario?
> >
> > I was not clear, but I was talking about the case of
> vhost=off or peers
> > other than tap (e.g., user). rss=on employs in-qemu RSS,
> which incurs
> > overheads for such configurations.
> >
> >
> > So, vhost=off OR peers other than tap:
> >
> > In the case of peers other than tap (IMO) we're not talking about
> > performance at all.
> > Backends like "user" (without vnet_hdr) do not support _many_
> > performance-oriented features.
> > If RSS is somehow "supported" for such backends this is rather a
> > misunderstanding (IMO again).
>
> We do not need to ensure good performance when RSS is enabled by the
> guest for backends without eBPF steering program as you say. In-QEMU
> RSS
> is only useful for testing and not meant to improve the performance.
>
> However, if you set rss=on, QEMU will advertise the availability of RSS
> feature. The guest will have no mean to know if it's implemented in a
> way not performance-wise so it may decide to use the feature to improve
> the performance, which can result in performance degradation.
> Therefore,
> it's better not to set rss=on for such backends.
>
>
> I still do not understand what is the scenario where you see or suspect
> the mentioned "performance degradation".
> We can discuss whether such a problem exists as soon as you explain it.
The scenario is that:
- rss=on,
- A backend without eBPF steering support is in use, and
- The guest expects VIRTIO_NET_F_RSS has little overheads as hardware
RSS implementations do.
I consider the risk of the performance degradation in such a situation
is the reason why virtio-net emits a warning ("Can't load eBPF RSS -
fallback to software RSS") when in-QEMU RSS is in use.
In a described scenario (vhost=off) I do not see why the performance degradation should happen:
the SW RSS (if activated) will place each packet into proper queue (even if the auto_mq in kernel is not able to do that) and such a way the guest will not need to reschedule the packet to proper CPU