Here's a somewhat imperfect, though short script I knocked together that fixes 
scheduling issues.

while true
do
for i in `iotop -P -b -q -o -d 0.1 -n 10 | awk -F ' ' '{if ( $1 ~ /[0-9]/ && 
$10 > 10) print  $1}'` 
do
        ionice -c 3 -p $i
       echo "process $i reniced to idel as it was hogging io"   
done
for i in `top  -b -d 0.1 -n 10 | awk -F ' ' '{if ( $1 ~ /[0-9]/ && $4 == 0 && 
$9 > 15) print  $1}'` 
do
        renice -n 10 -p $i
       echo "process $i reniced to idel as it was hogging cpu"  
done
for i in `top  -b -d 0.1 -n 10 | awk -F ' ' '{if ( $1 ~ /[0-9]/ && $4 == 10 && 
$9 < 10) print  $1}'` 
do
        renice -n 0 -p $i
       echo "process $i reniced to idel as it stopped hogging cpu"      
done
sleep 0.5
done

Reply via email to