From 2061f3efacf4bc2068c88241010d7b9e795c0b29 Mon Sep 17 00:00:00 2001 From: Marios Andreopoulos Date: Thu, 21 Feb 2013 04:25:06 +0200 Subject: [PATCH] complete rewrite, based on iostat instead of /proc/stats, gives more interactive and detailed feedback --- scripts/mled-iowait | 73 +++++++++++++++++++++++++++++++-------------- 1 file changed, 51 insertions(+), 22 deletions(-) diff --git a/scripts/mled-iowait b/scripts/mled-iowait index c64a63c..a948261 100755 --- a/scripts/mled-iowait +++ b/scripts/mled-iowait @@ -1,41 +1,70 @@ #!/bin/bash +LOWTHRESHOLD="1.01" +HIGHTHRESHOLD="30.2" REFRESHRATE=1 + LEDCONTROLLER="/usr/bin/ledcontroller" -iowaitCounter="$(grep 'cpu ' /proc/stat | cut -f 9 -d ' ')" -$LEDCONTROLLER blue -ledcolor="blue" -while (true); do +iostat -c "$REFRESHRATE" | while read iostatOutput; do - iowaitTemp="$(grep 'cpu ' /proc/stat | cut -f 9 -d ' ')" + iowaitPercent="$(echo "$iostatOutput" | grep -vE "Linux|avg|^$" | awk '{print $4}')" -# echo "iowaitCounter=$iowaitCounter, iowaitTemp=$iowaitTemp" + [ -z "$iowaitPercent" ] || \ + if (( $(bc <<< "$iowaitPercent > $LOWTHRESHOLD") == 0 )); then - if (( "$iowaitCounter" == "$iowaitTemp" )); then + $LEDCONTROLLER blue - if [ "$ledcolor" != "blue" ]; then + elif (( $(bc <<< "$iowaitPercent > $HIGHTHRESHOLD") == 0 )); then - $LEDCONTROLLER blue - ledcolor="blue" - - fi + $LEDCONTROLLER green else - iowaitCounter="$iowaitTemp" - - if [ "$ledcolor" != "red" ]; then - - $LEDCONTROLLER red; - ledcolor="red" - - fi + $LEDCONTROLLER red fi - sleep "$REFRESHRATE"; - done + +# This is an older version of the code, which used /proc/stats to do a similar job. + +#iowaitCounter="$(grep 'cpu ' /proc/stat | cut -f 9 -d ' ')" +#$LEDCONTROLLER blue +#ledcolor="blue" +# +#while (true); do +# +# iowaitTemp="$(grep 'cpu ' /proc/stat | cut -f 9 -d ' ')" +# +## echo "iowaitCounter=$iowaitCounter, iowaitTemp=$iowaitTemp" +# +# if (( "$iowaitCounter" == "$iowaitTemp" )); then +# +# if [ "$ledcolor" != "blue" ]; then +# +# $LEDCONTROLLER blue +# ledcolor="blue" +# +# fi +# +# else +# +# iowaitCounter="$iowaitTemp" +# +# if [ "$ledcolor" != "red" ]; then +# +# $LEDCONTROLLER red; +# ledcolor="red" +# +# fi +# +# fi +# +# sleep "$REFRESHRATE"; +# +#done + +