| Date | Mon, 07 Sep 2009 15:40:53 +0800 | From | Gui Jianfeng <> | Subject | Re: [RFC] IO scheduler based IO controller V9 |
| |
Hi Vivek,
I happened to encount a bug when i test IO Controller V9. When there are three tasks to run concurrently in three group, that is, one is parent group, and other two tasks are running in two different child groups respectively to read or write files in some disk, say disk "hdb", The task may hang up, and other tasks which access into "hdb" will also hang up.
The bug only happens when using AS io scheduler. The following scirpt can reproduce this bug in my box.
=========== #!/bin/sh
mkdir /cgroup mount -t cgroup -o io,blkio io /cgroup
echo anticipatory > /sys/block/hdb/queue/scheduler
mkdir /cgroup/test1 echo 100 > /cgroup/test1/io.weight
mkdir /cgroup/test2 echo 400 > /cgroup/test2/io.weight
mkdir /cgroup/test2/test3 echo 400 > /cgroup/test2/test3/io.weight
mkdir /cgroup/test2/test4 echo 400 > /cgroup/test2/test4/io.weight
#./rwio -r -f /hdb2/2000M.3 & dd if=/hdb2/2000M.3 of=/dev/null & pid4=$! echo $pid4 > /cgroup/test2/test3/tasks echo "pid4: $pid4"
#./rwio -r -f /hdb2/2000M.1 & dd if=/hdb2/2000M.1 of=/dev/null & pid1=$! echo $pid1 > /cgroup/test1/tasks echo "pid1 $pid1"
#./rwio -r -f /hdb2/2000M.2 & dd if=/hdb2/2000M.2 of=/dev/null & pid2=$! echo $pid2 > /cgroup/test2/test4/tasks echo "pid2 $pid2"
sleep 20
for ((;1;)) { ps -p $pid1 > /dev/null 2>&1 if [ $? -ne 0 ]; then break fi
kill -9 $pid1 > /dev/null 2>&1 } for ((;1;)) { ps -p $pid2 > /dev/null 2>&1 if [ $? -ne 0 ]; then break fi
kill -9 $pid2 > /dev/null 2>&1 }
kill -9 $pid4 > /dev/null 2>&1
rmdir /cgroup/test2/test3 rmdir /cgroup/test2/test4 rmdir /cgroup/test2 rmdir /cgroup/test1
umount /cgroup rmdir /cgroup
|