After heavy testing and resolving a few issues under heavy load, cpumap-pping has tagged release 1.0.0 RC1. It should be ready for the v1.3 release of LibreQoS.

What does it do?

cpumap-pping merges two projects:

Combining the two to run separately was troublesome, and duplicated a lot of work: both programs would individually parse Ethernet headers (cpumap also parses VLAN headers, pping did not), TCP headers, extract addresses, etc. For LibreQoS, it just made sense to combine them.

cpumap-pping is a drop-in replacement (fully compatible) for xdp-cpumap-tc in LibreQoS. Once in place, instead of running pping and reading the results, you periodically run xdp_pping and retrieve the current snapshot of performance data - ready classified to match the queues that LibreQoS is already setting up. The results are handed out in a convenient JSON format:

[
{"tc":"3:54", "avg": 35.39, "min": 15.95, "max": 60.03, "median": 33.67, "samples": 58},
]

Only a subset of TCP data is sampled. Rather than process every packet, the first 58 "ack" sequences are timed for each tc handle. This has two advantages:

Performance

Robert has been working hard on connecting this to the graphing system. You can see some great examples of progress in this - now closed - issue. For example:
image.png