45 lines
730 B
Bash
Executable file
45 lines
730 B
Bash
Executable file
#!/bin/bash
|
|
|
|
# CPU to monitor
|
|
CPU=${1:-0}
|
|
# Sampling time
|
|
SLEEP=${2:-1}
|
|
# Samples to collect
|
|
COUNT=${3:-3}
|
|
|
|
# Enter CPU's sysfs
|
|
cd /sys/devices/system/cpu
|
|
|
|
# Initial C-State residencies counter
|
|
ISC=$(find cpu0/cpuidle -name "state*" | wc -l)
|
|
for I in $(seq 0 $((ISC-1))); do
|
|
LCS[$I]=`cat cpu$CPU/cpuidle/state$I/usage`
|
|
done
|
|
|
|
# Dump header
|
|
printf "#%13s " "Time"
|
|
for I in $(seq 0 $((ISC-1))); do
|
|
printf "%14s " "idle$I"
|
|
done
|
|
echo
|
|
|
|
# Sampling loop
|
|
for I in $(seq $COUNT); do
|
|
|
|
sleep $SLEEP
|
|
|
|
# Dump CPU C-State residencies
|
|
now=$(date +%s)
|
|
printf "%14d " $now
|
|
for I in $(seq 0 $((ISC-1))); do
|
|
U=`cat cpu$CPU/cpuidle/state$I/usage`
|
|
CCS=$(($U - ${LCS[$I]}))
|
|
printf "%14d " $CCS
|
|
LCS[$I]=$U
|
|
done
|
|
echo
|
|
|
|
|
|
done
|
|
|
|
# vim: ts=2
|