]]>
]]>

FlashCache sysbench

Initial benchmark of FlashCache with sysbench oltp — 2010/05/06

Binary package of FlashCache for CentOS 5.4, Kernel 2.6.18-164.15.1.el5 is there http://www.percona.com/downloads/TESTING/FlashCache/centos-2.6.18-164.15.1.el5.tar.gz

  • IO subsystems
    • RAID10: 8 disks SAS 2.5” 15K
    • SSD-1: Intel X25-E 32GB ( 1 gen firmware) ( Model Number: SSDSA2SH032G1GN INTEL, Firmware Revision: 045C8621)
    • SSD-2: Intel X25-M 160GB ( 2 gen ) ( Model Number: INTEL SSDSA2M160G2GC, Firmware Revision: 2CV102HA )
    • FlashCache: build over SSD-1 or SSD-2
  • Filesystem XFS, builds as: mkfs.xfs -f -d su=16384,sw=40 /dev/sdc
    • mounted with -o nobarrier option
  • InnoDB files layout: ibdata1 and ib_logfile* are placed on separate RAID partition ( not on FlashCache or SSD)

Benchmark: sysbench oltp ( read-only and read-write modes), 80mln rows (~18GB of data)

sysbench oltp read-only

results are in tps (transaction per second, more is better)

buffer_pool, GBRAID10FlashCacheX25-E
203089.753017.13014.19
16913.271831.51852.19
12352.651402.131471.13
8202.6879.5923.02
4140.88620.92647.71

Sysbench oltp read-write

read-write tests were done with done with different dirty pages thresholds in FlashCache: 20% and 80%.

( setting: sysctl -w dev.flashcache.dirty_thresh_pct=80 )

Results on X25-M

buffer_pool, GBRAID10FlashCache 20%FlashCache 80%X25-M
202474.862409.332447.412459.7
16470.47867.91937.121048.98
12230.92572.01677.69699.71
8144.12397.42443.85481.26
493.34283.11326.8341.07

Results on X25-E

buffer_pool, GBRAID10FlashCache 20%FlashCache 80%X25-E
202474.862451.832448.212454.05
16470.47626.64794.431079.63
12230.92368.87509.11706.25
8144.12249.64375.29468.26
493.34175.04278.14331.83

MySQL config

[mysqld]
basedir=/usr/local/mysql
user=root
socket=/var/lib/mysql/mysql.sock

server_id=1

local_infile=1
tmpdir=/mnt/fio

datadir=/mnt/fio320

skip-grant-table

innodb_buffer_pool_size=24G

innodb_data_file_path=ibdata1:10M:autoextend
innodb_file_per_table=1
innodb_flush_log_at_trx_commit=1

innodb_fast_checksum=1

innodb_log_buffer_size=8M
innodb_log_files_in_group=2
innodb_log_file_size=1900M

innodb_thread_concurrency=0
innodb_flush_method             = O_DIRECT

innodb_write_io_threads=4
innodb_read_io_threads=4
innodb_io_capacity=500

innodb_max_dirty_pages_pct=90

max_connections=3000
query_cache_size=0
skip-name-resolve

table_cache=10000

[mysql]

socket=/var/lib/mysql/mysql.sock

[client]
socket=/var/lib/mysql/mysql.sock

Script

#!/bin/sh
set -u
set -x
set -e

DR="/bench"
BD="/data/vadim/benchwork/benchmarks/sysmemory/back"

WT=300
RT=180

ROWS=80000000

EXPER="raid rw"

log2="/data/log/"
#log2="$DR/"

# restore from backup

rm -fr $DR/*

echo $log2
for nm in ibdata1 ib_logfile0 ib_logfile1
do
rm -f $log2/$nm
cp $BD/$nm $log2
done


cp -r $BD/* $DR

chown mysql.mysql -R $DR
chown mysql.mysql -R $log2

sync

function waitm {

while [ true ]
do

mysql -e "set global innodb_max_dirty_pages_pct=0" sbtest

wt=`mysql -e "SHOW ENGINE INNODB STATUS\G" | grep "Modified db pages" | sort -u | awk '{print $4}'`
if [[ "$wt" -lt 100 ]] ;
then
mysql -e "set global innodb_max_dirty_pages_pct=90" sbtest
break 
fi

echo "mysql pages $wt"
sleep 10
done

}

for bp in `seq 22 -2 2`
do

/usr/local/mysql/libexec/mysqld --defaults-file=/etc/my.opt.cnf --basedir=/usr/local/mysql --datadir=$DR  --innodb_data_home_dir=$log2 --innodb_log_group_home_dir=$log2 --innodb_thread_concurrency=16 --innodb_buffer_pool_size=${bp}GB   &
#/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.552.cnf --basedir=/usr/local/mysql --datadir=$DR  --innodb_data_home_dir=$log2 --innodb_log_group_home_dir=$log2 --innodb_thread_concurrency=16 --innodb_buffer_pool_size=${bp}GB &

sleep 60
mysql -e "select avg(id) from sbtest;" sbtest

echo "sysbench $EXPER bp ${bp} warmup" >> /tmp/bench.log

sysbench --test=oltp --oltp-table-size=$ROWS --oltp-read-only=off --init-rng=on --num-threads=16 --max-requests=0 --oltp-dist-type=uniform --max-time=$WT  --mysql-user=root --mysql-socket=/var/lib/mysql/mysql.sock run 
echo "sysbench $EXPER bp ${bp} warmup END" >> /tmp/bench.log
sleep 30
waitm

for j in 1 2 3
do
echo "$j"
echo "sysbench $EXPER bp ${bp} run $j" >> /tmp/bench.log
iostat -dx 5 >> oltp.bp$bp.iostat.res &
sysbench --test=oltp --oltp-table-size=$ROWS --oltp-read-only=off --init-rng=on --num-threads=16 --max-requests=0 --oltp-dist-type=uniform --max-time=$RT  --mysql-user=root --mysql-socket=/var/lib/mysql/mysql.sock run | tee -a oltp.bp$bp.res
echo "sysbench $EXPER bp ${bp} run $j END" >> /tmp/bench.log
kill -9 `pidof iostat`
sleep 30
waitm
done


mysqladmin  shutdown

done
 
benchmark/flashcache/sysbench/start.txt · Last modified: 2011/07/17 21:05 (external edit)
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Contact Us 24 Hours A Day
SupportContact us 24×7
Emergency? Contact us for help now!
Sales North America(888) 316-9775 or
(208) 473-2904
Sales
Europe
+44-208-133-0309 (UK)
0-800-051-8984 (UK)
0-800-181-0665 (GER)
Training(855) 55TRAIN or
(925) 271-5054

 

Share This
]]> ]]>