]]>
Call us: 1-888-316-9775 • Contact Us
MySQL and InnoDB are trademarks of Oracle Corp.
Proudly running Percona Server
Copyright © 2006-2013 Percona Inc.
Copyright, Trademark, and Privacy Policy • Sitemap
]]>
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
- Hardware: Dell PowerEdge R900
- 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, GB | RAID10 | FlashCache | X25-E |
|---|---|---|---|
| 20 | 3089.75 | 3017.1 | 3014.19 |
| 16 | 913.27 | 1831.5 | 1852.19 |
| 12 | 352.65 | 1402.13 | 1471.13 |
| 8 | 202.6 | 879.5 | 923.02 |
| 4 | 140.88 | 620.92 | 647.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, GB | RAID10 | FlashCache 20% | FlashCache 80% | X25-M |
|---|---|---|---|---|
| 20 | 2474.86 | 2409.33 | 2447.41 | 2459.7 |
| 16 | 470.47 | 867.91 | 937.12 | 1048.98 |
| 12 | 230.92 | 572.01 | 677.69 | 699.71 |
| 8 | 144.12 | 397.42 | 443.85 | 481.26 |
| 4 | 93.34 | 283.11 | 326.8 | 341.07 |
Results on X25-E
| buffer_pool, GB | RAID10 | FlashCache 20% | FlashCache 80% | X25-E |
|---|---|---|---|---|
| 20 | 2474.86 | 2451.83 | 2448.21 | 2454.05 |
| 16 | 470.47 | 626.64 | 794.43 | 1079.63 |
| 12 | 230.92 | 368.87 | 509.11 | 706.25 |
| 8 | 144.12 | 249.64 | 375.29 | 468.26 |
| 4 | 93.34 | 175.04 | 278.14 | 331.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
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported





