#!/bin/bash

TMPDIR=/tmp/softirq-net-rx-top/
CUR="$TMPDIR/cur"
PREV="$TMPDIR/prev"
DIFF="$TMPDIR/diff"

mkdir -p $TMPDIR
rm -f "$CUR" "$PREV" "$DIFF"

while sleep 1; do
	for i in $(grep NET_RX /proc/softirqs); do
		echo "$i"
	done | grep [0-9] > "$CUR"

	if [ ! -f "$PREV" ]; then
		mv "$CUR" "$PREV"
		continue
	fi

	for i in $(seq 1 $(wc -l < "$CUR")); do
		printf "%s\t%s\n" CPU$((i-1)) $(($(sed -n "${i}p" "$CUR") - $(sed -n "${i}p" "$PREV")))
	done > "$DIFF"

	echo
	clear
	echo "Press CTRL-C to exit..."
	uptime  | sed 's/.*:/Load average: /g'
	cat "$DIFF"
	mv "$CUR" "$PREV"
done
