User Tools

Site Tools


benchmarking

This is an old revision of the document!


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

Benchmark File System Read Write Performance

benchmarking.1458034726.txt.gz · Last modified: 2022/10/29 16:15 (external edit)