xref: /dpdk/doc/guides/howto/telemetry.rst (revision f5057be340e44f3edc0fe90fa875eb89a4c49b4f)
1..  SPDX-License-Identifier: BSD-3-Clause
2    Copyright(c) 2020 Intel Corporation.
3
4
5DPDK Telemetry User Guide
6=========================
7
8The Telemetry library provides users with the ability to query DPDK for
9telemetry information, currently including information such as ethdev stats,
10ethdev port list, and eal parameters.
11
12.. Note::
13
14   This library is experimental and the output format may change in the future.
15
16
17Telemetry Interface
18-------------------
19
20The :doc:`../prog_guide/telemetry_lib` opens a socket with path
21*<runtime_directory>/dpdk_telemetry.<version>*. The version represents the
22telemetry version, the latest is v2. For example, a client would connect to a
23socket with path  */var/run/dpdk/\*/dpdk_telemetry.v2* (when the primary process
24is run by a root user).
25
26
27Telemetry Initialization
28------------------------
29
30The library is enabled by default, however an EAL flag to enable the library
31exists, to provide backward compatibility for the previous telemetry library
32interface::
33
34  --telemetry
35
36A flag exists to disable Telemetry also::
37
38  --no-telemetry
39
40
41Running Telemetry
42-----------------
43
44The following steps show how to run an application with telemetry support,
45and query information using the telemetry client python script.
46
47#. Launch testpmd as the primary application with telemetry::
48
49      ./app/dpdk-testpmd
50
51#. Launch the telemetry client script::
52
53      ./usertools/dpdk-telemetry.py
54
55#. When connected, the script displays the following, waiting for user input::
56
57     Connecting to /var/run/dpdk/rte/dpdk_telemetry.v2
58     {"version": "DPDK 20.05.0-rc2", "pid": 60285, "max_output_len": 16384}
59     -->
60
61#. The user can now input commands to send across the socket, and receive the
62   response. Some available commands are shown below.
63
64   * List all commands::
65
66       --> /
67       {"/": ["/", "/eal/app_params", "/eal/params", "/ethdev/list",
68       "/ethdev/link_status", "/ethdev/xstats", "/help", "/info"]}
69
70   * Get the list of ethdev ports::
71
72       --> /ethdev/list
73       {"/ethdev/list": [0, 1]}
74
75   .. Note::
76
77      For commands that expect a parameter, use "," to separate the command
78      and parameter. See examples below.
79
80   * Get extended statistics for an ethdev port::
81
82       --> /ethdev/xstats,0
83       {"/ethdev/xstats": {"rx_good_packets": 0, "tx_good_packets": 0,
84       "rx_good_bytes": 0, "tx_good_bytes": 0, "rx_missed_errors": 0,
85       ...
86       "tx_priority7_xon_to_xoff_packets": 0}}
87
88   * Get the help text for a command. This will indicate what parameters are
89     required. Pass the command as a parameter::
90
91       --> /help,/ethdev/xstats
92       {"/help": {"/ethdev/xstats": "Returns the extended stats for a port.
93       Parameters: int port_id"}}
94