From 0597de02027cf2ff174d7f038d8b5d3aaf5aff67 Mon Sep 17 00:00:00 2001 From: Sun Knudsen Date: Tue, 11 Aug 2020 13:13:59 -0400 Subject: [PATCH] Added server benchmarking guide --- .../README.md | 255 ++++++++++++++++++ 1 file changed, 255 insertions(+) create mode 100644 how-to-benchmark-cpu-memory-disk-and-network-performance-of-server-using-speedtest-and-sysbench/README.md diff --git a/how-to-benchmark-cpu-memory-disk-and-network-performance-of-server-using-speedtest-and-sysbench/README.md b/how-to-benchmark-cpu-memory-disk-and-network-performance-of-server-using-speedtest-and-sysbench/README.md new file mode 100644 index 0000000..b5e5ba7 --- /dev/null +++ b/how-to-benchmark-cpu-memory-disk-and-network-performance-of-server-using-speedtest-and-sysbench/README.md @@ -0,0 +1,255 @@ + + +# How to benchmark CPU, memory, disk and network performance of server using Speedtest and SysBench + +> Ideally, run benchmark tests on development servers to avoid installing and running Speedtest and SysBench on production servers. + +## Requirements + +- Virtual private server (VPS) or dedicated server running Debian 10 (buster) + +## Installation guide + +### Step 1: check if Backports repository is enabled + +```shell +cat /etc/apt/sources.list | grep "buster-backports" +``` + +### Step 2: enable Backports repository (only run command if previous step returned nothing) + +```shell +cat << "EOF" >> /etc/apt/sources.list +deb http://deb.debian.org/debian buster-backports main +EOF +apt update +``` + +### Step 3: check if GnuPG is installed + +```console +$ gpg --version +-bash: gpg: command not found +``` + +### Step 4: install GnuPG (only run command if previous step returned `-bash: gpg: command not found`) + +```shell +apt install -y gnupg2 +``` + +### Step 5: import [Speedtest](https://www.speedtest.net/)’s PGP public key and enable Speedtest’s repository + +```console +$ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 +Executing: /tmp/apt-key-gpghome.hyKJZh5s4e/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 +gpg: key 379CE192D401AB61: public key "Bintray (by JFrog) " imported +gpg: Total number processed: 1 +gpg: imported: 1 + +$ echo "deb https://ookla.bintray.com/debian buster main" | tee /etc/apt/sources.list.d/speedtest.list +deb https://ookla.bintray.com/debian buster main + +$ apt update +``` + +### Step 6: install Speedtest and SysBench + +```shell +apt install -y speedtest sysbench +``` + +--- + +## Usage guide + +### Benchmark network + +Depending on iptables configuration, running the following commands may be required. + +```shell +iptables -A OUTPUT -p tcp -m tcp --dport 8080 -m state --state NEW -j ACCEPT +ip6tables -A OUTPUT -p tcp -m tcp --dport 8080 -m state --state NEW -j ACCEPT +``` + +```console +$ speedtest + + Speedtest by Ookla + + Server: Vodafone - Reykjavík (id = 4141) + ISP: 1984 ehf + Latency: 0.64 ms (0.06 ms jitter) + Download: 95.82 Mbps (data used: 158.0 MB) + Upload: 95.63 Mbps (data used: 155.7 MB) +Packet Loss: 0.0% + Result URL: https://www.speedtest.net/result/c/19654353-3d2e-4ed3-ac22-824e1376b838 +``` + +Network download speed: 95.82 Mbps + +Network upload speed: 95.63 Mbps + +### Benchmark CPU + +```console +$ sysbench cpu --cpu-max-prime=20000 run +sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3) + +Running the test with following options: +Number of threads: 1 +Initializing random number generator from current time + + +Prime numbers limit: 20000 + +Initializing worker threads... + +Threads started! + +CPU speed: + events per second: 403.87 + +General statistics: + total time: 10.0012s + total number of events: 4040 + +Latency (ms): + min: 2.43 + avg: 2.47 + max: 4.60 + 95th percentile: 2.52 + sum: 9995.53 + +Threads fairness: + events (avg/stddev): 4040.0000/0.00 + execution time (avg/stddev): 9.9955/0.00 +``` + +CPU events per second: 403.87 + +### Benchmark memory + +```console +$ sysbench memory run +sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3) + +Running the test with following options: +Number of threads: 1 +Initializing random number generator from current time + + +Running memory speed test with the following options: + block size: 1KiB + total size: 102400MiB + operation: write + scope: global + +Initializing worker threads... + +Threads started! + +Total operations: 40219144 (4020984.62 per second) + +39276.51 MiB transferred (3926.74 MiB/sec) + + +General statistics: + total time: 10.0003s + total number of events: 40219144 + +Latency (ms): + min: 0.00 + avg: 0.00 + max: 1.84 + 95th percentile: 0.00 + sum: 4358.06 + +Threads fairness: + events (avg/stddev): 40219144.0000/0.00 + execution time (avg/stddev): 4.3581/0.00 +``` + +Memory speed: 3926.74 MiB/sec + +### Benchmark disk + +```console +$ sysbench fileio --file-total-size=8G prepare +sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3) + +128 files, 65536Kb each, 8192Mb total +Creating files for the test... +Extra file open flags: (none) +Creating file test_file.0 +Creating file test_file.1 +Creating file test_file.2 +Creating file test_file.3 +Creating file test_file.4 +Creating file test_file.5 +... +Creating file test_file.127 +8589934592 bytes written in 85.92 seconds (95.34 MiB/sec). + +$ sysbench fileio --file-total-size=8G --file-test-mode=rndrw --max-time=300 --max-requests=0 run +sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3) + +Running the test with following options: +Number of threads: 1 +Initializing random number generator from current time + + +Extra file open flags: (none) +128 files, 64MiB each +8GiB total file size +Block size 16KiB +Number of IO requests: 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 +Initializing worker threads... + +Threads started! + + +File operations: + reads/s: 2727.09 + writes/s: 1818.06 + fsyncs/s: 5818.16 + +Throughput: + read, MiB/s: 42.61 + written, MiB/s: 28.41 + +General statistics: + total time: 300.0100s + total number of events: 3109023 + +Latency (ms): + min: 0.00 + avg: 0.10 + max: 11.59 + 95th percentile: 0.23 + sum: 298089.49 + +Threads fairness: + events (avg/stddev): 3109023.0000/0.00 + execution time (avg/stddev): 298.0895/0.00 + +$ sysbench fileio --file-total-size=8G cleanup +sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3) + +Removing test files.. +``` + +Disk read throughput: 42.61 MiB/s + +Disk write throughput: 28.41 MiB/s