Editing
Core Offloads
(section)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Telemetry == The device must present the following counters, with the specified counter semantics. Per device counters may be exposed as per queue, and summed on the host. All counters must be 64-bit unsigned. Many counters are based on Linux v6.3, in particular struct rtnl_link_stat64. The semantics of the fields in that struct are also defined in the source code as comments. The two definitions are identical. Where there is ambiguity, the Linux v6.3 source code is the ground truth. This document specifies additional fields not standardized in Linux as of writing. <span id="definition-byte-counters"></span> ===== Definition: Byte Counters ===== The guiding principle when deciding the increment of a counter is to allow for maximum cross-referencing between counters at different stages of processing. Since most of the pipeline does not carry the FCS, byte counters SHOULD NOT include it even when present. Similarly, since most counters deal with wire packets, stages before segmentation (on egress) or after receive combining (on ingress) SHOULD use wire packets as the unit even when dealing with super-segments. <span id="device-counters"></span> ==== Device Counters ==== <span id="errors"></span> ===== Errors ===== All dropped or discarded packets MUST be counted. Each stage in a pipeline that can drop packets SHOULD expose a separate drop counter, preferably a counter per each drop reason. At a minimum, these packet counters MUST be present * rx_dropped: aggregate count of packets dropped in the receive pipeline ** excluding those reported as dropped due to host overrun (rx_missed_errors, below). * rx_missed_errors: packets dropped due to insufficient buffer space to store the packet ** Likely due to a slow host that does not keep up with the arrival rate. ** Incast is a significant concern in hyperscale workloads. This is a critical counter. * tx_dropped: aggregate count of packets dropped in the transmit pipeline <span id="rmon"></span> ===== RMON ===== RFC 2819: * histogram statistics - packet counters broken down by packet size ** the [1k, 2k] range SHOULD be broken down into two separate buckets: up to the standard 1518/1522 MTU and above * etherStatsUndersizePkts: packets received that were less than minimum size <span id="mac"></span> ===== MAC ===== IEEE defined: * 30.3.4.2 aPAUSEMACCtrlFramesTransmitted * 30.3.4.3 aPAUSEMACCtrlFramesReceived * additional statistics measuring time spent in paused state are welcome <span id="phy"></span> ===== PHY ===== IEEE defined: * 30.3.2.1.5 aSymbolErrorDuringCarrier * 30.5.1.1.17 aFECCorrectedBlocks * 30.5.1.1.18 aFECUncorrectableBlocks Other: * link_down_events - number of times the link lock was lost or stopped at the PHY level <span id="feature-specific-counters"></span> ==== Feature-specific Counters ==== The following counters SHOULD be present if the relevant feature is supported <span id="header-split"></span> ===== Header Split ===== * hsplit_packets: number of packets with headers placed in separate header buffer ** helps verify that the feature is enabled and matches expected ratio of rx_packets ** alternatively, report the inverse (non_hsplit_packets), as that is expected to be the exception <span id="checksum-offload"></span> ===== Checksum Offload ===== * rx_csum_err: packets with checksum computed and compared to header field, not matching ** only for legacy devices that verify a checksum rather than return the linear sum * rx_csum_none: packets that were not checksummed ** same <span id="segmentation-offload"></span> ===== Segmentation Offload ===== * lso_packets: segmentation offload packets, including TSO, UDO and PISO. <span id="receive-segment-coalescing"></span> ===== Receive Segment Coalescing ===== * receive_offload_packets: number of coalesced SO packets created by RSC <span id="performance"></span>
Summary:
Please note that all contributions to OpenCompute may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
OpenCompute:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information