blob: 949c447ac71dc771c661ce3c513eb4a119bcc9ae [file] [log] [blame]
Patrick Bellasi49c99022016-03-14 20:00:41 +00001#!/bin/bash
2
3# CPU to monitor
4CPU=${1:-0}
5# Sampling time
6SLEEP=${2:-1}
7# Samples to collect
8COUNT=${3:-3}
9
10# Enter CPU's sysfs
11cd /sys/devices/system/cpu
12
13# Initial C-State residencies counter
14ISC=$(find cpu0/cpuidle -name "state*" | wc -l)
15for I in $(seq 0 $((ISC-1))); do
16 LCS[$I]=`cat cpu$CPU/cpuidle/state$I/usage`
17done
18
19# Dump header
20printf "#%13s " "Time"
21for I in $(seq 0 $((ISC-1))); do
22 printf "%14s " "idle$I"
23done
24echo
25
26# Sampling loop
27for I in $(seq $COUNT); do
28
29 sleep $SLEEP
30
31 # Dump CPU C-State residencies
32 now=$(date +%s)
33 printf "%14d " $now
34 for I in $(seq 0 $((ISC-1))); do
35 U=`cat cpu$CPU/cpuidle/state$I/usage`
36 CCS=$(($U - ${LCS[$I]}))
37 printf "%14d " $CCS
38 LCS[$I]=$U
39 done
40 echo
41
42
43done
44
45# vim: ts=2