usertools/telemetry: connect to separate instances
authorBruce Richardson <bruce.richardson@intel.com>
Thu, 14 Oct 2021 10:49:06 +0000 (11:49 +0100)
committerDavid Marchand <david.marchand@redhat.com>
Thu, 14 Oct 2021 18:57:06 +0000 (20:57 +0200)
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>
doc/guides/howto/telemetry.rst
usertools/dpdk-telemetry.py

index 8f4fa1a..b37dc0a 100644 (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
index 2974a64..ce27548 100755 (executable)
@@ -112,6 +112,11 @@ readline.set_completer_delims(readline.get_completer_delims().replace('/', ''))
 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)