aboutsummaryrefslogtreecommitdiff
path: root/blocks/block-cpu
diff options
context:
space:
mode:
Diffstat (limited to 'blocks/block-cpu')
-rwxr-xr-xblocks/block-cpu23
1 files changed, 23 insertions, 0 deletions
diff --git a/blocks/block-cpu b/blocks/block-cpu
new file mode 100755
index 0000000..3491608
--- /dev/null
+++ b/blocks/block-cpu
@@ -0,0 +1,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}%"