User Tools

Site Tools


benchmarking

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

  1. Step1: Prepare:
    sysbench --test=fileio --file-total-size=5G prepare
  2. 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)
  3. Step3: Cleanup
    sysbench --test=fileio --file-total-size=5G cleanup

MySQL Server Benchmark

  1. 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
  2. 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
  3. 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

Benchmark network speed

using speedtest

  1. Step1: install speedtest on linux:
    pip install speedtest-cli
  2. 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

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
benchmarking.txt · Last modified: 2017/01/12 09:12 (external edit)