From: David Edmondson <david.edmondson@oracle.com>
To: Parav Pandit <parav@nvidia.com>
Cc: shahafs@nvidia.com, hengqi@linux.alibaba.com,
virtio@lists.oasis-open.org, virtio-comment@lists.oasis-open.org
Subject: Re: [virtio-comment] [PATCH requirements 2/7] net-features: Add low latency transmit queue requirements
Date: Mon, 14 Aug 2023 12:55:52 +0100 [thread overview]
Message-ID: <m21qg596sx.fsf@oracle.com> (raw)
In-Reply-To: <20230724033421.249893-3-parav@nvidia.com>
On Monday, 2023-07-24 at 06:34:16 +03, Parav Pandit wrote:
> Add requirements for the low latency transmit queue.
>
> Signed-off-by: Parav Pandit <parav@nvidia.com>
> ---
> chagelog:
> v1->v2:
> - added generic requirement to inline the request content
> along with the descriptor for non virtio-net devices
> - added requirement to inline the request content along
> with the descriptor for virtio flow filter queue as two
> features are similar
> v0->v1:
> - added design goals for which requirements are added
> ---
> net-workstream/features-1.4.md | 88 ++++++++++++++++++++++++++++++++++
> 1 file changed, 88 insertions(+)
>
> diff --git a/net-workstream/features-1.4.md b/net-workstream/features-1.4.md
> index 4c3797b..eb95592 100644
> --- a/net-workstream/features-1.4.md
> +++ b/net-workstream/features-1.4.md
> @@ -7,6 +7,7 @@ together is desired while updating the virtio net interface.
>
> # 2. Summary
> 1. Device counters visible to the driver
> +2. Low latency tx virtqueue for PCI transport
>
> # 3. Requirements
> ## 3.1 Device counters
> @@ -33,3 +34,90 @@ together is desired while updating the virtio net interface.
> ### 3.1.2 Per transmit queue counters
> 1. le64 tx_gso_pkts: Packets send as transmit GSO sequence
> 2. le64 tx_pkts: Total packets send by the device
> +
> +## 3.2 Low PCI latency virtqueues
> +### 3.2.1 Low PCI latency tx virtqueue
> +0. Design goal
> + a. Reduce PCI access latency in packet transmit flow
> + b. Avoid O(N) descriptor parser to detect a packet stream to simplify device
> + logic
> + c. Reduce number of PCI transmit completion transactions and have unified
> + completion flow with/without transmit timestamping
> + d. Avoid partial cache line writes on transmit completions
> +
> +1. Packet transmit descriptor should contain data descriptors count without any
> + indirection and without any O(N) search to find the end of a packet stream.
> + For example, a packet transmit descriptor (called vnet_tx_hdr_desc
> + subsequently) to contain a field num_next_desc for the packet stream
> + indicating that a packet is located in N data descriptors.
> +
> +2. Packet transmit descriptor should contain segmentation offload-related fields
> + without any indirection. For example, packet transmit descriptor to contain
> + gso_type, gso_size/mss, header length, csum placement byte offset, and
> + csum start.
> +
> +3. Packet transmit descriptor should be able to place a small size packet that
> + does not have any L4 data after the vnet_tx_hdr_desc in the virtqueue memory.
> + For example a TCP ack only packet can fit in a descriptor memory which
> + otherwise consume more than 25% of metadata to describe the packet.
> +
> +4. Packet transmit descriptor should be able to place a full GSO header (L2 to
> + L4) after header descriptor and before data descriptors. For example, the
> + GSO header is placed after struct vnet_tx_hdr_desc in the virtqueue memory.
> + When such a GSO header is positioned adjacent to the packet transmit
> + descriptor, and when the GSO header is not aligned to 16B, the following
> + data descriptor to start on the 8B aligned boundary.
> +
> +5. An example of the above requirements at high level is:
> +
> +```
> +struct vitio_packed_q_desc {
"virtio_packed_q_desc"
> + /* current desc for reference */
> + u64 address;
> + u32 len;
> + u16 id;
> + u16 flags;
> +};
> +
> +/* Constant size header descriptor for tx packets */
> +struct vnet_tx_hdr_desc {
> + u16 flags; /* indicate how to parse next fields */
> + u16 id; /* desc id to come back in completion */
> + u8 num_next_desc; /* indicates the number of the next 16B data desc for this
> + * buffer.
> + */
> + u8 gso_type;
> + le16 gso_hdr_len;
> + le16 gso_size;
> + le16 csum_start;
> + le16 csum_offset;
> + u8 inline_pkt_len; /* indicates the length of the inline packet after this
> + * desc
> + */
> + u8 reserved;
> + u8 padding[];
> +};
> +
> +/* Example of a short packet or GSO header placed in the desc section of the vq
> + */
> +struct vnet_tx_small_pkt_desc {
> + u8 raw_pkt[128];
> +};
> +
> +/* Example of header followed by data descriptor */
> +struct vnet_tx_hdr_desc hdr_desc;
> +struct vnet_data_desc desc[2];
> +
> +```
> +
> +6. Ability to zero pad the transmit completion when the transmit completion is
> + shorter than the CPU cache line size.
> +
> +7. Ability to place all transmit completion together with it per packet stream
> + transmit timestamp using single PCIe transcation.
The meaning of this is unclear to me. Is it:
The ability to place all transmit completions with a per-packet stream
transmit timestamp using a single PCIe transaction.
?
> +
> +8. A generic feature of the virtqueue, to contain such header data inline for virtio
> + devices other than virtio-net.
Given that this feature is used by this patch (for TX), the following
patch (for RX) and flow filter manipulation, perhaps pull it out as a
distinct requirement.
> +
> +9. A flow filter virtqueue also similarly need the ability to inline the short flow
> + command header.
--
So tap at my window, maybe I might let you in.
This publicly archived list offers a means to provide input to the
OASIS Virtual I/O Device (VIRTIO) TC.
In order to verify user consent to the Feedback License terms and
to minimize spam in the list archive, subscription is required
before posting.
Subscribe: virtio-comment-subscribe@lists.oasis-open.org
Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org
List help: virtio-comment-help@lists.oasis-open.org
List archive: https://lists.oasis-open.org/archives/virtio-comment/
Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf
List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists
Committee: https://www.oasis-open.org/committees/virtio/
Join OASIS: https://www.oasis-open.org/join/
next prev parent reply other threads:[~2023-08-14 11:56 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-24 3:34 [virtio-comment] [PATCH requirements 0/7] virtio net new features requirements Parav Pandit
2023-07-24 3:34 ` [virtio-comment] [PATCH requirements 1/7] net-features: Add requirements document for release 1.4 Parav Pandit
2023-08-08 8:16 ` David Edmondson
2023-08-14 5:17 ` Parav Pandit
2023-08-14 11:53 ` David Edmondson
2023-08-14 11:56 ` David Edmondson
2023-07-24 3:34 ` [virtio-comment] [PATCH requirements 2/7] net-features: Add low latency transmit queue requirements Parav Pandit
2023-08-08 8:24 ` David Edmondson
2023-08-10 19:05 ` [virtio-comment] RE: [EXT] [virtio] " Satananda Burla
2023-08-15 5:51 ` Parav Pandit
2023-08-14 11:55 ` David Edmondson [this message]
2023-07-24 3:34 ` [virtio-comment] [PATCH requirements 3/7] net-features: Add low latency receive " Parav Pandit
2023-08-08 8:32 ` David Edmondson
2023-08-14 11:54 ` David Edmondson
2023-08-15 4:45 ` Parav Pandit
2023-07-24 3:34 ` [virtio-comment] [PATCH requirements 4/7] net-features: Add notification coalescing requirements Parav Pandit
2023-08-14 11:57 ` David Edmondson
2023-07-24 3:34 ` [virtio-comment] [PATCH requirements 5/7] net-features: Add n-tuple receive flow filters requirements Parav Pandit
2023-08-01 8:33 ` [virtio-comment] " Parav Pandit
2023-08-02 6:44 ` Parav Pandit
2023-08-02 15:32 ` Heng Qi
2023-08-03 10:01 ` Parav Pandit
2023-08-03 13:11 ` [virtio-comment] Re: [virtio] " Heng Qi
2023-08-02 7:17 ` [virtio-comment] RE: [EXT] [virtio] " Satananda Burla
2023-08-02 8:14 ` Parav Pandit
2023-08-02 18:32 ` Satananda Burla
2023-08-04 7:32 ` Parav Pandit
2023-08-02 15:25 ` [virtio-comment] " Heng Qi
2023-08-03 9:59 ` [virtio-comment] " Parav Pandit
2023-08-03 13:07 ` [virtio-comment] " Heng Qi
2023-08-04 6:20 ` [virtio-comment] " Parav Pandit
2023-08-04 7:17 ` [virtio-comment] " Heng Qi
2023-08-04 7:30 ` [virtio-comment] " Parav Pandit
2023-08-04 7:51 ` [virtio-comment] Re: [virtio] " Heng Qi
2023-08-07 7:22 ` Heng Qi
2023-08-08 7:13 ` Parav Pandit
2023-08-08 8:18 ` [virtio-comment] Re: [virtio] " Heng Qi
2023-08-08 8:21 ` [virtio-comment] " Heng Qi
2023-08-14 5:15 ` [virtio-comment] " Parav Pandit
2023-08-14 6:18 ` [virtio-comment] " Heng Qi
2023-08-14 6:35 ` [virtio-comment] " Parav Pandit
2023-07-24 3:34 ` [virtio-comment] [PATCH requirements 6/7] net-features: Add packet timestamp requirements Parav Pandit
2023-08-09 8:35 ` [virtio-comment] Re: [virtio] " Xuan Zhuo
2023-08-10 6:56 ` Jason Wang
2023-08-15 6:13 ` Parav Pandit
[not found] ` <CAF=yD-+LMY3yE3qtd4vHc8CGOz6UAf4njM2QiZcajrQgL=KZRQ@mail.gmail.com>
2023-08-14 2:54 ` Jason Wang
2023-08-15 6:26 ` Parav Pandit
[not found] ` <CAF=yD-LXtrQeW0GnTR0BeDuExN5aBLC4dGEfdWbjtxmhNY2G6g@mail.gmail.com>
2023-08-16 4:10 ` Parav Pandit
2023-08-14 13:06 ` [virtio-comment] " Parav Pandit
2023-08-15 2:47 ` [virtio-comment] " Xuan Zhuo
2023-08-15 4:01 ` [virtio-comment] " Parav Pandit
2023-08-15 6:01 ` [virtio-comment] " Xuan Zhuo
2023-08-15 6:09 ` [virtio-comment] " Parav Pandit
2023-08-15 9:44 ` [virtio-comment] " Xuan Zhuo
2023-08-14 11:59 ` [virtio-comment] " David Edmondson
2023-07-24 3:34 ` [virtio-comment] [PATCH requirements 7/7] net-features: Add header data split requirements Parav Pandit
2023-08-10 19:19 ` [virtio-comment] RE: [EXT] [virtio] " Satananda Burla
2023-08-14 12:00 ` [virtio-comment] " David Edmondson
[not found] ` <CA+FuTSeguCKk4zxZ0=Ebr1phZhF9kssHeGPn2eZj6SRNv2ewsA@mail.gmail.com>
2023-08-14 13:09 ` [virtio-comment] Re: [virtio] " David Edmondson
2023-08-14 13:28 ` [virtio-comment] " Parav Pandit
2023-08-14 13:56 ` [virtio-comment] " David Edmondson
2023-08-15 4:41 ` [virtio-comment] " Parav Pandit
-- strict thread matches above, loose matches on Subject: below --
2023-06-01 22:02 [virtio-comment] [PATCH requirements 0/7] virtio net new features requirements Parav Pandit
2023-06-01 22:03 ` [virtio-comment] [PATCH requirements 2/7] net-features: Add low latency transmit queue requirements Parav Pandit
2023-06-06 22:25 ` Michael S. Tsirkin
2023-06-06 22:35 ` Parav Pandit
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=m21qg596sx.fsf@oracle.com \
--to=david.edmondson@oracle.com \
--cc=hengqi@linux.alibaba.com \
--cc=parav@nvidia.com \
--cc=shahafs@nvidia.com \
--cc=virtio-comment@lists.oasis-open.org \
--cc=virtio@lists.oasis-open.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: 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.