# # Assume we have 10 second sampling interval # BEGIN { interval=10; sample=0 } # # Parse /proc/interrupts for 2 cores only. Will break for anything else # /CPU/ { start++; if (start == 2) { printf "%4.4s %10s %10s %s\n","IRQ","CPU0 IRQ/s","CPU1 IRQ/s","Description" start=0 } next } /MIS/ { end++} { irq=$1 count[irq]++; irqscpu0[irq,count[irq]]=$2 irqscpu1[irq,count[irq]]=$3 rest=$4 " " $5 " " $6 " " $7 " " $8 " " $9 " " $10 " " $11 if (count[irq]==2) { delta0=irqscpu0[irq,2] - irqscpu0[irq,1] delta1=irqscpu1[irq,2] - irqscpu1[irq,1] printf "%4.4s %10.1f %10.1f %s\n", irq,delta0/interval,delta1/interval,rest count[irq]=0 irqscpu0[irq,1]=0 irqscpu0[irq,2]=0 } } { if (end==2) { print "---------- End of sample ",++sample,"-----------------------------------------\n" end=0 } }