====== 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