stresstest/loop.sh

102 lines
1.8 KiB
Bash
Raw Normal View History

2023-09-14 09:55:23 +08:00
#!/bin/sh
source ./error_inject.sh
function add_fio()
{
while :
do
fio_cnt=$(ps aux | grep fio -c)
2023-09-14 11:31:13 +08:00
if [ $fio_cnt -gt 150 ]; then
2023-09-14 11:34:36 +08:00
echo "$fio_cnt larger than 150, do not add"
2023-09-14 09:55:23 +08:00
continue
fi
for dev in `lsscsi | grep scsi_debug | awk '{print $6}'`
do
inject=$[RANDOM%3]
2023-09-14 11:31:13 +08:00
if [ $inject -eq 0 ] || [ $inject -eq 1 ] ; then
2023-09-14 09:55:23 +08:00
disk=$(basename $dev)
threads=$[RANDOM%31+1]
echo "add $threads fio for $disk"
fio -filename=/dev/$disk -name=rand_write -rw=randrw -bs=4k -direct=1 -size=1G -numjobs=$threads -runtime=240 -group_reporting 2>&1 > /dev/null &
fi
done
sleep 10
done
}
function add_error()
{
while :
do
for dev in `lsscsi | grep scsi_debug | awk '{print $6}'`
do
inject=$[RANDOM%3]
if [ $inject -eq 0 ]; then
errtype=$[RANDOM%35+1]
echo add error to $(basename $dev)
error_inject$errtype $(basename $dev)
fi
done
sleep 3
done
}
function add_recovery_error()
{
while :
do
for dev in `lsscsi | grep scsi_debug | awk '{print $6}'`
do
inject=$[RANDOM%3]
if [ $inject -eq 0 ]; then
recovtype=$[RANDOM%7+1]
echo add recovery error to $(basename $dev)
recovery_inject$recovtype $(basename $dev)
fi
done
sleep 3
done
}
function clear_error()
{
while :
do
for dev in `lsscsi | grep scsi_debug | awk '{print $6}'`
do
inject=$[RANDOM%3]
if [ $inject -eq 0 ]; then
echo clear error $(basename $dev)
2023-09-14 11:31:13 +08:00
clear_disk_error $(basename $dev)
2023-09-14 09:55:23 +08:00
fi
done
sleep 100
done
}
function set_running()
{
while :
do
for dev in `lsscsi | grep scsi_debug | awk '{print $6}'`
do
2023-09-14 11:31:13 +08:00
disk=$(basename $dev)
state=$(cat /sys/block/$disk/device/state)
if [ "$state" == "offline" ]; then
echo clear error $disk
clear_disk_error $disk 2>&1 > /dev/null
echo "set $disk running"
echo "running" > /sys/block/$disk/device/state
fi
2023-09-14 09:55:23 +08:00
done
sleep 1
done
}