Skip to content

Instantly share code, notes, and snippets.

@nextrevision
Created March 2, 2015 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nextrevision/0b7073c73bf5f1d1ebea to your computer and use it in GitHub Desktop.
Save nextrevision/0b7073c73bf5f1d1ebea to your computer and use it in GitHub Desktop.
Watch PPS for a given interface
#!/bin/bash
[ -z $1 ] && { echo "usage: $0 [iface] [interval: default 1]"; exit 1; }
IFACE=$1
INTERVAL=${2:-1}
loop=1
PPS_RX=/sys/class/net/${IFACE}/statistics/rx_packets
PPS_TX=/sys/class/net/${IFACE}/statistics/tx_packets
trap _exit INT
function _exit() {
END_PPS_RX=$(cat $PPS_RX)
END_PPS_TX=$(cat $PPS_TX)
TOTAL_PPS_RX=$((END_PPS_RX - START_PPS_RX))
TOTAL_PPS_TX=$((END_PPS_TX - START_PPS_TX))
echo
echo "PPS RX TOTAL/AVG: ${TOTAL_PPS_RX}/$((TOTAL_PPS_RX / loop))"
echo "PPS TX TOTAL/AVG: ${TOTAL_PPS_TX}/$((TOTAL_PPS_TX / loop))"
exit
}
START_PPS_RX=$(cat $PPS_RX)
START_PPS_TX=$(cat $PPS_TX)
while true; do
RX1=$(cat $PPS_RX)
TX1=$(cat $PPS_TX)
sleep $INTERVAL
RX2=$(cat $PPS_RX)
TX2=$(cat $PPS_TX)
echo "${loop}: ${IFACE}: TX $(((TX2-TX1)/INTERVAL)) pps | RX $(((RX2-RX1)/INTERVAL)) pps"
let loop=$((loop+INTERVAL))
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment