docs: update benchmark

This commit is contained in:
Micooz 2017-12-13 10:00:17 +08:00
parent 9a67cb6006
commit 9fbc86057c
No known key found for this signature in database
GPG Key ID: B100C9A159B1EBA0

@ -11,13 +11,12 @@ We use [iperf](https://en.wikipedia.org/wiki/Iperf) as network bandwidth measure
## Preparations
### 1. clone and install blinksocks globally
### 1. clone and install dependencies
```
$ git clone https://github.com/blinksocks/blinksocks
$ cd blinksocks
$ npm install
$ npm install -g .
```
### 2. prepare test cases
@ -46,75 +45,79 @@ Here is an example output about network performance of different [shadowsocks st
```
blinksocks version:
2.6.3
2.8.4
Operating System:
cpu Intel(R) Core(TM) i3-4160 CPU @ 3.60GHz
cores 4
memory 16722886656
memory 16722878464
type Linux
platform linux
arch x64
release 4.4.0-96-generic
release 4.4.0-101-generic
Node.js Versions:
http_parser 2.7.0
node 8.6.0
v8 6.0.287.53
uv 1.14.1
node 8.9.3
v8 6.1.534.48
uv 1.15.0
zlib 1.2.11
ares 1.10.1-DEV
modules 57
nghttp2 1.25.0
openssl 1.0.2l
openssl 1.0.2n
icu 59.1
unicode 9.0
cldr 31.0.1
tz 2017b
running tests...
running 4 tests...
------------ Test Case 0 ----------------
[{"name":"ss-base"},{"name":"ss-stream-cipher","params":{"method":"aes-256-ctr"}}]
Interval Transfer Bitrate
0.00-3.00 sec 1.89 GBytes 5.42 Gbits/sec sender
0.00-3.11 sec 1.77 GBytes 4.88 Gbits/sec receiver
0.00-3.00 sec 1.84 GBytes 5.26 Gbits/sec sender
0.00-3.12 sec 1.71 GBytes 4.71 Gbits/sec receiver
-----------------------------------------
------------ Test Case 1 ----------------
[{"name":"ss-base"},{"name":"ss-stream-cipher","params":{"method":"aes-256-cfb"}}]
Interval Transfer Bitrate
0.00-3.00 sec 994 MBytes 2.78 Gbits/sec sender
0.00-3.31 sec 890 MBytes 2.26 Gbits/sec receiver
0.00-3.00 sec 972 MBytes 2.72 Gbits/sec sender
0.00-3.30 sec 856 MBytes 2.18 Gbits/sec receiver
-----------------------------------------
------------ Test Case 2 ----------------
[{"name":"ss-base"},{"name":"ss-stream-cipher","params":{"method":"camellia-256-cfb"}}]
Interval Transfer Bitrate
0.00-3.00 sec 502 MBytes 1.40 Gbits/sec sender
0.00-3.73 sec 394 MBytes 887 Mbits/sec receiver
0.00-3.00 sec 510 MBytes 1.43 Gbits/sec sender
0.00-3.58 sec 382 MBytes 896 Mbits/sec receiver
-----------------------------------------
------------ Test Case 3 ----------------
[{"name":"ss-base"},{"name":"ss-aead-cipher","params":{"method":"aes-256-gcm"}}]
Interval Transfer Bitrate
0.00-3.00 sec 804 MBytes 2.25 Gbits/sec sender
0.00-3.31 sec 489 MBytes 1.24 Gbits/sec receiver
0.00-3.00 sec 731 MBytes 2.04 Gbits/sec sender
0.00-3.89 sec 642 MBytes 1.38 Gbits/sec receiver
-----------------------------------------
(ranking):
1: Test Case 0, Bitrate=[5.42 Gbits/sec, 4.88 Gbits/sec], [{"name":"ss-base"},{"name":"ss-stream-cipher","params":{"method":"aes-256-ctr"}}]
2: Test Case 1, Bitrate=[2.78 Gbits/sec, 2.26 Gbits/sec], [{"name":"ss-base"},{"name":"ss-stream-cipher","params":{"method":"aes-256-cfb"}}]
3: Test Case 3, Bitrate=[2.25 Gbits/sec, 1.24 Gbits/sec], [{"name":"ss-base"},{"name":"ss-aead-cipher","params":{"method":"aes-256-gcm"}}]
4: Test Case 2, Bitrate=[1.40 Gbits/sec, 887 Mbits/sec], [{"name":"ss-base"},{"name":"ss-stream-cipher","params":{"method":"camellia-256-cfb"}}]
1: Test Case 0, Bitrate = 5.26 Gbits/sec, 4.71 Gbits/sec
[{"name":"ss-base"},{"name":"ss-stream-cipher","params":{"method":"aes-256-ctr"}}]
2: Test Case 1, Bitrate = 2.72 Gbits/sec, 2.18 Gbits/sec
[{"name":"ss-base"},{"name":"ss-stream-cipher","params":{"method":"aes-256-cfb"}}]
3: Test Case 3, Bitrate = 2.04 Gbits/sec, 1.38 Gbits/sec
[{"name":"ss-base"},{"name":"ss-aead-cipher","params":{"method":"aes-256-gcm"}}]
4: Test Case 2, Bitrate = 1.43 Gbits/sec, 896 Mbits/sec
[{"name":"ss-base"},{"name":"ss-stream-cipher","params":{"method":"camellia-256-cfb"}}]
Done in 59.51s.
Done in 61.94s.
```
As you can see, the program first lists **blinksocks version**, **Operating System** and **Node.js Versions** parameters of the current platform.
Following the parameters, there are 3 test cases, each test case has different configuration(presets) defined in [benchmark/cases.js]. Test results are followed by configuration line.
Following the parameters, there are 4 test cases, each test case has different configuration(presets) defined in [benchmark/cases.js]. Test results are followed by configuration line.
The first line of results represents traffic from `iperf -c` to `bs-client` while the second represents traffic from `bs-server` to `iperf -s`.
@ -125,7 +128,7 @@ The first line of results represents traffic from `iperf -c` to `bs-client` whil
> You'd better check out [benchmark/iperf.sh] and figure out how it works.
**In my environment**, `aes-256-ctr` has the maximum transfer and bitrate among these 4 test cases.
**In my environment**, stream cipher with `aes-256-ctr` encryption method has the maximum transfer as well as bitrate among these 4 test cases.
## History Reports