sestdiena, 2008. gada 21. jūnijs

Skripts failus sistēmas testēšanai

Skripts ģenerē direktoriju testfs ar apakšdirektorijām, katra apakšdirektorija ir ~1GB liela.

Pēc tam tiek uzņemts laiks un pētīts, cik ilgā laikā visi faili tiek:
* nolasīti
* kopēti
* izveidots tar fails (bez kompresijas)
* nolasīts tar fails
* dzēsts

Skriptu ir jāiekopē kādā direktorijā, kas atrodas uz testējamās failu sistēmas un startēt, piemēram, sekojoši (log fails tiks rakstīts mājas direktorijā):


while : ; do time bash ./skript.sh | tee -a ~/testfs.log ; done



#!/bin/bash

# uzstada lielumu gigabaitos - jābūt lielākam kā RAM
SIZE=8

if [ -d testfs ]
then
rm -rf testfs
fi

mkdir testfs

dd if=/dev/urandom bs=10240 count=1024 of=urandom 2>/dev/null

STARTIME=`date +%s`
for (( i=1 ; i<=$SIZE ; i++ ))
do
echo -n $i " "
mkdir testfs/test$i
for ((a=1;a<=1425;a++))
do
dd status=noxfer if=urandom bs=1024 count=$a >> testfs/test$i/data$a 2>/dev/null
done
done
echo " "
ENDTIME=`date +%s`

LAIKS=$(($ENDTIME-$STARTIME))
DATI=`du -hsm testfs | awk '{print $1}'`
echo -e DATI:\\t$DATI\\tMB
echo -e RAKST:\\t$(($DATI/$LAIKS))\\tMB/s

STARTIME=`date +%s`
for i in `find testfs -type f `
do
dd status=noxfer if=$i of=/dev/null 2>/dev/null
done
ENDTIME=`date +%s`
LAIKS=$(($ENDTIME-$STARTIME))
echo -e LASIS:\\t$(($DATI/$LAIKS))\\tMB/s

STARTIME=`date +%s`
cp -a testfs testfs-copy
ENDTIME=`date +%s`
LAIKS=$(($ENDTIME-$STARTIME))
echo -e KOPES:\\t$(($DATI/$LAIKS))\\tMB/s

STARTIME=`date +%s`
tar -cf testfs.tar testfs
ENDTIME=`date +%s`
LAIKS=$(($ENDTIME-$STARTIME))
echo -e MKTAR:\\t$(($DATI/$LAIKS))\\tMB/s

STARTIME=`date +%s`
cat testfs.tar > /dev/null
ENDTIME=`date +%s`
LAIKS=$(($ENDTIME-$STARTIME))
echo -e LATAR:\\t$(($DATI/$LAIKS))\\tMB/s
rm testfs.tar

STARTIME=`date +%s`
rm -r testfs-copy
ENDTIME=`date +%s`
LAIKS=$(($ENDTIME-$STARTIME))
echo -e DZESA:\\t$(($DATI/$LAIKS))\\tMB/s