====== Benchmarking ======
===== Benchmark website =====
==== Benchmark with ab tool ====
ab tool will be installed when we install webserver apache
=== Syntax and basic options ===
* Syntax:
ab [options] [http[s]://]hostname[:port]/path
* Basic options:
* -n requests Number of requests to perform
* -c concurrency Number of multiple requests to make
=== examples ===
* run benchmark website shop.babies.vn with 100 requests and 4 concurrency multiple requests:
ab -n 100 -c 4 http://shop.babies.vn/
output:
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking shop.babies.vn (be patient).....done
Server Software: Apache/2.2.27
Server Hostname: shop.babies.vn
Server Port: 80
Document Path: /
Document Length: 81923 bytes
Concurrency Level: 4
Time taken for tests: 61.233 seconds
Complete requests: 100
Failed requests: 99
(Connect: 0, Receive: 0, Length: 99, Exceptions: 0)
Write errors: 0
Non-2xx responses: 5
Total transferred: 7973422 bytes
HTML transferred: 7921109 bytes
Requests per second: 1.63 [#/sec] (mean)
Time per request: 2449.332 [ms] (mean)
Time per request: 612.333 [ms] (mean, across all concurrent requests)
Transfer rate: 127.16 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.3 0 11
Processing: 266 2430 429.9 2397 3861
Waiting: 265 2313 428.4 2273 3860
Total: 266 2430 429.8 2397 3861
Percentage of the requests served within a certain time (ms)
50% 2397
66% 2485
75% 2639
80% 2664
90% 2925
95% 3002
98% 3834
99% 3861
100% 3861 (longest request)
===== Benchmark with sysbench(CPU, File IO, MySQL) =====
==== Download and Install ====
Download:
wget http://downloads.mysql.com/source/sysbench-0.4.12.5.tar.gz
Install:
yum install libtool
cd sysbench
./autogen.sh
./configure
make & make install
==== Syntax and Basic Options ====
* Syntax:
sysbench [general-options]... --test= [test-options]... command
* Basic Options:
==== CPU Benchmark ====
run script below:
sysbench --test=cpu --cpu-max-prime=20000 run
output:
Running the test with following options:
Number of threads: 1
Random number generator seed is 0 and will be ignored
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 38.5596s
total number of events: 10000
total time taken by event execution: 38.5538
per-request statistics:
min: 3.69ms
avg: 3.86ms
max: 23.75ms
approx. 95 percentile: 4.44ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 38.5538/0.00
And You see a lot of numbers, the most important of it is the total time:
total time: 38.5596s
Of course, you must compare benchmarks across multiple systems to know what these numbers are worth.
==== File IO Benchmark ====
- Step1: Prepare:
sysbench --test=fileio --file-total-size=5G prepare
- Step2: Run benchmark
sysbench --test=fileio --file-total-size=5G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run
output:
sysbench 0.4.12.5: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Initializing random number generator from timer.
Random number generator seed is 0 and will be ignored
Extra file open flags: 0
128 files, 40Mb each
5Gb total file size
Block size 16Kb
Number of random requests for random IO: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Threads started!
Time limit exceeded, exiting...
Done.
Operations performed: 701100 Read, 467400 Write, 1495579 Other = 2664079 Total
Read 10.698Gb Written 7.132Gb Total transferred 17.83Gb (60.859Mb/sec)
3894.99 Requests/sec executed
Test execution summary:
total time: 300.0011s
total number of events: 1168500
total time taken by event execution: 134.9176
per-request statistics:
min: 0.00ms
avg: 0.12ms
max: 14.60ms
approx. 95 percentile: 0.28ms
Threads fairness:
events (avg/stddev): 1168500.0000/0.00
execution time (avg/stddev): 134.9176/0.00
The important number is the Mb/sec value:
Read 10.698Gb Written 7.132Gb Total transferred 17.83Gb (60.859Mb/sec)
- Step3: Cleanup
sysbench --test=fileio --file-total-size=5G cleanup
==== MySQL Server Benchmark ====
- Step1: To measure MySQL performance, we first create a test table in the database test with 1,000,000 rows of data:
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword prepare
- Step2: Afterwards, you can run the MySQL benchmark as follows:
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
- Step3: To clean up the system afterwards (i.e., remove the test table), run:
sysbench --test=oltp --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword cleanup
===== Benchmark with graphing software =====
==== Better Cacti Templates ====
Download: wget https://mysql-cacti-templates.googlecode.com/files/better-cacti-templates-1.1.8.tar.gz
===== Benchmark network speed =====
==== using speedtest ====
- Step1: install speedtest on linux:
pip install speedtest-cli
- Step2: Run test
speedtest
==== network monitor with iptraf ====
refer: http://www.tecmint.com/real-time-interactive-ip-lan-monitoring-with-iptraf-tool/
* Install
yum install iptraf
* Run normal
iptraf
* Monitor Traffic on eth0:
iptraf -s eth0
===== Benchmark File System Read Write Performance =====
refer: http://www.slashroot.in/linux-file-system-read-write-performance-test
==== Using dd command ====
* Benchmarck the speed with which **data was cached to RAM memory, not to the disk**
dd if=/dev/zero of=speetest bs=1M count=100
output:
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.102163 s, 1.0 GB/s
* Ask dd command to report the speed only **after the data is synced with the disk**
dd if=/dev/zero of=speetest bs=1M count=100 conv=fdatasync
output:
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 1.12073 s, 93.6 MB/s
==== Using hdparm ====
hdparm -tT /dev/sdb1
output:
/dev/sdb1:
Timing cached reads: 12982 MB in 2.00 seconds = 6500.84 MB/sec
Timing buffered disk reads: 346 MB in 3.01 seconds = 115.04 MB/sec