TL;DR ------ For a quick demo, apply patces, run e.g. testpmd and then in a separate terminal run:
./usertools/dpdk-telemetry-watcher.py -d1T eth.tx Output, updated once per second, will be traffic rate per port e.g.: Connected to application: "dpdk-testpmd" Time /ethdev/stats,0.opackets /ethdev/stats,1.opackets Total 16:29:12 5,213,119 5,214,304 10,427,423 Fuller details -------------- While we have the dpdk-telemetry.py CLI app for interactive querying of telemetry on the commandline, and a telemetry exporter script for sending telemetry to external tools for real-time monitoring, we don't have an app that can print real-time stats for DPDK apps on the terminal. This patchset adds such a script, developed with the help of Github copilot to fill a need that I found in my testing. Submitting it here in the hopes that others find it of use. The script acts as a wrapper around the existing dpdk-telemetry.py script, and pipes the commands to that script and reads the responses, querying it once per second. It takes a number of flag parameters, such as the ones above: - "-d" for delta values, i.e. PPS rather than total packets - "-1" for single-line output, i.e. no scrolling up the screen - "-T" to display a total column Other flag parameters can be seen by looking at the help output. Beyond the flags, the script also takes a number of positional parameters, which refer to specific stats to display. These stats must be numeric values, and should take the form of the telemetry command to send, followed by a "." and the stat within the result which is to be tracked. As above, a stat would be e.g. "/ethdev/stats,0.opackets", where we send "/ethdev/stats,0" to telemetry and extract the "opackets" part of the result. However, specifying individual stats can be awkward, so some shortcuts are provided too for the common case of monitoring ethernet ports. Any positional arg starting with "eth" will be replaced by the set of equivalent values for each port, e.g. "eth.imissed" will track the imissed value on all ports in use in the app. The ipackets and opackets values, as common metrics, are also available as shortened values as just "rx" and "tx", so in the example above, "eth.tx" means to track the opackets stat for every ethdev port. Finally, the script also has reconnection support so you can leave it running while you start and stop your application in another terminal. The watcher will try and reconnect to a running instance every second. Bruce Richardson (7): usertools: add new script to monitor telemetry on terminal usertools/telemetry-watcher: add displaying stats usertools/telemetry-watcher: add delta and timeout opts usertools/telemetry-watcher: add total and one-line opts usertools/telemetry-watcher: add thousands separator usertools/telemetry-watcher: add eth name shortcuts usertools/telemetry-watcher: support reconnection usertools/dpdk-telemetry-watcher.py | 429 ++++++++++++++++++++++++++++ usertools/meson.build | 1 + 2 files changed, 430 insertions(+) create mode 100755 usertools/dpdk-telemetry-watcher.py -- 2.51.0

