#!/bin/bash #This script dumps hw_counters and cm counters of #all ports of the given rdma device. function read_hw_counters() { if [ ! -d /sys/class/infiniband/$device ] ; then echo "Device $device not found" exit 1 fi ports=$(ls /sys/class/infiniband/$device/ports/) for port in $ports; do echo "Port $port hw counters:" counters_files=$(ls /sys/class/infiniband/$device/ports/$port/hw_counters/) for file in $counters_files; do value=$(cat /sys/class/infiniband/$device/ports/$port/hw_counters/$file) echo "$file: $value" done done } function read_cm_counters() { if [ ! -d /sys/class/infiniband_cm/$device ] ; then return fi dirs=$(ls /sys/class/infiniband_cm/$device/) for port in $dirs; do if [ -z "${port##*[!0-9]*}" ]; then #if this is not port number, skip. continue fi echo "Port $port cm counters:" counters_dirs=$(ls /sys/class/infiniband_cm/$device/$port/) for dir in $counters_dirs; do counters_files=$(ls /sys/class/infiniband_cm/$device/$port/$dir/) for file in $counters_files; do value=$(cat /sys/class/infiniband_cm/$device/$port/$dir/$file) echo "$file: $value" done done done } if [ $# -lt 1 ]; then echo "Valid command is: show_rdma_counters " echo "Example:" echo "show_rdma_counters mlx5_0" exit 0 fi device=$1 read_hw_counters read_cm_counters