From: Jakub Kicinski <kuba@kernel.org>
To: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Cc: netdev@vger.kernel.org, "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Jason Wang <jasowang@redhat.com>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Jesper Dangaard Brouer <hawk@kernel.org>,
John Fastabend <john.fastabend@gmail.com>,
Stanislav Fomichev <sdf@google.com>,
Amritha Nambiar <amritha.nambiar@intel.com>,
Larysa Zaremba <larysa.zaremba@intel.com>,
Sridhar Samudrala <sridhar.samudrala@intel.com>,
Maciej Fijalkowski <maciej.fijalkowski@intel.com>,
virtualization@lists.linux.dev, bpf@vger.kernel.org
Subject: Re: [PATCH net-next v4 7/8] netdev: add queue stats
Date: Thu, 14 Mar 2024 16:21:42 -0700 [thread overview]
Message-ID: <20240314162142.36b8ff02@kernel.org> (raw)
In-Reply-To: <20240314085459.115933-8-xuanzhuo@linux.alibaba.com>
On Thu, 14 Mar 2024 16:54:58 +0800 Xuan Zhuo wrote:
> + -
> + name: rx-hw-drops
> + doc: |
> + Number of packets that arrived at the device but never left it,
> + encompassing packets dropped for reasons such as insufficient buffer
s/encompassing/including/
> + space, processing errors, as well as those affected by explicitly
> + defined policies and packet filtering criteria.
I'm afraid the attempt to "correct my English" ended up decreasing the
clarity. Maybe use what I suggested more directly?
Number of all packets which entered the device, but never left it,
including but not limited to: packets dropped due to lack of buffer
space, processing errors, explicit or implicit policies and packet filters.
> + type: uint
> + -
> + name: rx-hw-drop-overruns
> + doc: |
> + Number of packets that arrived at the device but never left it due to
> + no descriptors.
I put a paragraph in my previous email explaining how tricky this is to
state for HW devices and you just went with the virtio spec :|
Number of packets dropped due to transient lack of resources, such as
buffer space, host descriptors etc.
> + -
> + name: rx-csum-bad
> + doc: |
> + Number of packets that are dropped by device due to invalid checksum.
Quoting myself:
>> Maybe add a note in "bad" that packets with bad csum are not
>> discarded, but still delivered to the stack.
Devices should not drop packets due to invalid L4 checksums.
> + type: uint
> + -
> + name: rx-hw-gro-packets
> + doc: |
> + Number of packets that area coalesced from smaller packets by the device,
> + that do not cover LRO packets.
s/area/were/ ?
s/that do not cover LRO packets/Counts only packets coalesced with the
HW-GRO netdevice feature, LRO-coalesced packets are not counted./
> + type: uint
> + -
> + name: rx-hw-gro-bytes
> + doc: see `rx-hw-gro-packets`.
> + type: uint
> + -
> + name: rx-hw-gro-wire-packets
> + doc: |
> + Number of packets that area coalesced to bigger packets(no LRO packets)
> + by the device.
s/area/were/
s/packets(no LRO packets)/packets by the HW-GRO feature of the device/
> + type: uint
> + -
> + name: rx-hw-gro-wire-bytes
> + doc: see `rx-hw-gro-wire-packets`.
Please make sure the "See `xyz`." references are capitalized (See)
and end with a full stop.
> + type: uint
> + -
> + name: rx-hw-drop-ratelimits
> + doc: |
> + Number of the packets dropped by the device due to the received
> + packets bitrate exceeding the device speed limit.
Maybe s/speed/rate/
> + type: uint
> + -
> + name: tx-hw-drops
> + doc: |
> + Number of packets that arrived at the device but never left it,
> + encompassing packets dropped for reasons such as processing errors, as
> + well as those affected by explicitly defined policies and packet
> + filtering criteria.
> + type: uint
> + -
> + name: tx-hw-drop-errors
> + doc: Number of packets dropped because they were invalid or malformed.
> + type: uint
> + -
> + name: tx-csum-none
> + doc: |
> + Number of packets that do not require the device to calculate the
> + checksum.
I think we should use past tense everywhere.
> + type: uint
> + -
> + name: tx-needs-csum
> + doc: |
> + Number of packets that require the device to calculate the
> + checksum.
> + type: uint
> + -
> + name: tx-hw-gso-packets
> + doc: |
> + Number of packets that necessitated segmentation into smaller packets
> + by the device.
> + type: uint
> + -
> + name: tx-hw-gso-bytes
> + doc: |
> + Successfully segmented into smaller packets by the device, see
> + `tx-hw-gso-packets`.
Maybe stick to "see `tx-hw-gso-packets`", none of the other counters
mention the send being "successful".
> + type: uint
> + -
> + name: tx-hw-gso-wire-packets
> + doc: |
> + Number of the small packets that segmented from bigger packets by the
> + device.
Maybe
Number of wire-sized packets generated by processing
`tx-hw-gso-packets`
?
> + type: uint
> + -
> + name: tx-hw-gso-wire-bytes
> + doc: See `tx-hw-gso-wire-packets`.
> +
> + type: uint
> + -
> + name: tx-hw-drop-ratelimits
> + doc: |
> + Number of the packets dropped by the device due to the transmit
> + packets bitrate exceeding the device speed limit.
s/speed/rate/
> + type: uint
>
> operations:
> list:
> diff --git a/include/net/netdev_queues.h b/include/net/netdev_queues.h
> index 1ec408585373..c7ac4539eafc 100644
> --- a/include/net/netdev_queues.h
> +++ b/include/net/netdev_queues.h
> @@ -9,11 +9,38 @@ struct netdev_queue_stats_rx {
> u64 bytes;
> u64 packets;
> u64 alloc_fail;
> +
> + u64 hw_drops;
> + u64 hw_drop_overruns;
> +
> + u64 csum_unnecessary;
> + u64 csum_none;
> + u64 csum_bad;
> +
> + u64 hw_gro_packets;
> + u64 hw_gro_bytes;
> + u64 hw_gro_wire_packets;
> + u64 hw_gro_wire_bytes;
> +
> + u64 hw_drop_ratelimits;
> };
>
> struct netdev_queue_stats_tx {
> u64 bytes;
> u64 packets;
> +
> + u64 hw_drops;
> + u64 hw_drop_errors;
> +
> + u64 csum_none;
> + u64 needs_csum;
> +
> + u64 hw_gso_packets;
> + u64 hw_gso_bytes;
> + u64 hw_gso_wire_packets;
> + u64 hw_gso_wire_bytes;
> +
> + u64 hw_drop_ratelimits;
> };
>
> /**
> diff --git a/include/uapi/linux/netdev.h b/include/uapi/linux/netdev.h
> index bb65ee840cda..702d69b09f14 100644
> --- a/include/uapi/linux/netdev.h
> +++ b/include/uapi/linux/netdev.h
> @@ -147,6 +147,26 @@ enum {
> NETDEV_A_QSTATS_TX_BYTES,
> NETDEV_A_QSTATS_RX_ALLOC_FAIL,
>
Looks hand written. Once you update the yaml file, you should run:
./tools/net/ynl/ynl-regen.sh
This will generate the uAPI changes for you.
> + NETDEV_A_QSTATS_RX_HW_DROPS,
> + NETDEV_A_QSTATS_RX_HW_DROP_OVERRUNS,
> + NETDEV_A_QSTATS_RX_CSUM_UNNECESSARY,
> + NETDEV_A_QSTATS_RX_CSUM_NONE,
> + NETDEV_A_QSTATS_RX_CSUM_BAD,
> + NETDEV_A_QSTATS_RX_HW_GRO_PACKETS,
> + NETDEV_A_QSTATS_RX_HW_GRO_BYTES,
> + NETDEV_A_QSTATS_RX_HW_GRO_WIRE_PACKETS,
> + NETDEV_A_QSTATS_RX_HW_GRO_WIRE_BYTES,
> + NETDEV_A_QSTATS_RX_HW_DROP_RATELIMITS,
> + NETDEV_A_QSTATS_TX_HW_DROPS,
> + NETDEV_A_QSTATS_TX_HW_DROP_ERRORS,
> + NETDEV_A_QSTATS_TX_CSUM_NONE,
> + NETDEV_A_QSTATS_TX_NEEDS_CSUM,
> + NETDEV_A_QSTATS_TX_HW_GSO_PACKETS,
> + NETDEV_A_QSTATS_TX_HW_GSO_BYTES,
> + NETDEV_A_QSTATS_TX_HW_GSO_WIRE_PACKETS,
> + NETDEV_A_QSTATS_TX_HW_GSO_WIRE_BYTES,
> + NETDEV_A_QSTATS_TX_HW_DROP_RATELIMITS,
> +
> __NETDEV_A_QSTATS_MAX,
> NETDEV_A_QSTATS_MAX = (__NETDEV_A_QSTATS_MAX - 1)
> };
next prev parent reply other threads:[~2024-03-14 23:21 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-14 8:54 [PATCH net-next v4 0/8] virtio-net: support device stats Xuan Zhuo
2024-03-14 8:54 ` [PATCH net-next v4 1/8] virtio_net: introduce device stats feature and structures Xuan Zhuo
2024-03-14 8:54 ` [PATCH net-next v4 2/8] virtio_net: virtnet_send_command supports command-specific-result Xuan Zhuo
2024-03-14 8:54 ` [PATCH net-next v4 3/8] virtio_net: support device stats Xuan Zhuo
2024-03-14 22:54 ` Jakub Kicinski
2024-03-15 8:05 ` Xuan Zhuo
2024-03-19 17:15 ` Jakub Kicinski
2024-03-20 8:12 ` Xuan Zhuo
2024-03-14 8:54 ` [PATCH net-next v4 4/8] virtio_net: stats map include driver stats Xuan Zhuo
2024-03-14 8:54 ` [PATCH net-next v4 5/8] virtio_net: add the total stats field Xuan Zhuo
2024-03-14 8:54 ` [PATCH net-next v4 6/8] virtio_net: rename stat tx_timeout to timeout Xuan Zhuo
2024-03-14 8:54 ` [PATCH net-next v4 7/8] netdev: add queue stats Xuan Zhuo
2024-03-14 23:21 ` Jakub Kicinski [this message]
2024-03-15 8:11 ` Xuan Zhuo
2024-03-14 8:54 ` [PATCH net-next v4 8/8] virtio-net: support queue stat Xuan Zhuo
2024-03-14 22:56 ` Jakub Kicinski
2024-03-15 8:10 ` Xuan Zhuo
2024-03-14 10:47 ` [PATCH net-next v4 0/8] virtio-net: support device stats Paolo Abeni
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=20240314162142.36b8ff02@kernel.org \
--to=kuba@kernel.org \
--cc=amritha.nambiar@intel.com \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hawk@kernel.org \
--cc=jasowang@redhat.com \
--cc=john.fastabend@gmail.com \
--cc=larysa.zaremba@intel.com \
--cc=maciej.fijalkowski@intel.com \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sdf@google.com \
--cc=sridhar.samudrala@intel.com \
--cc=virtualization@lists.linux.dev \
--cc=xuanzhuo@linux.alibaba.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.