Chwilę temu, w komentarzu pod postem „Kontroler RAID a MySQL” jeden z czytelników pisał o testach RAID10 w konfiguracji 4 i 6 dysków SAS i pytał się o moje wrażenia. W tamtym momencie nie miałem możliwości wykonania odpowiednich testów i przedstawienia danych, ostatnio jednak okazja się pojawiła. Oto co się okazało.
Testy zostały wykonane na serwerze opartym o platformę Intel, kontroler to SRCSASJV działający w trybie WriteBack. Tym razem nie testowałem wydajności MySQL, tylko i wyłącznie wydajność dysków. Testowany był losowy zapis.
Skrypt testowy zapożyczyłem z Benchmark Wiki na stronie Percony, po kilku przeróbkach wyglądał następująco:
set -u
set -x
set -e
loop='1 2 3 4 5 6 7 8 9'
CURD=`pwd`
for sizei in 20; do
size=${sizei}G
cd /mnt
sysbench --test=fileio --file-num=64 --file-total-size=$size prepare
sysbench --test=fileio --file-total-size=$size --file-test-mode=rndwr --max-time=600 --max-requests=100000000 --num-threads=16 --init-rng=on --file-num=64 --file-extra-flags=d
for i in ${loop} ; do
for mode in rndwr; do
for blksize in 16384 ; do
for threads in 8 16 32 64; do
echo "====== testing $blksize in $threads threads"
echo PARAMS $size $mode $threads $blksize > $CURD/sysbench-size-$size-mode-$mode-threads-$threads-blksz-$blksize
sysbench --test=fileio --file-total-size=$size --file-test-mode=$mode\
--max-time=120 --max-requests=100000000 --num-threads=$threads --init-rng=on \
--file-num=64 --file-extra-flags=direct --file-fsync-freq=0 --file-block-size=$blksize run \
| tee -a $CURD/sysbench-size-$size-mode-$mode-threads-$threads-blksz-$blksize-test${i} 2>&1
done
done
done
done
sysbench --test=fileio --file-total-size=$size cleanup
cd $CURD
done
Teraz wyniki. Najpierw – RAID10 na 4 dyskach SAS.
972.71 Requests/sec executed
Read 0b Written 1.7811Gb Total transferred 1.7811Gb (15.197Mb/sec)
972.59 Requests/sec executed
Read 0b Written 1.7761Gb Total transferred 1.7761Gb (15.155Mb/sec)
969.92 Requests/sec executed
Read 0b Written 1.767Gb Total transferred 1.767Gb (15.077Mb/sec)
964.92 Requests/sec executed
Read 0b Written 1.77Gb Total transferred 1.77Gb (15.103Mb/sec)
966.61 Requests/sec executed
Read 0b Written 1.7731Gb Total transferred 1.7731Gb (15.13Mb/sec)
968.34 Requests/sec executed
Read 0b Written 1.7773Gb Total transferred 1.7773Gb (15.166Mb/sec)
970.60 Requests/sec executed
Read 0b Written 1.7748Gb Total transferred 1.7748Gb (15.001Mb/sec)
960.08 Requests/sec executed
Read 0b Written 1.7815Gb Total transferred 1.7815Gb (15.202Mb/sec)
972.90 Requests/sec executed
Jak widać, taka konfiguracja (4 dyski SAS SEAGATE ST373455SS) jest w stanie osiągnąć transfer ok. 15,1 MB/s i ok. 970 IOPS.
Teraz RAID10 na 6 dyskach:
1454.59 Requests/sec executed
Read 0b Written 2.6653Gb Total transferred 2.6653Gb (22.743Mb/sec)
1455.55 Requests/sec executed
Read 0b Written 2.6534Gb Total transferred 2.6534Gb (22.641Mb/sec)
1449.05 Requests/sec executed
Read 0b Written 2.6595Gb Total transferred 2.6595Gb (22.694Mb/sec)
1452.40 Requests/sec executed
Read 0b Written 2.6563Gb Total transferred 2.6563Gb (22.666Mb/sec)
1450.65 Requests/sec executed
Read 0b Written 2.6515Gb Total transferred 2.6515Gb (22.58Mb/sec)
1445.11 Requests/sec executed
Read 0b Written 2.6745Gb Total transferred 2.6745Gb (22.821Mb/sec)
1460.52 Requests/sec executed
Read 0b Written 2.6475Gb Total transferred 2.6475Gb (22.591Mb/sec)
1445.80 Requests/sec executed
Read 0b Written 2.6668Gb Total transferred 2.6668Gb (22.756Mb/sec)
1456.37 Requests/sec executed
Transfer ok. 22,6MB/s i ok. 1450 IOPS. Jak prosto wyliczyć, wydajność wzrosła równo o 50% – zgadza się to z wzrostem ilości dysków. Zgadzałoby się to też z grubsza z moimi doświadczeniami z wydajnością serwerów produkcyjnych. Może ilość par dysków jest nieparzysta, ale w efekcie nie powoduje to żadnych negatywnych skutków.
Komentarze