netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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)
>  };


  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 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).