af0bf0f006
This script simplifies execution of bpftrace scripts for SPDK application analysis. The script should be invoked as: scripts/bpftrace.sh `pidof spdk_tgt` script.bt where 'script.bt' is the name of the bpftrace script you wish to execute. The script helps simplify the following: 1) replace __EXE__ markers in the bpftrace script with the full path of the spdk executable (required for usdt probes); it uses /proc/<pid>/exe to get the full path 2) replace __PID__ markers in the bpftrace script with the PID of the spdk process under analysis - this allows for doing things like filtering system call counts for just the SPDK process 3) invoke bpftrace with the -p <pid> option Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: Ib271f26efe4ba326d951a7b30f61b22be755dda7 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7710 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
10 lines
274 B
Bash
Executable File
10 lines
274 B
Bash
Executable File
#!/usr/bin/env bash
|
|
if [ $# -lt 2 ]; then
|
|
echo "usage: $0 <pid> <script>"
|
|
exit 1
|
|
fi
|
|
SCRIPTS_DIR=$(readlink -f $(dirname $0))
|
|
BIN_PATH=$(readlink -f /proc/$1/exe)
|
|
BPF_SCRIPT=$(sed "s#__EXE__#${BIN_PATH}#g" "${@:2}" | sed "s#__PID__#${1}#g")
|
|
bpftrace -p $1 -e "$BPF_SCRIPT"
|