aboutsummaryrefslogtreecommitdiff
path: root/blocks/block-cpu
blob: 3491608207a7839eeb78c981822d04f5ab26ac73 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/sh
# CPU usage from /proc/stat deltas. Cheaper than `top -bn1`.
STATE=/tmp/block-cpu.state

read -r _ u n s i io irq sirq st _ < /proc/stat
total=$((u+n+s+i+io+irq+sirq+st))
idle=$((i+io))

if [ -r "$STATE" ]; then
    read -r prev_total prev_idle < "$STATE"
    dt=$((total - prev_total))
    di=$((idle - prev_idle))
    if [ "$dt" -gt 0 ]; then
        usage=$(( ( (dt - di) * 100 ) / dt ))
    else
        usage=0
    fi
else
    usage=0
fi

echo "$total $idle" > "$STATE"
echo "${usage}%"