From: "Michael S. Tsirkin" <mst@redhat.com> To: Max Gurtovoy <mgurtovoy@nvidia.com> Cc: Suwan Kim <suwan.kim027@gmail.com>, Stefan Hajnoczi <stefanha@redhat.com>, jasowang@redhat.com, pbonzini@redhat.com, virtualization@lists.linux-foundation.org, linux-block@vger.kernel.org Subject: Re: [PATCH] virtio-blk: support polling I/O Date: Mon, 14 Mar 2022 11:15:35 -0400 [thread overview] Message-ID: <20220314111306-mutt-send-email-mst@kernel.org> (raw) In-Reply-To: <d9121e3c-abe5-fe4d-8088-8339c418c7a8@nvidia.com> On Mon, Mar 14, 2022 at 03:26:13PM +0200, Max Gurtovoy wrote: > > On 3/14/2022 1:15 PM, Michael S. Tsirkin wrote: > > On Mon, Mar 14, 2022 at 12:25:08PM +0200, Max Gurtovoy wrote: > > > On 3/14/2022 11:43 AM, Suwan Kim wrote: > > > > On Sun, Mar 13, 2022 at 12:37:21PM +0200, Max Gurtovoy wrote: > > > > > On 3/11/2022 6:07 PM, Suwan Kim wrote: > > > > > > On Fri, Mar 11, 2022 at 10:38:07AM -0500, Michael S. Tsirkin wrote: > > > > > > > On Sat, Mar 12, 2022 at 12:28:32AM +0900, Suwan Kim wrote: > > > > > > > > diff --git a/include/uapi/linux/virtio_blk.h b/include/uapi/linux/virtio_blk.h > > > > > > > > index d888f013d9ff..3fcaf937afe1 100644 > > > > > > > > --- a/include/uapi/linux/virtio_blk.h > > > > > > > > +++ b/include/uapi/linux/virtio_blk.h > > > > > > > > @@ -119,8 +119,9 @@ struct virtio_blk_config { > > > > > > > > * deallocation of one or more of the sectors. > > > > > > > > */ > > > > > > > > __u8 write_zeroes_may_unmap; > > > > > > > > + __u8 unused1; > > > > > > > > - __u8 unused1[3]; > > > > > > > > + __virtio16 num_poll_queues; > > > > > > > > } __attribute__((packed)); > > > > > > > Same as any virtio UAPI change, this has to go through the virtio TC. > > > > > > > In particular I don't think gating a new config field on > > > > > > > an existing feature flag is a good idea. > > > > > > Did you mean that the polling should be based on a new feature like > > > > > > "VIRTIO_BLK_F_POLL" and be added at the end of features_legacy[] > > > > > > and features[]? If then, I will add the new feture flag and resend it. > > > > > Isn't there a way in the SPEC today to create a queue without interrupt > > > > > vector ? > > > > It seems that it is not possible to create a queue without interrupt > > > > vector. If it is possible, we can expect more polling improvement. > > Yes, it's possible: > > > > Writing a valid MSI-X Table entry number, 0 to 0x7FF, to > > \field{config_msix_vector}/\field{queue_msix_vector} maps interrupts triggered > > by the configuration change/selected queue events respectively to > > the corresponding MSI-X vector. To disable interrupts for an > > event type, the driver unmaps this event by writing a special NO_VECTOR > > value: > > > > \begin{lstlisting} > > /* Vector value used to disable MSI for queue */ > > #define VIRTIO_MSI_NO_VECTOR 0xffff > > \end{lstlisting} > > > > > > > > > MST/Jason/Stefan, > > > > > > can you confirm that please ? > > > > > > what does VIRTQ_AVAIL_F_NO_INTERRUPT supposed to do ? > > This is a hint to the device not to send interrupts. > > Why do you need a hint if the driver implicitly wrote 0xffff to disable MSI > for a virtqueue ? VIRTIO_MSI_NO_VECTOR is an expensive write into config space, followed by an even more expensive read. Reliable and appropriate if you turn events on/off very rarely. VIRTQ_AVAIL_F_NO_INTERRUPT is an in-memory write so it's much cheaper, but it's less reliable. Appropriate if you need to turn events on/off a lot. > > > > > > > Regards, > > > > Suwan Kim
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com> To: Max Gurtovoy <mgurtovoy@nvidia.com> Cc: virtualization@lists.linux-foundation.org, linux-block@vger.kernel.org, Stefan Hajnoczi <stefanha@redhat.com>, pbonzini@redhat.com, Suwan Kim <suwan.kim027@gmail.com> Subject: Re: [PATCH] virtio-blk: support polling I/O Date: Mon, 14 Mar 2022 11:15:35 -0400 [thread overview] Message-ID: <20220314111306-mutt-send-email-mst@kernel.org> (raw) In-Reply-To: <d9121e3c-abe5-fe4d-8088-8339c418c7a8@nvidia.com> On Mon, Mar 14, 2022 at 03:26:13PM +0200, Max Gurtovoy wrote: > > On 3/14/2022 1:15 PM, Michael S. Tsirkin wrote: > > On Mon, Mar 14, 2022 at 12:25:08PM +0200, Max Gurtovoy wrote: > > > On 3/14/2022 11:43 AM, Suwan Kim wrote: > > > > On Sun, Mar 13, 2022 at 12:37:21PM +0200, Max Gurtovoy wrote: > > > > > On 3/11/2022 6:07 PM, Suwan Kim wrote: > > > > > > On Fri, Mar 11, 2022 at 10:38:07AM -0500, Michael S. Tsirkin wrote: > > > > > > > On Sat, Mar 12, 2022 at 12:28:32AM +0900, Suwan Kim wrote: > > > > > > > > diff --git a/include/uapi/linux/virtio_blk.h b/include/uapi/linux/virtio_blk.h > > > > > > > > index d888f013d9ff..3fcaf937afe1 100644 > > > > > > > > --- a/include/uapi/linux/virtio_blk.h > > > > > > > > +++ b/include/uapi/linux/virtio_blk.h > > > > > > > > @@ -119,8 +119,9 @@ struct virtio_blk_config { > > > > > > > > * deallocation of one or more of the sectors. > > > > > > > > */ > > > > > > > > __u8 write_zeroes_may_unmap; > > > > > > > > + __u8 unused1; > > > > > > > > - __u8 unused1[3]; > > > > > > > > + __virtio16 num_poll_queues; > > > > > > > > } __attribute__((packed)); > > > > > > > Same as any virtio UAPI change, this has to go through the virtio TC. > > > > > > > In particular I don't think gating a new config field on > > > > > > > an existing feature flag is a good idea. > > > > > > Did you mean that the polling should be based on a new feature like > > > > > > "VIRTIO_BLK_F_POLL" and be added at the end of features_legacy[] > > > > > > and features[]? If then, I will add the new feture flag and resend it. > > > > > Isn't there a way in the SPEC today to create a queue without interrupt > > > > > vector ? > > > > It seems that it is not possible to create a queue without interrupt > > > > vector. If it is possible, we can expect more polling improvement. > > Yes, it's possible: > > > > Writing a valid MSI-X Table entry number, 0 to 0x7FF, to > > \field{config_msix_vector}/\field{queue_msix_vector} maps interrupts triggered > > by the configuration change/selected queue events respectively to > > the corresponding MSI-X vector. To disable interrupts for an > > event type, the driver unmaps this event by writing a special NO_VECTOR > > value: > > > > \begin{lstlisting} > > /* Vector value used to disable MSI for queue */ > > #define VIRTIO_MSI_NO_VECTOR 0xffff > > \end{lstlisting} > > > > > > > > > MST/Jason/Stefan, > > > > > > can you confirm that please ? > > > > > > what does VIRTQ_AVAIL_F_NO_INTERRUPT supposed to do ? > > This is a hint to the device not to send interrupts. > > Why do you need a hint if the driver implicitly wrote 0xffff to disable MSI > for a virtqueue ? VIRTIO_MSI_NO_VECTOR is an expensive write into config space, followed by an even more expensive read. Reliable and appropriate if you turn events on/off very rarely. VIRTQ_AVAIL_F_NO_INTERRUPT is an in-memory write so it's much cheaper, but it's less reliable. Appropriate if you need to turn events on/off a lot. > > > > > > > Regards, > > > > Suwan Kim _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2022-03-14 15:15 UTC|newest] Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-03-11 15:28 [PATCH] virtio-blk: support polling I/O Suwan Kim 2022-03-11 15:38 ` Michael S. Tsirkin 2022-03-11 15:38 ` Michael S. Tsirkin 2022-03-11 16:07 ` Suwan Kim 2022-03-11 16:18 ` Michael S. Tsirkin 2022-03-11 16:18 ` Michael S. Tsirkin 2022-03-11 16:38 ` Suwan Kim 2022-03-13 10:37 ` Max Gurtovoy 2022-03-14 9:43 ` Suwan Kim 2022-03-14 10:25 ` Max Gurtovoy 2022-03-14 11:15 ` Michael S. Tsirkin 2022-03-14 11:15 ` Michael S. Tsirkin 2022-03-14 13:22 ` Suwan Kim 2022-03-14 15:12 ` Michael S. Tsirkin 2022-03-14 15:12 ` Michael S. Tsirkin 2022-03-14 13:26 ` Max Gurtovoy 2022-03-14 15:15 ` Michael S. Tsirkin [this message] 2022-03-14 15:15 ` Michael S. Tsirkin 2022-03-14 16:33 ` Max Gurtovoy 2022-03-14 22:22 ` Michael S. Tsirkin 2022-03-14 22:22 ` Michael S. Tsirkin 2022-03-13 10:42 ` Max Gurtovoy 2022-03-14 9:55 ` Suwan Kim 2022-03-14 10:32 ` Max Gurtovoy 2022-03-14 6:14 ` Jason Wang 2022-03-14 6:14 ` Jason Wang 2022-03-14 12:33 ` Suwan Kim 2022-03-14 14:48 ` Stefan Hajnoczi 2022-03-14 14:48 ` Stefan Hajnoczi 2022-03-15 8:59 ` Jason Wang 2022-03-15 14:43 ` Suwan Kim 2022-03-15 14:53 ` Michael S. Tsirkin 2022-03-15 14:53 ` Michael S. Tsirkin 2022-03-16 2:02 ` Jason Wang 2022-03-16 2:02 ` Jason Wang 2022-03-16 11:25 ` Max Gurtovoy 2022-03-16 13:32 ` Suwan Kim 2022-03-16 15:32 ` Suwan Kim 2022-03-16 15:36 ` Max Gurtovoy 2022-03-16 16:00 ` Stefan Hajnoczi 2022-03-16 16:00 ` Stefan Hajnoczi 2022-03-17 2:20 ` Jason Wang 2022-03-17 2:20 ` Jason Wang 2022-03-17 15:03 ` Suwan Kim 2022-03-14 15:19 ` Stefan Hajnoczi 2022-03-14 15:19 ` Stefan Hajnoczi 2022-03-15 13:55 ` Suwan Kim 2022-03-16 12:20 ` Stefan Hajnoczi 2022-03-16 12:20 ` Stefan Hajnoczi
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=20220314111306-mutt-send-email-mst@kernel.org \ --to=mst@redhat.com \ --cc=jasowang@redhat.com \ --cc=linux-block@vger.kernel.org \ --cc=mgurtovoy@nvidia.com \ --cc=pbonzini@redhat.com \ --cc=stefanha@redhat.com \ --cc=suwan.kim027@gmail.com \ --cc=virtualization@lists.linux-foundation.org \ /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: linkBe 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.