Spdk/scripts
Konrad Sztyber e61fbe91e7 scripts/trace: qpair annotations
This patch adds support for annotating qpairs.  The raw pointer values
are replaced with a list of various properties of a qpair collected by
the bpftrace script.

A line like this:

`0 2856282624.000 RDMA_REQ_NEW id: r3256 qpair: 0x26ba550`

becomes (the line was only broken here):

`0 2856282502.669 RDMA_REQ_NEW id: r3256 qpair(ptr=0x26ba550, thread=2, qid=0, \
subnqn=nqn.2016-06.io.spdk:cnode1, \
hostnqn=nqn.2014-08.org.nvmexpress:uuid:729783b4ab38485d8d767b7741108a8)`

To annotate a trace, one first needs to enable and record the DTrace
probes:

```
$ scripts/bpf/trace.py --record `pidof spdk_tgt` > bpftraces
^C
```

Of course, the probe events are only recorded when the script is
executing, so in order to generate the annotations properly, it must be
started before the annotated objects are created.  For instance, for
NVMeoF, it needs to be running before a connection is made.

After the BPF probes are recored, the traces can be annotated:

```
$ build/bin/spdk_trace -p `pidof spdk_tgt` -s spdk_tgt -j | \
	scripts/bpf/trace.py -b bpftraces
```

For now, the script only annotates traces from the rdma module, as it's
the only one with tracpoints recording qpair pointers now, but it could
be extended to support more tracepoints.

Similarly, more objects could be annotated in the future by extending
the `SPDKObject` class and defining additional DTrace probe points.

Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com>
Change-Id: I2225f4b1ab266b41af561b5e7d942411cd0c13c1
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8107
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2021-07-07 09:43:37 +00:00
..
bash-completion event: replace master_core with main_core in spdk_app_opts 2020-12-03 09:41:07 +00:00
bpf scripts/trace: qpair annotations 2021-07-07 09:43:37 +00:00
ceph scripts/ceph: load loop module explicitly 2021-03-26 18:46:13 +00:00
perf scripts/nvmf_perf: make rate_iops actually optional 2021-05-28 14:25:54 +00:00
pkgdep usdt: add User Space DTrace support to SPDK 2021-05-21 08:03:27 +00:00
rpc iscsi: Set resource pool size to the predetermined values to run with little memory 2021-06-17 08:59:18 +00:00
spdkcli nvmf: remove usage of "whitelist" 2020-12-03 09:41:07 +00:00
vagrant scripts/vagrant: add fedora34 2021-07-05 14:36:34 +00:00
bpftrace.sh nvmf: add USDT probes for subsystem state changes 2021-06-08 08:27:15 +00:00
check_format.sh check_format: Fix git-grep pattern 2021-07-05 14:35:50 +00:00
common.sh scripts: add autotest support for Windows 2021-06-08 08:19:32 +00:00
config_converter.py scripts/config_converter: skip sections not present in legacy config 2021-01-15 08:32:10 +00:00
core-collector.sh scripts: Use core dump collector 2021-01-06 00:01:05 +00:00
detect_cc.sh check_format: Reformat the Bash code in compliance with shfmt 2020-05-07 20:52:21 +00:00
dpdk_mem_info.py scripts: add a parser for the dpdk memory stats. 2020-01-24 05:46:43 +00:00
eofnl scripts/check_format: check trailing whitespace 2017-10-24 17:35:23 -04:00
fio-wrapper scripts/fio-wrapper: Move devices sync to configure_devices() 2021-05-27 07:35:29 +00:00
gdb_macros.py scripts: Use range instead of xrange 2019-02-13 22:54:15 +00:00
gen_ftl.sh check_format: Reformat the Bash code in compliance with shfmt 2020-05-07 20:52:21 +00:00
gen_nvme.sh script/gen_nvme: do not generate legacy configuration 2020-10-22 17:08:41 +00:00
genconfig.py genconfig.py: allow numbers in config option names 2020-02-20 14:40:19 +00:00
get-pmr pkgdep/git: Bump vanilla qemu to v6.0.0 2021-05-11 11:51:01 +00:00
histogram.py histograms: add script for parsing histogram data 2019-01-24 14:14:32 +00:00
iostat.py iostat : add -x to display extended statistics 2021-06-04 22:47:44 +00:00
pc_libs.sh build: generate pkg-config files for SPDK 2021-01-21 09:46:32 +00:00
pc_modules.sh build: generate pkg-config files for SPDK 2021-01-21 09:46:32 +00:00
pc.sh build: install generated pkg-config files 2021-03-17 11:10:45 +00:00
pkgdep.sh scripts/pkgdep: Move distro independent parts to a common place 2020-08-10 11:28:20 +00:00
posix.txt build: Automatically detect use of POSIX includes 2017-05-08 13:20:37 -07:00
prep_benchmarks.sh check_format: Reformat the Bash code in compliance with shfmt 2020-05-07 20:52:21 +00:00
qat_setup.sh configure: remove --with-igb-uio-driver option 2021-01-22 08:47:48 +00:00
rpc_http_proxy.py scripts: Add SSL certificate option in rpc_http_proxy 2020-05-05 08:04:00 +00:00
rpc.py rpc: Fix raid strip size method not consistent. 2021-06-24 17:30:19 +00:00
rxe_cfg_small.sh test/nvmf: Use rxe_cfg to get rxe-enabled net devices 2021-04-12 09:41:20 +00:00
setup.sh check_format: Fixes for shellcheck's SC2030 directive 2021-06-30 22:43:05 +00:00
spdkcli.py scripts/spdkcli: Stay on command input. 2020-07-08 07:55:15 +00:00
sync_dev_uevents.sh sync_dev_uevents: Break from the loop if kernel seqnum matches mdev's 2021-02-04 16:10:49 +00:00