usertools/telemetry: connect to separate instances

For processes run using "in-memory" mode sharing the same runtime dir,
we add support for connecting to the separate instance sockets created
using ":1", ":2" etc. via new "-i" or "--instance" argument. Add details
on connecting to separate instances to the telemetry howto document.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ciara Power <ciara.power@intel.com>
Tested-by: Conor Walsh <conor.walsh@intel.com>
This commit is contained in:
Bruce Richardson 2021-10-14 11:49:06 +01:00 committed by David Marchand
parent 85e21b77d8
commit 11435aae20
2 changed files with 47 additions and 1 deletions

View File

@ -87,3 +87,44 @@ and query information using the telemetry client python script.
--> /help,/ethdev/xstats
{"/help": {"/ethdev/xstats": "Returns the extended stats for a port.
Parameters: int port_id"}}
Connecting to Different DPDK Processes
--------------------------------------
When multiple DPDK process instances are running on a system, the user will
naturally wish to be able to select the instance to which the connection is
being made. The method to select the instance depends on how the individual
instances are run:
* For DPDK processes run using a non-default file-prefix,
i.e. using the `--file-prefix` EAL option flag,
the file-prefix for the process should be passed via the `-f` or `--file-prefix` script flag.
For example, to connect to testpmd run as::
$ ./build/app/dpdk-testpmd -l 2,3 --file-prefix="tpmd"
One would use the telemetry script command::
$ ./usertools/dpdk-telemetry -f "tpmd"
* For the case where multiple processes are run using the `--in-memory` EAL flag,
but no `--file-prefix` flag, or the same `--file-prefix` flag,
those processes will all share the same runtime directory.
In this case,
each process after the first will add an increasing count suffix to the telemetry socket name,
with each one taking the first available free socket name.
This suffix count can be passed to the telemetry script using the `-i` or `--instance` flag.
For example, if the following two applications are run in separate terminals::
$ ./build/app/dpdk-testpmd -l 2,3 --in-memory # will use socket "dpdk_telemetry.v2"
$ ./build/app/test/dpdk-test -l 4,5 --in-memory # will use "dpdk_telemetry.v2:1"
The following telemetry script commands would allow one to connect to each binary::
$ ./usertools/dpdk-telemetry.py # will connect to testpmd
$ ./usertools/dpdk-telemetry.py -i 1 # will connect to test binary

View File

@ -112,6 +112,11 @@ def get_dpdk_runtime_dir(fp):
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--file-prefix', default='rte',
help='Provide file-prefix for DPDK runtime directory')
parser.add_argument('-i', '--instance', default='0', type=int,
help='Provide file-prefix for DPDK runtime directory')
args = parser.parse_args()
rd = get_dpdk_runtime_dir(args.file_prefix)
handle_socket(os.path.join(rd, 'dpdk_telemetry.{}'.format(TELEMETRY_VERSION)))
sock_path = os.path.join(rd, 'dpdk_telemetry.{}'.format(TELEMETRY_VERSION))
if args.instance > 0:
sock_path += ":{}".format(args.instance)
handle_socket(sock_path)