benchmarking
This is an old revision of the document!
Table of Contents
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-name> [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
benchmarking.1437782035.txt.gz · Last modified: 2022/10/29 16:15 (external edit)