mirror of
https://github.com/3proxy/3proxy.git
synced 2026-10-16 00:25:48 +08:00
Benchmarks: splice by direction, grace delay, tunnels, more proxies
bench.py: - 2000 clients posting 2 KB and getting 50 KB back, next to the GET one - haproxy with splice-response and splice-request, like -s1 and -s2 - CONNECT and SOCKSv5 scenarios: wrk and iperf3 run under proxychains-ng, so every connection asks the proxy for a tunnel; and the same loads through a TCP relay to a fixed destination - tinyproxy and squid (HTTP proxy, CONNECT), dante (SOCKS); each proxy takes part only in the scenarios it supports - 3proxy also gets its socks service and a tcppm to the web server report.py: one throughput table for several machines (--machine), each cell their medians and their average; bold for the best of a group, * for the best of the row; --split puts the splice proxies in a table of their own, --prefix picks scenarios. RESULTS.md: the comparison as one table for both machines, splice by direction (devel -s0/-s1/-s3 against haproxy's settings) and grace delay with splice, with their data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
626aac16bc
commit
a146570533
@ -71,16 +71,23 @@ host) falls on all of them alike; the summary gives medians.
|
|||||||
| `stream1`, `stream1-down` | one iperf3 stream through a TCP relay (3proxy `tcppm`, nginx `stream`, haproxy `mode tcp`), upload and download |
|
| `stream1`, `stream1-down` | one iperf3 stream through a TCP relay (3proxy `tcppm`, nginx `stream`, haproxy `mode tcp`), upload and download |
|
||||||
| `stream16` | sixteen streams |
|
| `stream16` | sixteen streams |
|
||||||
| `http-ka-1k`, `http-ka-1m` | HTTP over kept-alive connections through an HTTP proxy (absolute URIs), 1 KB and 1 MB answers |
|
| `http-ka-1k`, `http-ka-1m` | HTTP over kept-alive connections through an HTTP proxy (absolute URIs), 1 KB and 1 MB answers |
|
||||||
| `http-ka-50k-2000` | the same with 2000 clients at once, 50 KB answers |
|
| `http-ka-50k-2000` | 2000 clients at once, GET answered with 50 KB |
|
||||||
|
| `http-ka-2k-50k-2000` | the same, each request a POST with a 2 KB body |
|
||||||
| `http-close-1k` | a new connection for every request |
|
| `http-close-1k` | a new connection for every request |
|
||||||
|
| `connect-*` | the same loads through CONNECT tunnels: wrk and iperf3 run under proxychains-ng, so every connection they make asks the proxy for a tunnel to the origin (`connect-close-1k`: a tunnel for every request) |
|
||||||
|
| `socks-*` | the same through SOCKSv5 |
|
||||||
|
| `relay-*` | the same through a TCP relay to a fixed destination: 3proxy `tcppm`, nginx `stream`, haproxy `mode tcp` |
|
||||||
|
|
||||||
nginx is not a forward proxy: it answers absolute URIs by passing them to its
|
nginx is not a forward proxy: it answers absolute URIs by passing them to its
|
||||||
upstream, which is the origin here, and it has no CONNECT or SOCKS, so only
|
upstream, which is the origin here, and it has no CONNECT or SOCKS, so only
|
||||||
these scenarios compare like with like.
|
these scenarios compare like with like. Neither nginx nor haproxy has CONNECT or SOCKS, so they take part in the
|
||||||
|
`relay-*` scenarios but not in the `connect-*` and `socks-*` ones. tinyproxy
|
||||||
|
and squid are HTTP proxies, measured in the HTTP and `connect-*` scenarios;
|
||||||
|
dante is a SOCKS server, measured in the `socks-*` ones.
|
||||||
|
|
||||||
## Running
|
## Running
|
||||||
|
|
||||||
Root, `iproute2`, `iperf3`, `wrk`, `nginx` (with the stream module:
|
Root, `iproute2`, `iperf3`, `wrk`, `proxychains4` (proxychains-ng, for the `connect-*` and `socks-*` scenarios), `nginx` (with the stream module:
|
||||||
`libnginx-mod-stream` on Debian and Ubuntu, `nginx-mod-stream` on
|
`libnginx-mod-stream` on Debian and Ubuntu, `nginx-mod-stream` on
|
||||||
RHEL-like systems) and, to compare with it,
|
RHEL-like systems) and, to compare with it,
|
||||||
`haproxy`.
|
`haproxy`.
|
||||||
@ -100,17 +107,22 @@ sudo bench/bench.py \
|
|||||||
```
|
```
|
||||||
|
|
||||||
`bench/report.py <csv>` turns a run into Markdown tables: throughput, the
|
`bench/report.py <csv>` turns a run into Markdown tables: throughput, the
|
||||||
proxy's CPU per gigabyte or per request, and its peak memory.
|
proxy's CPU per gigabyte or per request, and its peak memory. With
|
||||||
|
`--machine NAME=a.csv,b.csv` once per machine it makes a single throughput
|
||||||
|
table of all of them, each cell their medians and their average.
|
||||||
|
|
||||||
After the binary, a 3proxy entry can carry options for both its services:
|
After the binary, a 3proxy entry can carry options for both its services:
|
||||||
`-s0` keeps 0.9.0 to 0.9.8, which use splice() by default, from using it, and
|
`-s1`, `-s2` and `-s3` splice downloads, uploads or both (`-s0` keeps 0.9.0 to
|
||||||
|
0.9.8, which use splice() both ways by default, from using it), and
|
||||||
`-ocTCP_NODELAY -osTCP_NODELAY` turns Nagle's algorithm off on the client and
|
`-ocTCP_NODELAY -osTCP_NODELAY` turns Nagle's algorithm off on the client and
|
||||||
server sockets.
|
server sockets.
|
||||||
|
|
||||||
haproxy can be measured with splice() too: `haproxy::splice-auto` lets its
|
haproxy can be measured with splice() too: `haproxy::splice-auto` lets its
|
||||||
heuristic splice a direction once reads fill the buffer three times in a row,
|
heuristic splice a direction once reads fill the buffer three times in a row;
|
||||||
`haproxy::splice` splices both directions always (`option splice-request` and
|
`haproxy::splice-response`, `haproxy::splice-request` and `haproxy::splice`
|
||||||
`option splice-response`). nginx has no splice() support, so it has no such
|
always splice the server's data, the client's, or both (`option
|
||||||
|
splice-response`, `option splice-request`), as 3proxy's `-s1`, `-s2` and `-s3`
|
||||||
|
do. nginx has no splice() support, so it has no such
|
||||||
variant.
|
variant.
|
||||||
|
|
||||||
`--scenario` picks scenarios, `--reps` and `--duration` set the repetitions
|
`--scenario` picks scenarios, `--reps` and `--duration` set the repetitions
|
||||||
|
|||||||
157
bench/RESULTS.md
157
bench/RESULTS.md
@ -1,7 +1,8 @@
|
|||||||
# Benchmark results
|
# Benchmark results
|
||||||
|
|
||||||
3proxy 0.9.4, 1.0.1 and devel against nginx and haproxy, measured on two
|
3proxy 0.9.4, 1.0.1 and devel against nginx and haproxy, measured on two
|
||||||
machines, 11 October 2026. How the benchmark works is in
|
machines, 11 October 2026; then devel's splice() by direction and with grace
|
||||||
|
delay. How the benchmark works is in
|
||||||
[README.md](README.md); the measurements are in [data/](data/), and
|
[README.md](README.md); the measurements are in [data/](data/), and
|
||||||
`bench/report.py` turns them into the tables below.
|
`bench/report.py` turns them into the tables below.
|
||||||
|
|
||||||
@ -82,7 +83,7 @@ machines, 11 October 2026. How the benchmark works is in
|
|||||||
| nginx | `proxy_pass` to an upstream with `keepalive 1024`, `stream` for TCP, `reuseport` |
|
| nginx | `proxy_pass` to an upstream with `keepalive 1024`, `stream` for TCP, `reuseport` |
|
||||||
| haproxy | `mode http` with `http-reuse always`, `mode tcp` for TCP |
|
| haproxy | `mode http` with `http-reuse always`, `mode tcp` for TCP |
|
||||||
| 0.9.4 splice | 0.9.4, which splices by default, `-ocTCP_NODELAY -osTCP_NODELAY` |
|
| 0.9.4 splice | 0.9.4, which splices by default, `-ocTCP_NODELAY -osTCP_NODELAY` |
|
||||||
| devel splice | devel with `-s` |
|
| devel splice | devel with `-s`, which in this build spliced both directions always (`-s3` since the automatic mode came) |
|
||||||
| haproxy splice-auto | `option splice-auto`: splices a direction once reads fill the buffer three times in a row |
|
| haproxy splice-auto | `option splice-auto`: splices a direction once reads fill the buffer three times in a row |
|
||||||
| haproxy splice | `option splice-request` and `option splice-response`: splices always |
|
| haproxy splice | `option splice-request` and `option splice-response`: splices always |
|
||||||
|
|
||||||
@ -100,101 +101,103 @@ gcc 14 also needs `-fpermissive`). Logging is off everywhere.
|
|||||||
| http-ka-50k-2000 | 2000 kept-alive connections, 50 KB answers |
|
| http-ka-50k-2000 | 2000 kept-alive connections, 50 KB answers |
|
||||||
| http-close-1k | 64 connections, a new one for every request |
|
| http-close-1k | 64 connections, a new one for every request |
|
||||||
|
|
||||||
## How to read the tables
|
## How to read the table
|
||||||
|
|
||||||
|
* Each cell: the median on the M4 / on the Skylake host / their average. TCP
|
||||||
|
streams and 1 MB HTTP answers in Gbit/s, the other HTTP scenarios in
|
||||||
|
thousands of requests per second.
|
||||||
* Columns: the client talking to the origin with no proxy (only the kernel
|
* Columns: the client talking to the origin with no proxy (only the kernel
|
||||||
forwarding, for reference), then the proxies copying through user space,
|
forwarding, for reference), then the proxies copying through user space,
|
||||||
then after the second ‖ the proxies using splice().
|
then after the second ‖ the proxies using splice().
|
||||||
* **Bold**: the best of its group in the row, and any other of the group whose
|
* **Bold**: the best average of its group (copying, splice) in the row, and
|
||||||
three runs overlap the best one's - the measurement cannot tell them apart.
|
any other of the group whose runs cannot be told apart from it: the range of
|
||||||
* ‡: the client or the origin, not the proxy, set the pace in most runs, so the
|
its average (from the average of each machine's slowest run to that of the
|
||||||
proxy can do at least that much. Single streams often end there with
|
fastest) reaches the best one's.
|
||||||
splice(): one iperf3 stream is one thread, and the proxy needs less of a CPU
|
* \*: the best of the row, copying and splice together, by the same rule -
|
||||||
than it.
|
whether copying or splice() wins the scenario.
|
||||||
* CPU is per gigabyte for the bulk scenarios and per request for the small
|
* A few results were limited by the client or the origin rather than by the
|
||||||
ones.
|
proxy, which can then do more than shown: on the M4, devel splice with single
|
||||||
|
and 16 streams (the receiving iperf3 thread at a full core), haproxy with 16
|
||||||
|
streams, and several of the 1 MB HTTP runs. The per-run `bound` column in
|
||||||
|
[data/](data/) has the detail; `bench/report.py` on one machine's files marks
|
||||||
|
them.
|
||||||
|
* CPU time per gigabyte or request is in the data, but adds little: every
|
||||||
|
proxy ran at its CPU limit, so its CPU per unit of work is the inverse of its
|
||||||
|
throughput. Peak memory is in the data as well, summed up above.
|
||||||
* http-ka-50k-2000: every proxy but haproxy leaves some requests waiting longer
|
* http-ka-50k-2000: every proxy but haproxy leaves some requests waiting longer
|
||||||
than wrk's 2 second limit (counted as timeouts in the data, 140-540 a run);
|
than wrk's 2 second limit (counted as timeouts in the data, 140-540 a run);
|
||||||
haproxy serves the 2000 connections more evenly, with none over 2 seconds but
|
haproxy serves the 2000 connections more evenly, with none over 2 seconds but
|
||||||
a median wait 2 to 3 times longer.
|
a median wait 2 to 3 times longer.
|
||||||
|
|
||||||
## M4 (Apple M4 Pro, virtual machine)
|
## Throughput
|
||||||
|
|
||||||
#### Throughput, Gbit/s (thousands of requests per second for HTTP)
|
| scenario (M4 / Intel / average) | no proxy | ‖ | 0.9.4 | 1.0.1 | devel | nginx | haproxy | ‖ | 0.9.4 splice | devel splice | haproxy splice-auto | haproxy splice |
|
||||||
|
|
||||||
| scenario | no proxy | ‖ | 0.9.4 | 1.0.1 | devel | nginx | haproxy | ‖ | 0.9.4 splice | devel splice | haproxy splice-auto | haproxy splice |
|
|
||||||
|---|---:|:-:|---:|---:|---:|---:|---:|:-:|---:|---:|---:|---:|
|
|---|---:|:-:|---:|---:|---:|---:|---:|:-:|---:|---:|---:|---:|
|
||||||
| stream1 | 62.0 | ‖ | 8.3 | **22.1** | **22.0** | 13.5 | 13.6 | ‖ | 25.1 | **45.7 ‡** | 29.5 | **44.7** |
|
| stream1, Gbit/s | 62.0 / 44.4 / 53.2 | ‖ | 8.3 / 5.5 / 6.9 | 22.1 / 19.1 / 20.6 | **22.0 / 19.9 / 21.0** | 13.5 / 9.8 / 11.6 | 13.6 / 9.7 / 11.7 | ‖ | 25.1 / 29.2 / 27.1 | **45.7 / 31.4 / 38.6** * | 29.5 / 30.6 / 30.1 | **44.7 / 32.3 / 38.5** * |
|
||||||
| stream16 | 141.2 | ‖ | 8.7 | **20.9** | **20.9** | 13.5 | 9.5 ‡ | ‖ | 24.5 | **37.8 ‡** | 15.9 ‡ | 22.1 ‡ |
|
| stream16, Gbit/s | 141.2 / 150.5 / 145.9 | ‖ | 8.7 / 5.6 / 7.2 | **20.9 / 18.9 / 19.9** | **20.9 / 18.8 / 19.8** | 13.5 / 9.9 / 11.7 | 9.5 / 9.2 / 9.3 | ‖ | 24.5 / 28.3 / 26.4 | **37.8 / 31.2 / 34.5** * | 15.9 / 30.3 / 23.1 | 22.1 / 31.5 / 26.8 |
|
||||||
| stream1-down | 61.8 | ‖ | 8.8 | **22.4** | **22.1** | 13.6 | 13.6 | ‖ | **47.9 ‡** | **47.4 ‡** | 30.4 | **47.6 ‡** |
|
| stream1-down, Gbit/s | 61.8 / 43.1 / 52.5 | ‖ | 8.8 / 5.6 / 7.2 | **22.4 / 18.8 / 20.6** | **22.1 / 19.4 / 20.8** | 13.6 / 9.7 / 11.7 | 13.6 / 9.3 / 11.5 | ‖ | **47.9 / 34.4 / 41.1** * | 47.4 / 32.0 / 39.7 | 30.4 / 31.0 / 30.7 | **47.6 / 33.7 / 40.6** * |
|
||||||
| http-ka-1k | 1.24 (120.3k/s) | ‖ | 0.14 (14.1k/s) | 0.06 (6.0k/s) | 0.16 (15.8k/s) | 0.38 (37.0k/s) | **0.45 (44.3k/s)** | ‖ | 0.14 (13.4k/s) | 0.15 (14.9k/s) | **0.45 (44.1k/s)** | **0.45 (44.1k/s)** |
|
| http-ka-1k, k req/s | 120.3 / 127.1 / 123.7 | ‖ | 14.1 / 19.2 / 16.7 | 6.0 / 6.1 / 6.1 | 15.8 / 18.1 / 17.0 | 37.0 / 36.5 / 36.8 | **44.3 / 37.3 / 40.8** * | ‖ | 13.4 / 14.6 / 14.0 | 14.9 / 13.8 / 14.4 | **44.1 / 37.2 / 40.7** * | **44.1 / 38.0 / 41.1** * |
|
||||||
| http-ka-1m | 71.55 (8.5k/s) | ‖ | 8.33 (1.0k/s) | 12.46 (1.5k/s) | **21.90 (2.6k/s) ‡** | 12.63 (1.5k/s) | 6.02 (0.7k/s) ‡ | ‖ | 32.99 (3.9k/s) ‡ | **35.30 (4.2k/s) ‡** | 5.91 (0.7k/s) ‡ | 28.00 (3.3k/s) ‡ |
|
| http-ka-1m, Gbit/s | 71.6 / 67.5 / 69.5 | ‖ | 8.3 / 5.8 / 7.1 | 12.5 / 12.4 / 12.4 | **21.9 / 18.3 / 20.1** | 12.6 / 5.8 / 9.2 | 6.0 / 7.6 / 6.8 | ‖ | **33.0 / 26.6 / 29.8** * | **35.3 / 23.9 / 29.6** * | 5.9 / 24.2 / 15.1 | 28.0 / 26.7 / 27.4 |
|
||||||
| http-ka-50k-2000 | 34.79 (84.5k/s) | ‖ | 3.12 (7.6k/s) | 3.69 (9.0k/s) | 4.27 (10.4k/s) | **4.55 (11.0k/s)** | 4.01 (9.6k/s) | ‖ | 3.73 (9.1k/s) | 4.07 (9.9k/s) | 4.00 (9.6k/s) | **4.92 (11.9k/s)** |
|
| http-ka-50k-2000, k req/s | 84.5 / 85.7 / 85.1 | ‖ | 7.6 / 7.0 / 7.3 | 9.0 / 10.3 / 9.6 | **10.4 / 10.5 / 10.5** * | 11.0 / 9.2 / 10.1 | 9.6 / 7.3 / 8.4 | ‖ | 9.1 / 9.4 / 9.3 | 9.9 / 9.0 / 9.4 | 9.6 / 7.7 / 8.6 | **11.9 / 9.0 / 10.4** * |
|
||||||
| http-close-1k | 0.50 (48.7k/s) | ‖ | 0.05 (5.0k/s) | 0.05 (4.4k/s) | 0.05 (5.2k/s) | 0.14 (13.3k/s) | **0.17 (16.6k/s)** | ‖ | 0.05 (4.8k/s) | 0.05 (5.0k/s) | **0.17 (16.7k/s)** | **0.17 (16.8k/s)** |
|
| http-close-1k, k req/s | 48.7 / 52.1 / 50.4 | ‖ | 5.0 / 4.8 / 4.9 | 4.4 / 4.0 / 4.2 | 5.2 / 4.8 / 5.0 | 13.3 / 12.9 / 13.1 | **16.6 / 15.1 / 15.9** * | ‖ | 4.8 / 4.4 / 4.6 | 5.0 / 4.4 / 4.7 | **16.7 / 15.1 / 15.9** * | **16.8 / 15.5 / 16.1** * |
|
||||||
|
|
||||||
#### Proxy CPU time per gigabyte or per request
|
|
||||||
|
|
||||||
| scenario | no proxy | ‖ | 0.9.4 | 1.0.1 | devel | nginx | haproxy | ‖ | 0.9.4 splice | devel splice | haproxy splice-auto | haproxy splice |
|
|
||||||
|---|---:|:-:|---:|---:|---:|---:|---:|:-:|---:|---:|---:|---:|
|
|
||||||
| stream1 | – | ‖ | 0.96 s/GB | **0.36 s/GB** | **0.36 s/GB** | 0.59 s/GB | 0.59 s/GB | ‖ | 0.32 s/GB | **0.17 s/GB** | 0.27 s/GB | **0.18 s/GB** |
|
|
||||||
| stream16 | – | ‖ | 0.92 s/GB | **0.38 s/GB** | **0.38 s/GB** | 0.59 s/GB | 0.84 s/GB | ‖ | 0.33 s/GB | **0.21 s/GB** | 0.51 s/GB | 0.36 s/GB |
|
|
||||||
| stream1-down | – | ‖ | 0.91 s/GB | **0.36 s/GB** | **0.36 s/GB** | 0.59 s/GB | 0.59 s/GB | ‖ | **0.17 s/GB** | **0.17 s/GB** | 0.26 s/GB | **0.17 s/GB** |
|
|
||||||
| http-ka-1k | – | ‖ | 71 µs/req | 105 µs/req | 63 µs/req | 27 µs/req | **23 µs/req** | ‖ | 74 µs/req | 67 µs/req | **23 µs/req** | **23 µs/req** |
|
|
||||||
| http-ka-1m | – | ‖ | 0.96 s/GB | 0.44 s/GB | **0.37 s/GB** | 0.64 s/GB | 1.34 s/GB | ‖ | 0.24 s/GB | **0.23 s/GB** | 1.37 s/GB | 0.29 s/GB |
|
|
||||||
| http-ka-50k-2000 | – | ‖ | 2.67 s/GB | 2.27 s/GB | 1.95 s/GB | **1.79 s/GB** | 2.01 s/GB | ‖ | 2.23 s/GB | 2.04 s/GB | 2.02 s/GB | **1.65 s/GB** |
|
|
||||||
| http-close-1k | – | ‖ | 201 µs/req | 227 µs/req | 194 µs/req | 75 µs/req | **60 µs/req** | ‖ | 208 µs/req | 200 µs/req | **60 µs/req** | **60 µs/req** |
|
|
||||||
|
|
||||||
#### Proxy peak memory, MB
|
|
||||||
|
|
||||||
| scenario | no proxy | ‖ | 0.9.4 | 1.0.1 | devel | nginx | haproxy | ‖ | 0.9.4 splice | devel splice | haproxy splice-auto | haproxy splice |
|
|
||||||
|---|---:|:-:|---:|---:|---:|---:|---:|:-:|---:|---:|---:|---:|
|
|
||||||
| stream1 | – | ‖ | **2** | 10 | 8 | 32 | 32 | ‖ | **5** | 11 | 44 | 45 |
|
|
||||||
| stream16 | – | ‖ | **31** | 75 | 63 | 75 | 48 | ‖ | **61** | 85 | **60** | **56** |
|
|
||||||
| stream1-down | – | ‖ | **2** | 6 | 10 | 34 | 31 | ‖ | **11** | 11 | 40 | 45 |
|
|
||||||
| http-ka-1k | – | ‖ | **5** | 9 | 9 | 30 | 30 | ‖ | **5** | 9 | 36 | 36 |
|
|
||||||
| http-ka-1m | – | ‖ | **11** | **10** | 16 | 45 | 39 | ‖ | **15** | **17** | 44 | 52 |
|
|
||||||
| http-ka-50k-2000 | – | ‖ | 126 | 199 | 194 | **90** | 176 | ‖ | **97** | 187 | 182 | 136 |
|
|
||||||
| http-close-1k | – | ‖ | **10** | 31 | 14 | 30 | 30 | ‖ | **10** | 12 | 36 | 36 |
|
|
||||||
|
|
||||||
|
|
||||||
## Skylake (Intel Xeon, OpenStack virtual machine)
|
## Splice by direction
|
||||||
|
|
||||||
#### Throughput, Gbit/s (thousands of requests per second for HTTP)
|
devel splices what the server sends with `-s1` (downloads), what the client
|
||||||
|
sends with `-s2` (uploads), both with `-s3`; haproxy's matching settings are
|
||||||
|
`option splice-response`, `option splice-request` and both. The 2000 client
|
||||||
|
scenario here sends a 2 KB POST body with each request and gets 50 KB back
|
||||||
|
(`http-ka-2k-50k-2000`). Same setup and markings as above; measured in a
|
||||||
|
session of their own ([data/](data/) `*-splice-direction.csv`).
|
||||||
|
|
||||||
| scenario | no proxy | ‖ | 0.9.4 | 1.0.1 | devel | nginx | haproxy | ‖ | 0.9.4 splice | devel splice | haproxy splice-auto | haproxy splice |
|
| scenario (M4 / Intel / average) | no proxy | ‖ | devel -s0 | haproxy | ‖ | devel -s1 | devel -s3 | haproxy splice-response | haproxy splice |
|
||||||
|---|---:|:-:|---:|---:|---:|---:|---:|:-:|---:|---:|---:|---:|
|
|---|---:|:-:|---:|---:|:-:|---:|---:|---:|---:|
|
||||||
| stream1 | 44.4 | ‖ | 5.5 | 19.1 | **19.9** | 9.8 | 9.7 | ‖ | **29.2** | **31.4** | **30.6** | **32.3** |
|
| stream1, Gbit/s | 61.6 / 45.5 / 53.6 | ‖ | **22.4 / 19.0 / 20.7** | 13.1 / 9.5 / 11.3 | ‖ | 22.4 / 19.5 / 21.0 | **44.1 / 31.9 / 38.0** * | 13.6 / 9.7 / 11.7 | **46.3 / 30.7 / 38.5** * |
|
||||||
| stream16 | 150.5 | ‖ | 5.6 | **18.9** | **18.8** | 9.9 | 9.2 | ‖ | 28.3 | **31.2** | **30.3 ‡** | **31.5 ‡** |
|
| stream16, Gbit/s | 140.6 / 147.1 / 143.8 | ‖ | **21.1 / 19.2 / 20.2** | 9.0 / 8.9 / 8.9 | ‖ | 20.9 / 18.7 / 19.8 | **38.2 / 32.3 / 35.2** * | 9.2 / 9.1 / 9.2 | 23.2 / 33.3 / 28.3 |
|
||||||
| stream1-down | 43.1 | ‖ | 5.6 | **18.8** | **19.4** | 9.7 | 9.3 | ‖ | **34.4** | 32.0 | 31.0 | **33.7** |
|
| stream1-down, Gbit/s | 63.7 / 47.0 / 55.3 | ‖ | **22.3 / 19.5 / 20.9** | 13.8 / 9.5 / 11.7 | ‖ | **47.9 / 33.0 / 40.5** * | **46.3 / 30.7 / 38.5** * | **46.9 / 32.3 / 39.6** * | **47.4 / 32.6 / 40.0** * |
|
||||||
| http-ka-1k | 1.30 (127.1k/s) | ‖ | 0.19 (19.2k/s) | 0.06 (6.1k/s) | 0.18 (18.1k/s) | **0.37 (36.5k/s)** | **0.37 (37.3k/s)** | ‖ | 0.15 (14.6k/s) | 0.14 (13.8k/s) | **0.37 (37.2k/s)** | **0.38 (38.0k/s)** |
|
| http-ka-1k, k req/s | 120.0 / 127.6 / 123.8 | ‖ | 15.9 / 19.5 / 17.7 | **44.2 / 37.1 / 40.7** * | ‖ | 15.3 / 17.0 / 16.1 | 15.0 / 14.9 / 14.9 | **44.0 / 37.0 / 40.5** * | **44.1 / 35.0 / 39.5** * |
|
||||||
| http-ka-1m | 67.52 (8.0k/s) | ‖ | 5.84 (0.7k/s) | 12.37 (1.5k/s) | **18.30 (2.2k/s) ‡** | 5.77 (0.7k/s) | 7.56 (0.9k/s) | ‖ | **26.63 (3.2k/s) ‡** | 23.88 (2.8k/s) ‡ | 24.22 (2.9k/s) ‡ | **26.71 (3.2k/s) ‡** |
|
| http-ka-1m, Gbit/s | 71.0 / 67.2 / 69.1 | ‖ | **22.3 / 17.5 / 19.9** | 5.8 / 7.7 / 6.8 | ‖ | **35.6 / 24.7 / 30.2** * | **34.6 / 24.5 / 29.5** * | 26.4 / 27.7 / 27.1 | 26.5 / 25.9 / 26.2 |
|
||||||
| http-ka-50k-2000 | 35.30 (85.7k/s) | ‖ | 2.89 (7.0k/s) | 4.24 (10.3k/s) | **4.33 (10.5k/s)** | 3.77 (9.2k/s) | 3.01 (7.3k/s) | ‖ | **3.89 (9.4k/s)** | 3.71 (9.0k/s) | 3.19 (7.7k/s) | **3.72 (9.0k/s)** |
|
| http-ka-2k-50k-2000, k req/s | 73.7 / 64.7 / 69.2 | ‖ | **9.5 / 9.7 / 9.6** | 8.8 / 7.2 / 8.0 | ‖ | 9.0 / 8.4 / 8.7 | 8.7 / 7.6 / 8.1 | **11.2 / 8.7 / 10.0** * | **11.2 / 9.0 / 10.1** * |
|
||||||
| http-close-1k | 0.53 (52.1k/s) | ‖ | 0.05 (4.8k/s) | 0.04 (4.0k/s) | 0.05 (4.8k/s) | 0.13 (12.9k/s) | **0.15 (15.1k/s)** | ‖ | 0.04 (4.4k/s) | 0.04 (4.4k/s) | **0.15 (15.1k/s)** | **0.16 (15.5k/s)** |
|
| http-close-1k, k req/s | 49.0 / 43.4 / 46.2 | ‖ | 5.1 / 4.9 / 5.0 | **16.5 / 15.9 / 16.2** * | ‖ | 5.0 / 4.7 / 4.9 | 5.0 / 4.2 / 4.6 | **16.7 / 15.0 / 15.8** * | **16.8 / 15.5 / 16.2** * |
|
||||||
|
|
||||||
#### Proxy CPU time per gigabyte or per request
|
|
||||||
|
|
||||||
| scenario | no proxy | ‖ | 0.9.4 | 1.0.1 | devel | nginx | haproxy | ‖ | 0.9.4 splice | devel splice | haproxy splice-auto | haproxy splice |
|
* Each option splices the direction it names: with `-s1` an upload stream
|
||||||
|---|---:|:-:|---:|---:|---:|---:|---:|:-:|---:|---:|---:|---:|
|
goes at the copying speed and a download stream at the splicing one, as with
|
||||||
| stream1 | – | ‖ | 1.45 s/GB | 0.42 s/GB | **0.40 s/GB** | 0.82 s/GB | 0.82 s/GB | ‖ | **0.27 s/GB** | **0.25 s/GB** | **0.26 s/GB** | **0.25 s/GB** |
|
haproxy's `splice-response`.
|
||||||
| stream16 | – | ‖ | 1.43 s/GB | **0.42 s/GB** | **0.43 s/GB** | 0.81 s/GB | 0.87 s/GB | ‖ | 0.28 s/GB | **0.26 s/GB** | **0.26 s/GB** | **0.25 s/GB** |
|
* For bulk downloads `-s1` gets all of splice()'s gain; `-s3` is needed only
|
||||||
| stream1-down | – | ‖ | 1.43 s/GB | **0.43 s/GB** | **0.41 s/GB** | 0.82 s/GB | 0.86 s/GB | ‖ | **0.23 s/GB** | 0.25 s/GB | 0.26 s/GB | **0.24 s/GB** |
|
for bulk uploads (stream1, stream16).
|
||||||
| http-ka-1k | – | ‖ | 52 µs/req | 72 µs/req | 55 µs/req | **27 µs/req** | **27 µs/req** | ‖ | 68 µs/req | 72 µs/req | **27 µs/req** | **26 µs/req** |
|
* Small requests and 50 KB answers gain nothing from splicing in 3proxy, in
|
||||||
| http-ka-1m | – | ‖ | 1.37 s/GB | 0.53 s/GB | **0.44 s/GB** | 1.39 s/GB | 1.07 s/GB | ‖ | **0.30 s/GB** | 0.34 s/GB | 0.33 s/GB | **0.30 s/GB** |
|
either direction: devel `-s0` stays ahead of `-s1` and `-s3`. haproxy gains
|
||||||
| http-ka-50k-2000 | – | ‖ | 2.88 s/GB | 1.98 s/GB | **1.93 s/GB** | 2.15 s/GB | 2.70 s/GB | ‖ | **2.15 s/GB** | 2.26 s/GB | 2.55 s/GB | **2.18 s/GB** |
|
25% with 2000 clients from splicing the answers; there it is ahead of devel by
|
||||||
| http-close-1k | – | ‖ | 211 µs/req | 250 µs/req | 210 µs/req | 77 µs/req | **66 µs/req** | ‖ | 229 µs/req | 230 µs/req | **66 µs/req** | **65 µs/req** |
|
4-5%.
|
||||||
|
|
||||||
#### Proxy peak memory, MB
|
## Grace delay with splice
|
||||||
|
|
||||||
| scenario | no proxy | ‖ | 0.9.4 | 1.0.1 | devel | nginx | haproxy | ‖ | 0.9.4 splice | devel splice | haproxy splice-auto | haproxy splice |
|
`-s1` without grace delay, with the setting suggested in the documentation
|
||||||
|---|---:|:-:|---:|---:|---:|---:|---:|:-:|---:|---:|---:|---:|
|
(`-g8000,3,10`: wait 10 ms before reading once 3 reads in a row averaged 8 KB or
|
||||||
| stream1 | – | ‖ | **2** | 5 | 8 | 34 | 30 | ‖ | 10 | **8** | 44 | 42 |
|
less), and with one meant to wait on answers only (`-g65536,2,10`: any 2 reads
|
||||||
| stream16 | – | ‖ | 93 | 96 | 91 | 107 | **59** | ‖ | 79 | 88 | 107 | **62** |
|
in a row; an HTTP request body is read at once, an answer of 50 KB or more is
|
||||||
| stream1-down | – | ‖ | **3** | 8 | 8 | 32 | 31 | ‖ | **9** | 11 | 43 | 46 |
|
not). Measured in a session of their own ([data/](data/) `*-grace.csv`).
|
||||||
| http-ka-1k | – | ‖ | **5** | 10 | 10 | 32 | 32 | ‖ | **5** | 10 | 37 | 40 |
|
|
||||||
| http-ka-1m | – | ‖ | **14** | **14** | 17 | 45 | 45 | ‖ | **15** | **18** | 54 | 53 |
|
|
||||||
| http-ka-50k-2000 | – | ‖ | 185 | 137 | **153** | **113** | 178 | ‖ | **91** | 160 | 185 | 195 |
|
|
||||||
| http-close-1k | – | ‖ | **16** | 23 | 57 | 31 | 29 | ‖ | **22** | 42 | 40 | 38 |
|
|
||||||
|
|
||||||
|
| scenario (M4 / Intel / average) | -s1, no grace delay | -s1 -g8000,3,10 | -s1 -g65536,2,10 |
|
||||||
|
|---|---:|---:|---:|
|
||||||
|
| stream1, Gbit/s | **22.0 / 20.0 / 21.0** * | **22.1 / 19.7 / 20.9** * | **22.4 / 20.1 / 21.3** * |
|
||||||
|
| stream16, Gbit/s | **20.8 / 19.5 / 20.2** * | **20.9 / 18.4 / 19.7** * | **20.7 / 19.1 / 19.9** * |
|
||||||
|
| stream1-down, Gbit/s | **48.1 / 32.7 / 40.4** * | 28.6 / 33.0 / 30.8 | 18.3 / 32.5 / 25.4 |
|
||||||
|
| http-ka-1k, k req/s | 15.4 / 15.4 / 15.4 | **15.5 / 16.4 / 16.0** * | **15.5 / 16.6 / 16.0** * |
|
||||||
|
| http-ka-1m, Gbit/s | **35.6 / 25.5 / 30.5** * | **35.5 / 25.2 / 30.3** * | **36.1 / 25.4 / 30.8** * |
|
||||||
|
| http-ka-2k-50k-2000, k req/s | **9.0 / 8.3 / 8.6** * | **9.0 / 8.3 / 8.7** * | **9.1 / 8.5 / 8.8** * |
|
||||||
|
| http-close-1k, k req/s | **5.1 / 4.5 / 4.8** * | **5.1 / 4.6 / 4.8** * | **5.1 / 4.7 / 4.9** * |
|
||||||
|
|
||||||
|
|
||||||
|
* Grace delay makes little difference here: 4% more 1 KB requests over
|
||||||
|
kept-alive connections, nothing elsewhere - except on the M4 with a single
|
||||||
|
download stream, where it costs 40% (`-g8000,3,10`) to 60% (`-g65536,2,10`)
|
||||||
|
of the throughput. These links are fast and local: reads are rarely small,
|
||||||
|
so the delay seldom applies, and when it does it mostly adds waiting. It is
|
||||||
|
meant for slow links carrying small packets, which this benchmark does not
|
||||||
|
have.
|
||||||
|
|
||||||
## Caveats
|
## Caveats
|
||||||
|
|
||||||
|
|||||||
195
bench/bench.py
195
bench/bench.py
@ -35,6 +35,10 @@ CG = "/sys/fs/cgroup/3proxy-bench"
|
|||||||
# client 10.0.1.2 -- 10.0.1.1 proxy 10.0.2.1 -- 10.0.2.2 origin
|
# client 10.0.1.2 -- 10.0.1.1 proxy 10.0.2.1 -- 10.0.2.2 origin
|
||||||
CLI_ADDR, PRX_IN, PRX_OUT, SRV_ADDR = "10.0.1.2", "10.0.1.1", "10.0.2.1", "10.0.2.2"
|
CLI_ADDR, PRX_IN, PRX_OUT, SRV_ADDR = "10.0.1.2", "10.0.1.1", "10.0.2.1", "10.0.2.2"
|
||||||
HTTP_PORT, TCP_PORT, ORIGIN_HTTP, ORIGIN_TCP = 3128, 5201, 8080, 5201
|
HTTP_PORT, TCP_PORT, ORIGIN_HTTP, ORIGIN_TCP = 3128, 5201, 8080, 5201
|
||||||
|
# a TCP relay to the origin's web server, standing in for CONNECT where the
|
||||||
|
# proxy has none (nginx, haproxy)
|
||||||
|
RELAY_HTTP = 5280
|
||||||
|
SOCKS_PORT = 1080
|
||||||
|
|
||||||
FILES = {"1k": 1024, "50k": 50 * 1024, "100k": 100 * 1024, "1m": 1024 * 1024}
|
FILES = {"1k": 1024, "50k": 50 * 1024, "100k": 100 * 1024, "1m": 1024 * 1024}
|
||||||
|
|
||||||
@ -46,21 +50,46 @@ SCENARIOS = {
|
|||||||
"http-ka-1k": ("http", {"file": "1k", "conns": 64}),
|
"http-ka-1k": ("http", {"file": "1k", "conns": 64}),
|
||||||
"http-ka-1m": ("http", {"file": "1m", "conns": 16}),
|
"http-ka-1m": ("http", {"file": "1m", "conns": 16}),
|
||||||
"http-ka-50k-2000": ("http", {"file": "50k", "conns": 2000}),
|
"http-ka-50k-2000": ("http", {"file": "50k", "conns": 2000}),
|
||||||
|
"http-ka-2k-50k-2000": ("http", {"file": "50k", "conns": 2000, "body": 2048}),
|
||||||
"http-close-1k": ("http", {"file": "1k", "conns": 64, "close": True}),
|
"http-close-1k": ("http", {"file": "1k", "conns": 64, "close": True}),
|
||||||
|
# Through tunnels: the load generators run under proxychains, so each of
|
||||||
|
# their connections asks the proxy for one to the origin, with CONNECT
|
||||||
|
# (HTTP proxies) or SOCKSv5. And the same load through a TCP relay to a
|
||||||
|
# fixed destination (3proxy tcppm, nginx stream, haproxy mode tcp).
|
||||||
|
"connect-stream1-down": ("stream", {"streams": 1, "reverse": True, "via": "connect"}),
|
||||||
|
"connect-stream16": ("stream", {"streams": 16, "via": "connect"}),
|
||||||
|
"connect-ka-1k": ("http", {"file": "1k", "conns": 64, "via": "connect"}),
|
||||||
|
"connect-ka-50k-2000": ("http", {"file": "50k", "conns": 2000, "via": "connect"}),
|
||||||
|
"connect-close-1k": ("http", {"file": "1k", "conns": 64, "close": True, "via": "connect"}),
|
||||||
|
"socks-stream1-down": ("stream", {"streams": 1, "reverse": True, "via": "socks"}),
|
||||||
|
"socks-stream16": ("stream", {"streams": 16, "via": "socks"}),
|
||||||
|
"socks-ka-1k": ("http", {"file": "1k", "conns": 64, "via": "socks"}),
|
||||||
|
"socks-ka-50k-2000": ("http", {"file": "50k", "conns": 2000, "via": "socks"}),
|
||||||
|
"socks-close-1k": ("http", {"file": "1k", "conns": 64, "close": True, "via": "socks"}),
|
||||||
|
"relay-stream1-down": ("stream", {"streams": 1, "reverse": True, "via": "relay"}),
|
||||||
|
"relay-stream16": ("stream", {"streams": 16, "via": "relay"}),
|
||||||
|
"relay-ka-1k": ("http", {"file": "1k", "conns": 64, "via": "relay"}),
|
||||||
|
"relay-ka-50k-2000": ("http", {"file": "50k", "conns": 2000, "via": "relay"}),
|
||||||
|
"relay-close-1k": ("http", {"file": "1k", "conns": 64, "close": True, "via": "relay"}),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TOOLS = {}
|
TOOLS = {}
|
||||||
|
|
||||||
|
|
||||||
def tool(name):
|
def tool(*names):
|
||||||
"""A tool by its absolute path: sudo's secure_path may leave out where
|
"""A tool by its absolute path: sudo's secure_path may leave out where
|
||||||
it was installed, /usr/local/bin for a wrk built by hand."""
|
it was installed, /usr/local/bin for a wrk built by hand. Several names
|
||||||
|
are alternatives."""
|
||||||
|
name = names[0]
|
||||||
if name not in TOOLS:
|
if name not in TOOLS:
|
||||||
path = shutil.which(name) or shutil.which(
|
for n in names:
|
||||||
name, path="/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin")
|
path = shutil.which(n) or shutil.which(
|
||||||
|
n, path="/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin")
|
||||||
|
if path:
|
||||||
|
break
|
||||||
if not path:
|
if not path:
|
||||||
sys.exit(f"{name} not found")
|
sys.exit(f"{' or '.join(names)} not found")
|
||||||
TOOLS[name] = path
|
TOOLS[name] = path
|
||||||
return TOOLS[name]
|
return TOOLS[name]
|
||||||
|
|
||||||
@ -342,6 +371,8 @@ http {{
|
|||||||
listen {SRV_ADDR}:{ORIGIN_HTTP} backlog=65535 reuseport;
|
listen {SRV_ADDR}:{ORIGIN_HTTP} backlog=65535 reuseport;
|
||||||
root {www};
|
root {www};
|
||||||
default_type application/octet-stream;
|
default_type application/octet-stream;
|
||||||
|
# the files answer a POST too, its body read and thrown away
|
||||||
|
error_page 405 =200 $uri;
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
""")
|
""")
|
||||||
@ -368,8 +399,57 @@ def proxy_conf(kind, work, ncpu, label, opts=""):
|
|||||||
auth none
|
auth none
|
||||||
proxy {opts} -i{PRX_IN} -e{PRX_OUT} -p{HTTP_PORT}
|
proxy {opts} -i{PRX_IN} -e{PRX_OUT} -p{HTTP_PORT}
|
||||||
tcppm {opts} -i{PRX_IN} -e{PRX_OUT} {TCP_PORT} {SRV_ADDR} {ORIGIN_TCP}
|
tcppm {opts} -i{PRX_IN} -e{PRX_OUT} {TCP_PORT} {SRV_ADDR} {ORIGIN_TCP}
|
||||||
|
tcppm {opts} -i{PRX_IN} -e{PRX_OUT} {RELAY_HTTP} {SRV_ADDR} {ORIGIN_HTTP}
|
||||||
|
socks {opts} -i{PRX_IN} -e{PRX_OUT} -p{SOCKS_PORT}
|
||||||
""")
|
""")
|
||||||
return [conf]
|
return [conf]
|
||||||
|
if kind == "tinyproxy":
|
||||||
|
conf = os.path.join(work, f"{label}.conf")
|
||||||
|
with open(conf, "w") as f:
|
||||||
|
f.write(f"""Port {HTTP_PORT}
|
||||||
|
Listen {PRX_IN}
|
||||||
|
Bind {PRX_OUT}
|
||||||
|
Timeout 600
|
||||||
|
MaxClients 100000
|
||||||
|
LogLevel Critical
|
||||||
|
LogFile "{work}/{label}.log"
|
||||||
|
PidFile "{work}/{label}.pid"
|
||||||
|
DisableViaHeader Yes
|
||||||
|
""")
|
||||||
|
return ["-d", "-c", conf]
|
||||||
|
if kind == "squid":
|
||||||
|
conf = os.path.join(work, f"{label}.conf")
|
||||||
|
with open(conf, "w") as f:
|
||||||
|
f.write(f"""http_port {PRX_IN}:{HTTP_PORT}
|
||||||
|
tcp_outgoing_address {PRX_OUT}
|
||||||
|
http_access allow all
|
||||||
|
cache deny all
|
||||||
|
cache_mem 8 MB
|
||||||
|
access_log none
|
||||||
|
cache_log {work}/{label}.log
|
||||||
|
pid_filename {work}/{label}.pid
|
||||||
|
coredump_dir {work}
|
||||||
|
cache_effective_user nobody
|
||||||
|
max_filedescriptors 65536
|
||||||
|
shutdown_lifetime 1 seconds
|
||||||
|
via off
|
||||||
|
forwarded_for delete
|
||||||
|
""")
|
||||||
|
return ["-N", "-f", conf]
|
||||||
|
if kind == "dante":
|
||||||
|
conf = os.path.join(work, f"{label}.conf")
|
||||||
|
with open(conf, "w") as f:
|
||||||
|
f.write(f"""logoutput: {work}/{label}.log
|
||||||
|
internal: {PRX_IN} port = {SOCKS_PORT}
|
||||||
|
external: {PRX_OUT}
|
||||||
|
socksmethod: none
|
||||||
|
clientmethod: none
|
||||||
|
user.privileged: root
|
||||||
|
user.unprivileged: nobody
|
||||||
|
client pass {{ from: 0.0.0.0/0 to: 0.0.0.0/0 }}
|
||||||
|
socks pass {{ from: 0.0.0.0/0 to: 0.0.0.0/0 }}
|
||||||
|
""")
|
||||||
|
return ["-f", conf, "-p", f"{work}/{label}.pid", "-N", "1"]
|
||||||
if kind == "nginx":
|
if kind == "nginx":
|
||||||
conf = os.path.join(work, f"{label}.conf")
|
conf = os.path.join(work, f"{label}.conf")
|
||||||
with open(conf, "w") as f:
|
with open(conf, "w") as f:
|
||||||
@ -406,16 +486,25 @@ stream {{
|
|||||||
proxy_pass {SRV_ADDR}:{ORIGIN_TCP};
|
proxy_pass {SRV_ADDR}:{ORIGIN_TCP};
|
||||||
proxy_bind {PRX_OUT};
|
proxy_bind {PRX_OUT};
|
||||||
}}
|
}}
|
||||||
|
server {{
|
||||||
|
listen {PRX_IN}:{RELAY_HTTP} backlog=65535 reuseport;
|
||||||
|
proxy_pass {SRV_ADDR}:{ORIGIN_HTTP};
|
||||||
|
proxy_bind {PRX_OUT};
|
||||||
|
}}
|
||||||
}}
|
}}
|
||||||
""")
|
""")
|
||||||
return ["-c", conf, "-p", work]
|
return ["-c", conf, "-p", work]
|
||||||
if kind == "haproxy":
|
if kind == "haproxy":
|
||||||
# splice-auto: haproxy's heuristic, splicing a direction once reads
|
# splice-auto: haproxy's heuristic, splicing a direction once reads
|
||||||
# fill its buffer three times in a row; splice: both directions always
|
# fill its buffer three times in a row; splice-response, splice-request
|
||||||
|
# and splice: the server's data, the client's, or both, always
|
||||||
|
# (3proxy's -s1, -s2 and -s3)
|
||||||
splice = {"": "", "splice-auto": " option splice-auto\n",
|
splice = {"": "", "splice-auto": " option splice-auto\n",
|
||||||
|
"splice-response": " option splice-response\n",
|
||||||
|
"splice-request": " option splice-request\n",
|
||||||
"splice": " option splice-request\n option splice-response\n"}
|
"splice": " option splice-request\n option splice-response\n"}
|
||||||
if opts not in splice:
|
if opts not in splice:
|
||||||
sys.exit("haproxy options: splice-auto or splice")
|
sys.exit("haproxy options: " + ", ".join(k for k in splice if k))
|
||||||
splice = splice[opts]
|
splice = splice[opts]
|
||||||
conf = os.path.join(work, f"{label}.cfg")
|
conf = os.path.join(work, f"{label}.cfg")
|
||||||
with open(conf, "w") as f:
|
with open(conf, "w") as f:
|
||||||
@ -441,6 +530,11 @@ listen tcp
|
|||||||
bind {PRX_IN}:{TCP_PORT}
|
bind {PRX_IN}:{TCP_PORT}
|
||||||
source {PRX_OUT}
|
source {PRX_OUT}
|
||||||
server origin {SRV_ADDR}:{ORIGIN_TCP}
|
server origin {SRV_ADDR}:{ORIGIN_TCP}
|
||||||
|
listen tcphttp
|
||||||
|
mode tcp
|
||||||
|
bind {PRX_IN}:{RELAY_HTTP}
|
||||||
|
source {PRX_OUT}
|
||||||
|
server origin {SRV_ADDR}:{ORIGIN_HTTP}
|
||||||
""")
|
""")
|
||||||
return ["-f", conf]
|
return ["-f", conf]
|
||||||
raise ValueError(kind)
|
raise ValueError(kind)
|
||||||
@ -463,12 +557,35 @@ class Proxy:
|
|||||||
sys.exit("nginx takes no options (it does not use splice() at all)")
|
sys.exit("nginx takes no options (it does not use splice() at all)")
|
||||||
self.binary = path or tool(kind)
|
self.binary = path or tool(kind)
|
||||||
self.label = kind + ("-" + self.opts if self.opts else "")
|
self.label = kind + ("-" + self.opts if self.opts else "")
|
||||||
|
elif kind in ("tinyproxy", "squid", "dante"):
|
||||||
|
# dante's server is sockd, danted on Debian
|
||||||
|
self.binary = path or (tool("sockd", "danted") if kind == "dante" else tool(kind))
|
||||||
|
self.label = kind
|
||||||
elif kind == "none":
|
elif kind == "none":
|
||||||
self.binary = None
|
self.binary = None
|
||||||
self.label = "direct"
|
self.label = "direct"
|
||||||
else:
|
else:
|
||||||
sys.exit("unknown proxy " + spec)
|
sys.exit("unknown proxy " + spec)
|
||||||
|
|
||||||
|
# what each proxy listens on, and which scenarios it can take part in:
|
||||||
|
# tinyproxy and squid are HTTP proxies, dante a SOCKS server only
|
||||||
|
PORTS = {"3proxy": (HTTP_PORT, TCP_PORT, SOCKS_PORT, RELAY_HTTP),
|
||||||
|
"nginx": (HTTP_PORT, TCP_PORT, RELAY_HTTP),
|
||||||
|
"haproxy": (HTTP_PORT, TCP_PORT, RELAY_HTTP),
|
||||||
|
"tinyproxy": (HTTP_PORT,), "squid": (HTTP_PORT,), "dante": (SOCKS_PORT,)}
|
||||||
|
|
||||||
|
def serves(self, scenario):
|
||||||
|
kind, params = SCENARIOS[scenario]
|
||||||
|
via = params.get("via")
|
||||||
|
if self.kind == "dante":
|
||||||
|
return via == "socks"
|
||||||
|
if self.kind in ("tinyproxy", "squid"):
|
||||||
|
return via == "connect" or (kind == "http" and not via)
|
||||||
|
if self.kind in ("nginx", "haproxy"):
|
||||||
|
# no CONNECT, no SOCKS
|
||||||
|
return via in (None, "relay")
|
||||||
|
return True
|
||||||
|
|
||||||
def start(self, args, work):
|
def start(self, args, work):
|
||||||
cg_remove("prx")
|
cg_remove("prx")
|
||||||
cg_make("prx", args.cpus["prx"])
|
cg_make("prx", args.cpus["prx"])
|
||||||
@ -478,7 +595,7 @@ class Proxy:
|
|||||||
self.label, self.opts)
|
self.label, self.opts)
|
||||||
log = open(os.path.join(work, self.label + ".out"), "a")
|
log = open(os.path.join(work, self.label + ".out"), "a")
|
||||||
p = spawn("bprx", "prx", argv, log)
|
p = spawn("bprx", "prx", argv, log)
|
||||||
if not (wait_port("bcli", PRX_IN, HTTP_PORT) and wait_port("bcli", PRX_IN, TCP_PORT)):
|
if not all(wait_port("bcli", PRX_IN, port, 30) for port in self.PORTS[self.kind]):
|
||||||
stop(p)
|
stop(p)
|
||||||
sys.exit(f"{self.label} did not start, see {work}")
|
sys.exit(f"{self.label} did not start, see {work}")
|
||||||
return p
|
return p
|
||||||
@ -487,10 +604,15 @@ class Proxy:
|
|||||||
# --- load --------------------------------------------------------------------
|
# --- load --------------------------------------------------------------------
|
||||||
|
|
||||||
WRK_SCRIPT = """
|
WRK_SCRIPT = """
|
||||||
local path, close = "%s", %s
|
local path, close, size = "%s", %s, %d
|
||||||
local headers = {["Host"] = "%s:%d"}
|
local headers = {["Host"] = "%s:%d"}
|
||||||
if close then headers["Connection"] = "close" end
|
if close then headers["Connection"] = "close" end
|
||||||
local req = wrk.format("GET", path, headers)
|
local req
|
||||||
|
if size > 0 then
|
||||||
|
req = wrk.format("POST", path, headers, string.rep("u", size))
|
||||||
|
else
|
||||||
|
req = wrk.format("GET", path, headers)
|
||||||
|
end
|
||||||
request = function() return req end
|
request = function() return req end
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -504,20 +626,45 @@ def to_ms(text):
|
|||||||
return v * {"us": 1e-3, "ms": 1, "s": 1e3, "m": 6e4}[u]
|
return v * {"us": 1e-3, "ms": 1, "s": 1e3, "m": 6e4}[u]
|
||||||
|
|
||||||
|
|
||||||
|
def tunnel(via, work):
|
||||||
|
"""argv prefix running a load generator so that its connections go
|
||||||
|
through tunnels of the proxy: CONNECT, or SOCKSv5."""
|
||||||
|
conf = os.path.join(work, f"proxychains-{via}.conf")
|
||||||
|
line = f"http {PRX_IN} {HTTP_PORT}" if via == "connect" else f"socks5 {PRX_IN} {SOCKS_PORT}"
|
||||||
|
with open(conf, "w") as f:
|
||||||
|
f.write(f"strict_chain\nquiet_mode\ntcp_read_time_out 15000\n"
|
||||||
|
f"tcp_connect_time_out 8000\n[ProxyList]\n{line}\n")
|
||||||
|
return [tool("proxychains4"), "-q", "-f", conf]
|
||||||
|
|
||||||
|
|
||||||
|
def target(proxy, params, work, direct_port, proxy_port, relay_port):
|
||||||
|
"""Where the load generator connects, and what it runs under: the origin
|
||||||
|
itself with no proxy or through a tunnel, the proxy's relay otherwise."""
|
||||||
|
if proxy.kind == "none":
|
||||||
|
return SRV_ADDR, direct_port, []
|
||||||
|
if params.get("via") == "relay":
|
||||||
|
return PRX_IN, relay_port, []
|
||||||
|
if params.get("via"):
|
||||||
|
return SRV_ADDR, direct_port, tunnel(params["via"], work)
|
||||||
|
return PRX_IN, proxy_port, []
|
||||||
|
|
||||||
|
|
||||||
def run_http(proxy, params, args, work):
|
def run_http(proxy, params, args, work):
|
||||||
direct = proxy.kind == "none"
|
host, port, prefix = target(proxy, params, work, ORIGIN_HTTP, HTTP_PORT, RELAY_HTTP)
|
||||||
host = SRV_ADDR if direct else PRX_IN
|
|
||||||
port = ORIGIN_HTTP if direct else HTTP_PORT
|
|
||||||
path = "/" + params["file"]
|
path = "/" + params["file"]
|
||||||
if not direct:
|
if host == PRX_IN and port == HTTP_PORT:
|
||||||
path = f"http://{SRV_ADDR}:{ORIGIN_HTTP}{path}"
|
path = f"http://{SRV_ADDR}:{ORIGIN_HTTP}{path}"
|
||||||
script = os.path.join(work, "wrk.lua")
|
script = os.path.join(work, "wrk.lua")
|
||||||
with open(script, "w") as f:
|
with open(script, "w") as f:
|
||||||
f.write(WRK_SCRIPT % (path, "true" if params.get("close") else "false",
|
f.write(WRK_SCRIPT % (path, "true" if params.get("close") else "false",
|
||||||
SRV_ADDR, ORIGIN_HTTP))
|
params.get("body", 0), SRV_ADDR, ORIGIN_HTTP))
|
||||||
threads = len(cpulist(args.cpus["cli"]))
|
threads = len(cpulist(args.cpus["cli"]))
|
||||||
|
if prefix:
|
||||||
|
# proxychains asks for each tunnel inside connect(), blocking the
|
||||||
|
# thread: more threads keep the client's CPUs busy meanwhile
|
||||||
|
threads = min(params["conns"], threads * 4)
|
||||||
conns = max(params["conns"], threads)
|
conns = max(params["conns"], threads)
|
||||||
out = run_in("bcli", "cli", [tool("wrk"), "-t", str(threads), "-c", str(conns),
|
out = run_in("bcli", "cli", prefix + [tool("wrk"), "-t", str(threads), "-c", str(conns),
|
||||||
"-d", f"{args.duration}s", "--latency", "-s", script,
|
"-d", f"{args.duration}s", "--latency", "-s", script,
|
||||||
f"http://{host}:{port}/"], args.duration + 30)
|
f"http://{host}:{port}/"], args.duration + 30)
|
||||||
res = {"raw": out}
|
res = {"raw": out}
|
||||||
@ -549,10 +696,8 @@ def run_http(proxy, params, args, work):
|
|||||||
|
|
||||||
|
|
||||||
def run_stream(proxy, params, args, work):
|
def run_stream(proxy, params, args, work):
|
||||||
direct = proxy.kind == "none"
|
host, port, prefix = target(proxy, params, work, ORIGIN_TCP, TCP_PORT, TCP_PORT)
|
||||||
host = SRV_ADDR if direct else PRX_IN
|
argv = prefix + [tool("iperf3"), "-c", host, "-p", str(port), "-t", str(args.duration),
|
||||||
port = ORIGIN_TCP if direct else TCP_PORT
|
|
||||||
argv = [tool("iperf3"), "-c", host, "-p", str(port), "-t", str(args.duration),
|
|
||||||
"-P", str(params["streams"]), "-J"]
|
"-P", str(params["streams"]), "-J"]
|
||||||
if params.get("reverse"):
|
if params.get("reverse"):
|
||||||
argv.append("-R")
|
argv.append("-R")
|
||||||
@ -647,7 +792,8 @@ def main():
|
|||||||
ap = argparse.ArgumentParser(description=__doc__.split("\n\n")[0])
|
ap = argparse.ArgumentParser(description=__doc__.split("\n\n")[0])
|
||||||
ap.add_argument("--proxy", action="append", required=True,
|
ap.add_argument("--proxy", action="append", required=True,
|
||||||
help="3proxy:<binary>[:<service options>], nginx[:<binary>], "
|
help="3proxy:<binary>[:<service options>], nginx[:<binary>], "
|
||||||
"haproxy[:<binary>[:splice-auto|splice]] "
|
"tinyproxy, squid, dante (sockd), "
|
||||||
|
"haproxy[:<binary>[:splice-auto|splice-response|splice-request|splice]] "
|
||||||
"or none (the kernel routing, an upper bound); repeat")
|
"or none (the kernel routing, an upper bound); repeat")
|
||||||
ap.add_argument("--scenario", action="append", choices=sorted(SCENARIOS),
|
ap.add_argument("--scenario", action="append", choices=sorted(SCENARIOS),
|
||||||
help="default: all")
|
help="default: all")
|
||||||
@ -667,11 +813,14 @@ def main():
|
|||||||
# fail now rather than after the first scenarios
|
# fail now rather than after the first scenarios
|
||||||
for name in ("nginx", "iperf3", "wrk"):
|
for name in ("nginx", "iperf3", "wrk"):
|
||||||
tool(name)
|
tool(name)
|
||||||
|
if any(SCENARIOS[s][1].get("via") in ("connect", "socks") for s in scenarios):
|
||||||
|
tool("proxychains4")
|
||||||
|
|
||||||
stamp = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
|
stamp = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
|
||||||
os.makedirs(args.out, exist_ok=True)
|
os.makedirs(args.out, exist_ok=True)
|
||||||
work = tempfile.mkdtemp(prefix="3proxy-bench-")
|
work = tempfile.mkdtemp(prefix="3proxy-bench-")
|
||||||
os.chmod(work, 0o755)
|
# squid writes its log and pid file there after giving up root
|
||||||
|
os.chmod(work, 0o1777)
|
||||||
csvpath = os.path.join(args.out, f"{stamp}.csv")
|
csvpath = os.path.join(args.out, f"{stamp}.csv")
|
||||||
rawpath = os.path.join(args.out, f"{stamp}.raw.txt")
|
rawpath = os.path.join(args.out, f"{stamp}.raw.txt")
|
||||||
with open(os.path.join(args.out, f"{stamp}.env.txt"), "w") as f:
|
with open(os.path.join(args.out, f"{stamp}.env.txt"), "w") as f:
|
||||||
@ -697,6 +846,8 @@ def main():
|
|||||||
for scenario in scenarios:
|
for scenario in scenarios:
|
||||||
order = proxies[rep % len(proxies):] + proxies[:rep % len(proxies)]
|
order = proxies[rep % len(proxies):] + proxies[:rep % len(proxies)]
|
||||||
for proxy in order:
|
for proxy in order:
|
||||||
|
if not proxy.serves(scenario):
|
||||||
|
continue
|
||||||
res = measure(proxy, scenario, args, work)
|
res = measure(proxy, scenario, args, work)
|
||||||
res.update(proxy=proxy.label, scenario=scenario, rep=rep)
|
res.update(proxy=proxy.label, scenario=scenario, rep=rep)
|
||||||
rows.append(res)
|
rows.append(res)
|
||||||
|
|||||||
64
bench/data/m4-grace.csv
Normal file
64
bench/data/m4-grace.csv
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
3proxy-devel-s1,stream1,0,22.041673213188425,nan,nan,nan,0,0,0,10.0,9.995028,0.3628207405007609,nan,9.9375,0.16319677635997312,0.9505703422053232,0.21829025844930416,0.19979315782188845,0.5597283047157519,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1,0,21.606089266254568,nan,nan,nan,0,0,0,9.99,10.001665000000001,0.36977499098669947,nan,3.6875,0.05353483606557377,0.950523311132255,0.2128594249201278,0.1931557965621712,0.5569698704548665,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1,0,21.78362384571212,nan,nan,nan,0,0,1,9.97,9.970201,0.36604762959063003,nan,3.7109375,0.16689068100358423,0.9486203615604186,0.20493128536782537,0.20547840649017796,0.5530301128579423,proxy
|
||||||
|
3proxy-devel-s1,stream16,0,20.98501341553199,nan,nan,nan,0,0,1837,10.05,9.999481,0.3823676246661938,nan,71.14453125,0.1461626575028637,0.9535104364326376,0.2629020194465221,0.2016552398173331,0.5719161458470415,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream16,0,21.006135458736054,nan,nan,nan,0,0,1812,10.04,10.009012,0.3811622152135727,nan,78.4140625,0.13242115027829313,0.9534662867996201,0.26409495548961426,0.19684157106711767,0.5659885732491913,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream16,0,20.877472281907437,nan,nan,nan,0,0,1810,10.03,9.995065,0.38333288490137757,nan,73.42578125,0.14062140391254316,0.9525166191832859,0.2653516933382955,0.19786472489855697,0.5633683162022683,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,0,48.11217664383748,nan,nan,nan,0,0,0,9.93,8.82478,0.16509378651814705,nan,11.3984375,0.2386850881372082,0.8929856115107914,0.18128464297358982,0.9476654050037366,0.3669305476067853,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1-down,0,23.623424106867443,nan,nan,nan,0,0,56,5.79,5.181664,0.19605353495713818,nan,11.28125,0.14747120681021533,0.561046511627907,0.07515878616796048,0.5513346606449316,0.2105040614762583,none
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1-down,0,18.875178947435767,nan,nan,nan,0,0,90,5.16,4.977994,0.2186376453343071,nan,10.32421875,0.12210200927357033,0.5108910891089109,0.0897917377944691,0.4543459041421457,0.19448555482945185,none
|
||||||
|
3proxy-devel-s1,http-ka-1k,0,0.15544090624,15384.81,3.99,8.21,0,0,0,10.02,10.00891,51.5694368612554,65.04888404160012,9.44140625,0.40464613722312265,0.9506641366223909,0.42839687194525905,0.4339179103580278,0.2080315032032753,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1k,0,0.15418261504,15262.53,4.0,8.24,0,0,0,10.09,10.089565,52.35350300619729,65.46082082289897,9.44140625,0.40641325887227525,0.9591254752851711,0.43201754385964913,0.43583807631766014,0.19207251683954038,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1k,0,0.15535702016,15378.85,3.98,8.27,0,0,0,10.09,10.093444,51.95774218433619,64.96391251440602,9.4296875,0.4051022254387552,0.9600380589914367,0.4281856125705868,0.4367809474229265,0.19769630986927889,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1m,0,34.70333575168,4140.64,3.6,8.71,0,0,0,10.02,9.955981000000001,0.23098644053581918,241.6146222661619,18.9453125,0.5075323573095692,0.9524714828897338,0.38543430921848537,1.4908364674289694,0.13017197540318576,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1m,0,35.47642986496,4225.83,3.52,8.39,0,0,0,10.01,9.954578,0.2257273358813787,236.59827928524157,17.1484375,0.508809170027595,0.9515209125475285,0.38654448999276586,1.5026015111581696,0.16444224074517125,client
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1m,0,35.47642986496,4230.78,3.5,9.64,0,0,0,10.02,9.932354,0.225952837715426,236.49924471299093,15.4609375,0.5098496081338699,0.9515669515669516,0.381044957472661,1.509188485469852,0.1815674042122278,client
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,0,3.68880648192,8963.48,72.8,174.67,0,465,0,10.41,10.366329,2.257640795422082,115.29643699675486,180.5859375,0.3658582440308329,0.9895437262357415,0.5075323573095692,0.4052089912010651,0.1444211719728047,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-2k-50k-2000,0,3.7002149888,8991.5,69.27,525.85,0,476,0,10.4,10.364125,2.248517998328044,114.76241972148044,189.984375,0.3692682013849897,0.9876543209876543,0.5002150537634409,0.4052052143799367,0.13491834566724126,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-2k-50k-2000,0,3.70147328,8994.36,71.54,178.82,0,503,0,10.39,10.35644,2.2455923280364734,114.80536126672634,192.140625,0.36543163438028964,0.9876425855513308,0.5052116570942353,0.4052439324322154,0.1349179666890393,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,0,0.05209325568,5078.1,12.38,17.73,0,0,0,10.01,9.893519,153.72431412603157,196.7838326649367,14.17578125,0.33629001156961047,0.9515209125475285,0.3986338131251525,0.2911756517006067,0.08934148795517323,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-close-1k,0,0.05184159744,5056.56,12.44,17.57,0,0,0,10.01,9.891718,154.470548660624,197.408641804879,12.46875,0.33481367059277856,0.9515209125475285,0.39921913128355296,0.2892011192185901,0.0912509664106863,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-close-1k,0,0.05184159744,5056.15,12.41,17.77,0,0,0,10.01,9.896576,154.470548660624,197.3035833957504,12.2734375,0.35669027208348864,0.9524262607040913,0.42044653349001176,0.2882885548428031,0.08932563080708415,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1,1,22.050698104744257,nan,nan,nan,0,0,0,10.01,10.002903,0.36304544237408487,nan,7.4296875,0.062,0.9506172839506173,0.21771950735001985,0.18643242068520918,0.5624450768262327,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1,1,22.3604293320063,nan,nan,nan,0,0,1,9.98,9.980543,0.3569416144212108,nan,8.3125,0.13877457704618198,0.9486692015209125,0.21528054118583367,0.19218242147389017,0.5701955741901206,proxy
|
||||||
|
3proxy-devel-s1,stream1,1,21.04514687754481,nan,nan,nan,0,0,0,9.99,10.001968,0.37967964535168275,nan,3.5546875,0.05825489697278046,0.950523311132255,0.2093487814622453,0.1864745656746888,0.5500643453570406,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream16,1,20.921604090672044,nan,nan,nan,0,0,1856,10.04,10.008245,0.38281185577797655,nan,68.703125,0.1370781322237633,0.9543726235741445,0.26327599102468213,0.19689527269972923,0.5672316009138864,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream16,1,20.72837475122664,nan,nan,nan,0,0,1842,10.03,9.987748,0.38638135394313305,nan,78.44921875,0.1270175438596491,0.9516129032258065,0.2661469933184855,0.19776455421057051,0.563032071692048,proxy
|
||||||
|
3proxy-devel-s1,stream16,1,20.799201924457062,nan,nan,nan,0,0,1997,10.05,10.001333,0.3855709740375864,nan,50.51953125,0.14874141876430205,0.9535104364326376,0.26432047922126545,0.19967410734354324,0.5630846256634613,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1-down,1,28.567667280062423,nan,nan,nan,0,0,47,6.73,6.278795000000001,0.1884430264733975,nan,11.296875,0.1628505273990224,0.6559454191033138,0.12272883099074391,0.5990660873828958,0.25929923186707904,none
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1-down,1,18.340526266479632,nan,nan,nan,0,0,68,5.24,5.078708,0.22853728544989424,nan,11.2734375,0.12236944660950896,0.5193260654112983,0.10789915966386554,0.43583521764548416,0.2140624245209344,none
|
||||||
|
3proxy-devel-s1,stream1-down,1,48.33422589203657,nan,nan,nan,0,0,0,9.94,9.045732,0.16451078493779556,nan,8.47265625,0.23870660960532572,0.9036363636363637,0.19089147286821706,0.9490564909067396,0.37234214156807,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1k,1,0.15695085568,15533.29,3.94,8.14,0,0,0,10.09,10.08778,51.43011145130444,64.31503531271512,9.44140625,0.42624371641532327,0.9591254752851711,0.45002357378595004,0.4300175559039714,0.16249376204697386,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1k,1,0.15661531136,15502.04,3.96,8.38,0,0,0,10.0,10.000726,51.08057399069362,64.44212452796144,9.2109375,0.4239944279993035,0.949667616334283,0.4461502125649504,0.4317664232040751,0.18333037755336878,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,1,0.15577645056,15418.13,3.97,8.35,0,0,0,10.1,10.085906,51.86920083846594,64.86292088650274,9.4296875,0.4229828850855746,0.9591642924976258,0.4541841982234689,0.4310590700659512,0.20435654833219946,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1m,1,35.90592659456,4278.12,3.47,8.35,0,0,0,10.02,9.948878,0.22325005257528935,233.92085911054045,16.4765625,0.5201579384871156,0.9515669515669516,0.4272563987427032,1.5146962163149964,0.14633058293358148,client
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1m,1,36.335423324160004,4325.94,3.42,8.88,0,0,0,9.99,9.933129,0.21995065060067684,230.63603832390626,15.97265625,0.52679307502061,0.9514285714285714,0.40350467289719627,1.525085384416385,0.14924438756460798,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,1,35.82002724864,4264.93,3.47,8.41,0,0,0,10.02,9.949416000000001,0.22378542440400703,234.5505617977528,15.8828125,0.5208031463465121,0.9524714828897338,0.434375,1.514651275290209,0.14826074892055688,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-2k-50k-2000,1,3.74752673792,9106.41,64.83,718.46,0,479,0,10.4,10.360484,2.220130924167301,113.51233355162628,191.1953125,0.39896742033113763,0.9885931558935361,0.5067796610169492,0.40729563557815174,0.1397352593157,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-2k-50k-2000,1,3.7290718003200003,9061.36,64.86,679.19,0,467,0,10.39,10.356898,2.2289729040043498,113.85802266202029,189.4765625,0.3981497954100694,0.9867046533713201,0.5065566835871405,0.406887328068513,0.1357881515878022,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,1,3.7443390668800003,9098.27,67.47,301.05,0,506,0,10.41,10.366496,2.22415754856821,113.84140940257866,179.8984375,0.3997869696431742,0.9876660341555977,0.5107142857142857,0.40694790068303044,0.1348522125985261,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-close-1k,1,0.05209325568,5080.04,12.36,17.81,0,0,0,10.01,9.89123,153.72431412603157,196.57901455195304,12.234375,0.36087439792515746,0.9515209125475285,0.4275446325063761,0.29104787796995846,0.08929896528012451,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-close-1k,1,0.051589939200000004,5033.48,12.46,18.21,0,0,0,10.02,9.888612,155.3791325266768,198.58886951006818,12.38671875,0.36256230385822413,0.9515669515669516,0.4243482309124767,0.28729927526485505,0.08836714965339133,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,1,0.0520093696,5070.05,12.39,17.7,0,0,0,10.02,9.898878,154.1260750063004,197.04239754581923,15.6875,0.36198927713070805,0.9533777354900095,0.42707849512308405,0.2892676931299887,0.08934369269425846,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1,2,22.50728295653697,nan,nan,nan,0,0,1,9.96,9.956719999999999,0.35388384156351294,nan,8.12109375,0.1606586559857588,0.9467680608365019,0.2168,0.19498653536827099,0.5615631814564334,proxy
|
||||||
|
3proxy-devel-s1,stream1,2,22.638052137889392,nan,nan,nan,0,0,0,10.0,10.003677,0.3532781316563252,nan,4.2109375,0.15012491483079718,0.949667616334283,0.21667996807661613,0.20157337562148353,0.5660424770998161,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1,2,22.26391022998214,nan,nan,nan,0,0,0,10.01,10.004318,0.3595619509496911,nan,8.03515625,0.14525266258780875,0.9497153700189753,0.21437125748502994,0.19112791516198221,0.5651480112474744,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream16,2,20.372584120030837,nan,nan,nan,0,0,1893,10.04,9.989797999999999,0.39322940061988243,nan,59.58203125,0.1380268642890227,0.952561669829222,0.2539622641509434,0.19970673982141154,0.561282830399379,proxy
|
||||||
|
3proxy-devel-s1,stream16,2,20.821430775487418,nan,nan,nan,0,0,1841,10.06,10.012559,0.3852765344676777,nan,67.078125,0.13943304908965198,0.9535545023696682,0.26417910447761195,0.1985936109600732,0.5636480587199999,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream16,2,20.7416645514461,nan,nan,nan,0,0,1918,10.04,10.002181,0.3863608081073651,nan,59.21875,0.15001138174368314,0.952561669829222,0.25610214044310925,0.19874275062189184,0.5639813185204221,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1-down,2,15.143401162820927,nan,nan,nan,0,0,80,4.72,4.535304,0.2493197138351934,nan,11.2421875,0.11279938192119496,0.46732673267326735,0.05855539971949509,0.40914088592278974,0.17039385378470548,none
|
||||||
|
3proxy-devel-s1,stream1-down,2,47.3048103164755,nan,nan,nan,0,0,0,9.91,8.838811,0.1675756839346507,nan,11.37890625,0.2488014130709059,0.9340245051837889,0.22777777777777777,0.9321476378832879,0.40326322783441115,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1-down,2,31.620208523351913,nan,nan,nan,0,0,28,7.46,7.029269,0.18873367909672575,nan,11.26171875,0.17759706190975866,0.729227761485826,0.09699601882012306,0.635244819231593,0.27032242543147894,none
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1k,2,0.15669919744,15505.3,3.95,8.23,0,0,0,10.01,10.004620999999998,51.10428215860044,64.46170292234973,9.421875,0.41997191997191996,0.9506172839506173,0.45091592296852984,0.43385910772593894,0.16248859715504374,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,2,0.1572864,15563.32,3.95,8.09,0,0,0,10.01,9.997807,50.913492838541664,64.25934841919435,9.4296875,0.42572369561449125,0.9497153700189753,0.44452330257866096,0.4319997662381668,0.20713697650530427,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1k,2,0.15653142528,15494.17,3.95,8.08,0,0,0,10.1,10.090088000000002,51.61902784406819,64.53921556097997,9.44140625,0.42441150828247604,0.9591642924976258,0.4532458401687368,0.43290865415424556,0.17009366678180232,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1m,2,36.0777252864,4297.36,3.45,8.79,0,0,0,10.0,9.932659,0.2217434701465425,232.48244757520808,15.1640625,0.5238784370477568,0.9505703422053232,0.4102505171225006,1.520465608122812,0.1634650794458957,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,2,35.562329210879994,4240.72,3.48,8.71,0,0,0,10.02,9.936350000000001,0.22540705791418103,235.94235659790903,17.29296875,0.5190555095277548,0.9506641366223909,0.4061267115339986,1.5087157041320296,0.1993837601820415,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1m,2,35.30463117312,4208.53,3.53,8.53,0,0,0,10.01,9.954167,0.22682576573968222,237.47390396659708,16.24609375,0.5211092715231788,0.9515209125475285,0.40431955411054343,1.5109670515704776,0.16531014471166086,client
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-2k-50k-2000,2,3.73905424384,9085.73,63.89,223.0,0,397,0,10.43,10.391157999999999,2.231580355847079,113.86089975219153,179.16015625,0.3962903513465311,0.9895635673624289,0.5061052631578947,0.40309585321818925,0.13292588888820472,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,2,3.6687577088000003,8914.8,65.42,180.4,0,500,0,10.41,10.380515,2.2699781945327686,115.89846359385437,175.24609375,0.39599714081486775,0.9895437262357415,0.5044567062818336,0.4021547539683639,0.1367549393507763,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-2k-50k-2000,2,3.70172493824,8995.09,69.95,221.52,0,518,0,10.41,10.377564,2.249761972849226,114.86389566253628,195.04296875,0.3955650929899857,0.9904852521408183,0.5075005282062117,0.4024333378071069,0.14069000673423293,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-close-1k,2,0.05226102784,5094.11,12.3,18.21,0,0,0,10.03,9.896201,153.53697260922448,196.28180039138942,12.3359375,0.36176905995558845,0.9525166191832859,0.42474994184694115,0.2901649168257369,0.0883610743541148,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,2,0.05192548352,5063.81,12.39,17.89,0,0,0,10.04,9.898866,154.6832009162964,197.7195297268556,14.66796875,0.36220908755079423,0.952561669829222,0.42591732466326054,0.2863965095747706,0.08834666912543246,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-close-1k,2,0.0520093696,5070.48,12.37,18.11,0,0,0,10.01,9.888034000000001,153.97225656817037,197.0627608473108,12.3046875,0.3624446085672083,0.9524262607040913,0.4231397247492419,0.2864420668862271,0.088405959192543,proxy
|
||||||
|
148
bench/data/m4-splice-direction.csv
Normal file
148
bench/data/m4-splice-direction.csv
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
direct,stream1,0,61.487212980060306,nan,nan,nan,0,0,0,0.06,0.0,0.0007805286666274496,nan,0.0,0.14247239429033126,0.008298755186721992,0.333000333000333,0.502620102346311,0.9985659689289935,origin
|
||||||
|
3proxy-devel-s0,stream1,0,22.44501605295182,nan,nan,nan,0,0,0,10.0,10.002151,0.35631229684384064,nan,3.94140625,0.10666347075743049,0.9514747859181731,0.20868516284680338,0.20172796213326183,0.5636353556645027,proxy
|
||||||
|
3proxy-devel-s1,stream1,0,22.37642214939323,nan,nan,nan,0,0,0,10.01,10.002891,0.35776804063379836,nan,6.5,0.1497737556561086,0.9497153700189753,0.2128,0.19878914914226112,0.5650049000762309,proxy
|
||||||
|
3proxy-devel-s3,stream1,0,44.136779831106054,nan,nan,nan,0,0,0,9.96,9.459084,0.18049117370151851,nan,9.671875,0.09532374100719425,0.9230769230769231,0.3029350104821803,0.33871862348288345,0.8401950944403631,proxy
|
||||||
|
haproxy,stream1,0,13.509580471013159,nan,nan,nan,0,0,0,10.0,10.001668,0.5920179506056444,nan,32.69921875,0.03625527688105289,0.9505703422053232,0.2,0.11508241846266444,0.5253322403228243,proxy
|
||||||
|
haproxy-splice-response,stream1,0,13.708241445787277,nan,nan,nan,0,0,0,10.0,10.001178,0.5834788601183875,nan,41.45703125,0.13733245440562514,0.9514747859181731,0.2006661115736886,0.11036628578210421,0.5217587530609814,proxy
|
||||||
|
haproxy-splice,stream1,0,46.32776561974326,nan,nan,nan,0,0,0,9.93,9.175564,0.1714389207100888,nan,45.0546875,0.10099649878804201,0.9548076923076924,0.3290965304019237,0.33474151591736007,0.9605071996968593,origin
|
||||||
|
direct,stream16,0,141.2373491852448,nan,nan,nan,0,0,4160,0.31,0.0,0.0017552205533524605,nan,0.0,0.5704569606801275,0.056776556776556776,0.95,1.56745831250613,2.8460546808562666,origin
|
||||||
|
3proxy-devel-s0,stream16,0,21.144310573433135,nan,nan,nan,0,0,1920,10.04,10.002381000000002,0.3789090711365423,nan,62.0859375,0.13965317919075146,0.9534662867996201,0.2633729569093611,0.20071088633863815,0.5681786228255737,proxy
|
||||||
|
3proxy-devel-s1,stream16,0,21.243645575609744,nan,nan,nan,0,0,1880,10.03,10.003535000000001,0.3767333284845438,nan,70.64453125,0.13404452690166976,0.9525166191832859,0.26217228464419473,0.19873324824577762,0.5650803170902811,proxy
|
||||||
|
3proxy-devel-s3,stream16,0,38.512462995553136,nan,nan,nan,0,0,1735,10.02,9.982759,0.2078769301972949,nan,66.46484375,0.1876155268022181,0.9524714828897338,0.35753237900477164,0.3594042109574554,0.9565678731741979,origin
|
||||||
|
haproxy,stream16,0,8.953355848332826,nan,nan,nan,0,0,3,10.02,10.00652,0.8949384016006018,nan,46.55078125,0.15711159737417943,0.9506641366223909,0.6951102588686481,0.10176953426144361,1.339292796661325,origin
|
||||||
|
haproxy-splice-response,stream16,0,9.75675083543487,nan,nan,nan,0,0,5,10.02,10.009506,0.8210787090180441,nan,55.921875,0.16429975966790475,0.9515669515669516,0.7033001245330013,0.10366690475769363,1.3250853020025157,origin
|
||||||
|
haproxy-splice,stream16,0,23.968363506977507,nan,nan,nan,0,0,0,10.01,10.006899,0.3339304999007984,nan,65.87109375,0.2625523012552301,0.9515209125475285,0.7369385884509624,0.25394726356699204,1.3048203919224286,origin
|
||||||
|
direct,stream1-down,0,66.98494270000984,nan,nan,nan,0,0,0,0.04,0.0,0.0004776633665574674,nan,0.0,0.25118483412322273,0.0055248618784530384,0.22486865148861646,0.9492501829192568,0.5421010098971271,client
|
||||||
|
3proxy-devel-s0,stream1-down,0,22.265855203813558,nan,nan,nan,0,0,0,10.01,10.002751,0.35961951770456624,nan,5.2890625,0.15046491969568893,0.9515209125475285,0.25943396226415094,0.5556162913945981,0.21479958214461328,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,0,48.11495851109196,nan,nan,nan,0,0,0,9.91,8.987101000000001,0.1647530137622763,nan,11.375,0.23887699262431597,0.9009090909090909,0.27546628407460544,0.9496073811347584,0.42195677113184316,client
|
||||||
|
3proxy-devel-s3,stream1-down,0,46.3017559714097,nan,nan,nan,0,0,0,9.92,8.883735,0.1713775760327341,nan,11.28125,0.23545037430572324,0.8953068592057761,0.12757777001048584,0.927494284705082,0.34018938367566726,client
|
||||||
|
haproxy,stream1-down,0,13.814483246634754,nan,nan,nan,0,0,0,10.01,10.002008,0.5796162663768405,nan,32.609375,0.1484219505260165,0.9515209125475285,0.04864139550486414,0.5451987260603789,0.1216615145243143,proxy
|
||||||
|
haproxy-splice-response,stream1-down,0,46.7439033815401,nan,nan,nan,0,0,0,9.92,9.133771999999999,0.16975657809149552,nan,44.9140625,0.23832335329341317,0.906764168190128,0.12692847124824685,0.937019776420622,0.3420948665360546,client
|
||||||
|
haproxy-splice,stream1-down,0,47.41147205757616,nan,nan,nan,0,0,0,9.94,9.16069,0.16770495718846748,nan,44.9140625,0.2496236828901154,0.9530201342281879,0.13616236162361622,0.9412903131586786,0.35745225307441714,client
|
||||||
|
direct,http-ka-1k,0,1.25225140224,121626.0,0.504,0.719,0,0,0,0.64,0.0,0.4088635868837085,0.5210105651173658,0.0,0.807242465137202,0.21548821548821548,0.9576217583807717,2.5188764874269234,0.9576925437006272,origin
|
||||||
|
3proxy-devel-s0,http-ka-1k,0,0.16114515968,15952.09,3.82,8.15,0,0,0,10.11,10.10432,50.190772196081134,62.750988436687294,9.42578125,0.42030510257759074,0.9610266159695817,0.4353857386225359,0.4577213404241798,0.1967696799782158,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,0,0.1556086784,15399.24,3.97,8.27,0,0,0,10.1,10.09741,51.92512450513814,64.94007509901753,9.43359375,0.41102756892230574,0.9600760456273765,0.4291687161829808,0.43774075312343336,0.1948503650542321,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,0,0.15166603263999998,15008.65,4.1,8.28,0,0,0,10.01,9.999277999999999,52.80022072581064,66.61741902423117,9.27734375,0.4061323292092523,0.9515209125475285,0.4218942189421894,0.43012125408953433,0.19768443421556894,proxy
|
||||||
|
haproxy,http-ka-1k,0,0.446693376,44210.83,1.39,2.09,0,0,0,10.1,10.090006,18.088470602259388,22.619367553525038,29.703125,0.45401987353206863,0.9600760456273765,0.4673744174003107,0.690656463524837,0.28694960570814776,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,0,0.44677726207999996,44219.81,1.38,2.12,0,0,0,10.09,10.092872,18.067168329964442,22.592974905899922,35.79296875,0.45226860254083484,0.9600380589914367,0.4615585092520198,0.6925690888772407,0.2831905647869406,proxy
|
||||||
|
haproxy-splice,http-ka-1k,0,0.4366270464,43213.42,1.42,2.16,0,0,0,10.1,10.095120999999999,18.505495861101103,23.14220772079041,35.80859375,0.45031905195989064,0.9600760456273765,0.46247727862892757,0.6963301592739042,0.33361477577821014,proxy
|
||||||
|
direct,http-ka-1m,0,70.95285972992,8455.89,1.3,2.28,0,0,0,0.27,0.0,0.0030442747596389737,3.1880224814622395,0.0,0.9296270232230823,0.047285464098073555,0.5918572505654687,3.6778375733986057,0.45582281905816757,client
|
||||||
|
3proxy-devel-s0,http-ka-1m,0,22.07613190144,2632.68,5.76,11.58,0,0,0,10.02,9.959567999999999,0.3631070894026107,379.97724687144483,18.32421875,0.38961321164710994,0.9524714828897338,0.2408118486012068,0.99525414137977,0.07507923787836303,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,0,35.47642986496,4229.73,3.51,8.44,0,0,0,10.02,9.958341,0.225952837715426,236.4490171555325,17.19140625,0.5095541401273885,0.9524714828897338,0.3856556387346052,1.5091835207991013,0.1644485427831386,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,0,34.96103378944,4166.23,3.56,8.51,0,0,0,10.02,9.952836,0.2292838377800269,240.1322884463297,16.31640625,0.5056251326682233,0.9515669515669516,0.3783783783783784,1.4891091509552656,0.16156221774601218,client
|
||||||
|
haproxy,http-ka-1m,0,6.129975296,729.73,21.57,27.04,0,0,0,10.11,10.101142,1.31941804158292,1371.7774762550882,39.09375,0.6089980439034992,0.9601139601139601,0.13184772516248838,1.2665546459470216,0.026615701205427198,client
|
||||||
|
haproxy-splice-response,http-ka-1m,0,26.37109919744,3143.12,5.0,6.56,0,0,0,10.0,9.98051,0.30336240215487903,318.0358108322997,52.09765625,0.605999097880018,0.998003992015968,0.24359720605355065,1.6157059495457868,0.09484297321822183,client
|
||||||
|
haproxy-splice,http-ka-1m,0,26.45699854336,3148.67,4.96,6.42,0,0,0,10.0,9.994585,0.3023774592907398,317.33942625031733,51.74609375,0.5726495726495726,0.9505703422053232,0.24931431705979154,1.5943894466628896,0.10358563023199845,client
|
||||||
|
direct,http-ka-2k-50k-2000,0,29.635274342400002,72002.61,25.3,390.94,0,528,0,0.64,0.0,0.017276708630548008,0.8824202581630768,0.0,0.9105202312138728,0.17486338797814208,0.9537535635096611,3.3858454104933187,0.9517514817089334,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,0,3.90296764416,9484.04,61.02,162.28,0,531,0,10.41,10.371582,2.133760963266289,109.0909090909091,178.22265625,0.3772845953002611,0.9886039886039886,0.5113006396588486,0.42821412802735687,0.15491155478238802,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,0,3.66112407552,8896.4,73.6,271.94,0,420,0,10.39,10.358821,2.270340974122661,115.94041176142387,197.41796875,0.3664724675812817,0.9876425855513308,0.5021358393848783,0.40330801925072834,0.13299807033596747,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,0,3.5618029568000003,8654.75,70.06,176.8,0,585,0,10.41,10.346931,2.3381416942508393,119.51505131914307,196.25390625,0.363824192336589,0.9886039886039886,0.5015947267701467,0.3957081887213887,0.1378065840003408,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,0,3.6326866944000002,8683.35,220.17,632.8,0,0,0,10.07,10.046798,2.2176423891492756,115.2873023687133,140.0703125,0.5216417910447761,0.9581351094196003,0.27842690225135364,0.819990330188369,0.10358652209871884,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,0,4.64619831296,11231.47,171.94,543.3,0,0,0,10.12,10.070951,1.7424998793997237,89.54722023130083,143.9453125,0.5019950598517956,0.9619771863117871,0.46373626373626375,0.8221449563597469,0.13500443497052061,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,0,4.64192012288,11216.39,172.88,474.18,0,0,0,10.14,10.073342,1.7475526905376924,89.79013548215708,142.3046875,0.5028812908182866,0.9629629629629629,0.4607908106914071,0.85053107579199,0.13020256819296278,proxy
|
||||||
|
direct,http-close-1k,0,0.48452599807999996,47239.81,0.88,2.41,0,0,0,4.68,0.0,7.7271395442888675,9.808997030053677,0.0,0.7764244426094137,0.5109170305676856,0.9352428393524284,2.248213854039727,0.8956366813821871,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,0,0.052680458240000005,5137.81,12.25,17.31,0,0,0,10.03,9.901605,152.31454448335487,194.81402350199087,13.19140625,0.33725641520355004,0.9534220532319392,0.3999512551791372,0.2959398960221911,0.09124664663010544,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,0,0.05142216704,5015.87,12.52,18.06,0,0,0,10.02,9.890167,155.8860791254588,199.24438258103004,12.2109375,0.3343000773395205,0.9524714828897338,0.39540566959921797,0.28832316010616965,0.0883786599817914,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,0,0.050834964479999994,4953.57,12.66,18.8,0,0,0,10.01,9.874103,157.5293714063789,201.68846084100662,13.5546875,0.33507347254447023,0.9515209125475285,0.3956500488758553,0.288277359454439,0.08935883727247883,proxy
|
||||||
|
haproxy,http-close-1k,0,0.17087594496,16663.43,3.7,4.3,0,0,0,10.1,10.065618,47.28576630192992,60.01437968305277,29.76953125,0.545749279538905,0.9600760456273765,0.4696256444743331,0.8135872774079423,0.1691943123365163,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,0,0.17121148928,16692.69,3.69,4.32,0,0,0,10.1,10.065442,47.193094540436675,59.90652210016845,35.75,0.5408588512411668,0.9600760456273765,0.4460018382352941,0.805048843723069,0.16541725711158606,proxy
|
||||||
|
haproxy-splice,http-close-1k,0,0.17272143872,16840.36,3.65,4.43,0,0,0,10.02,9.96999,46.40998858858973,59.41932729256606,35.92578125,0.5405944182674882,0.9506641366223909,0.4100216815225247,0.8151160047298934,0.15960310316874107,proxy
|
||||||
|
3proxy-devel-s0,stream1,1,22.837818841062138,nan,nan,nan,0,0,0,10.01,10.003943,0.3505151425454952,nan,6.66796875,0.14971687429218572,0.9515209125475285,0.21761658031088082,0.19789816312017983,0.5653981339541418,proxy
|
||||||
|
3proxy-devel-s1,stream1,1,21.450425656809077,nan,nan,nan,0,0,0,10.0,10.00309,0.37284033696348023,nan,3.453125,0.14594843462246776,0.9505703422053232,0.21006389776357828,0.1988538953797619,0.551021059854269,proxy
|
||||||
|
3proxy-devel-s3,stream1,1,47.43245857162112,nan,nan,nan,0,0,0,9.9,8.976406,0.16695403212905002,nan,11.3046875,0.16192045187102846,0.9,0.3145631067961165,0.3748387031068509,0.9256114840882478,origin
|
||||||
|
haproxy,stream1,1,13.146829794171975,nan,nan,nan,0,0,0,10.01,10.002989999999999,0.6089013917528086,nan,30.21484375,0.040199750312109865,0.9515209125475285,0.1961028192371476,0.10751662651624597,0.5181105183796308,proxy
|
||||||
|
haproxy-splice-response,stream1,1,13.607586197795765,nan,nan,nan,0,0,0,10.01,10.00215,0.588323235943398,nan,38.13671875,0.058580456976178905,0.9515209125475285,0.1986727498963086,0.11704392038018378,0.5208744899019659,proxy
|
||||||
|
haproxy-splice,stream1,1,46.30613478363452,nan,nan,nan,0,0,0,9.95,9.436968,0.17185616166298975,nan,42.14453125,0.21272365805168986,0.9230055658627088,0.31076218514883874,0.40818395209763403,0.9105263522607521,origin
|
||||||
|
direct,stream1,1,61.61557578967376,nan,nan,nan,0,0,0,0.03,0.0,0.0003894508731223541,nan,0.0,0.13425216947422156,0.0038910505836575876,0.31695721077654515,0.5004039388084773,0.9502366073982361,origin
|
||||||
|
3proxy-devel-s0,stream16,1,20.955773135042747,nan,nan,nan,0,0,1794,10.04,10.008061999999999,0.3821987211351831,nan,74.203125,0.1414118188089216,0.9534662867996201,0.2690166975881262,0.19966075048086795,0.5696333546451248,proxy
|
||||||
|
3proxy-devel-s1,stream16,1,20.6655596998746,nan,nan,nan,0,0,2076,10.03,9.999322,0.38739262375622047,nan,44.74609375,0.1439446366782007,0.9534220532319392,0.2619316046599023,0.19975677767959069,0.5567830361663778,proxy
|
||||||
|
3proxy-devel-s3,stream16,1,38.1264621919771,nan,nan,nan,0,0,1653,10.02,9.982086,0.20999314147813583,nan,79.796875,0.17150956768249467,0.9515669515669516,0.35314443676572216,0.3451557690591759,0.9240927522378024,origin
|
||||||
|
haproxy,stream16,1,8.803591705829385,nan,nan,nan,0,0,4,10.01,10.007219000000001,0.9091695149739584,nan,48.09765625,0.13762287756925826,0.9515209125475285,0.7017710309930424,0.09701453153247169,1.3427362231738011,origin
|
||||||
|
haproxy-splice-response,stream16,1,9.20448724268318,nan,nan,nan,0,0,6,10.03,10.009892,0.8713400645446187,nan,55.22265625,0.1377232142857143,0.9507109004739337,0.7017430600387347,0.09982994301761618,1.366099047058414,origin
|
||||||
|
haproxy-splice,stream16,1,21.938702636983383,nan,nan,nan,0,0,1,10.02,10.013288999999999,0.36502362711527536,nan,52.57421875,0.2632460732984293,0.9515669515669516,0.7227443609022557,0.23486219470799805,1.2538197428000601,origin
|
||||||
|
direct,stream16,1,140.5837182273533,nan,nan,nan,0,0,3751,0.2,0.0,0.001137784995444025,nan,0.0,0.5619676320272572,0.03656307129798903,0.9500158177791838,1.5265737636491428,2.846971796737993,origin
|
||||||
|
3proxy-devel-s0,stream1-down,1,22.914811514145512,nan,nan,nan,0,0,0,10.02,10.001677,0.34977687022723947,nan,9.80859375,0.15563006426376083,0.9506641366223909,0.19080322484323678,0.5650456897204938,0.19667998237942064,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,1,47.906365458167535,nan,nan,nan,0,0,0,9.95,8.918061999999999,0.1661362609638204,nan,11.34375,0.23694298035457595,0.8963963963963963,0.27406340057636885,0.9379055259898098,0.42658538652742733,client
|
||||||
|
3proxy-devel-s3,stream1-down,1,46.3442832652511,nan,nan,nan,0,0,0,9.93,9.152154,0.17139315443349795,nan,11.20703125,0.2335124572545188,0.9085086916742909,0.1392931392931393,0.9047028881709641,0.3477173771475372,client
|
||||||
|
haproxy,stream1-down,1,13.455516773444856,nan,nan,nan,0,0,0,10.0,10.001686,0.5944859222081099,nan,31.90234375,0.1470948012232416,0.998003992015968,0.05079928952042629,0.5183878794549521,0.12270950615418987,proxy
|
||||||
|
haproxy-splice-response,stream1-down,1,47.675632503302225,nan,nan,nan,0,0,0,9.92,9.028054000000001,0.1664443857376602,nan,43.1875,0.2375717017208413,0.9018181818181819,0.1635936976198458,0.9417555460032427,0.358166877198603,client
|
||||||
|
haproxy-splice,stream1-down,1,47.41410378852379,nan,nan,nan,0,0,0,9.94,9.082224,0.16769494444300098,nan,42.0703125,0.2388981239610544,0.9052823315118397,0.13233240223463688,0.9512416704915422,0.34299074212254055,client
|
||||||
|
direct,stream1-down,1,63.6951610197785,nan,nan,nan,0,0,0,0.04,0.0,0.0005023370423135674,nan,0.0,0.24059787849566056,0.00546448087431694,0.2026554856743536,0.9456976958041993,0.5502321715011873,client
|
||||||
|
3proxy-devel-s0,http-ka-1k,1,0.16055795712,15890.95,3.84,8.29,0,0,0,10.02,10.016485999999999,49.92589681499804,62.973716957653004,9.21875,0.41788675251367086,0.9515669515669516,0.43298211222739524,0.4577345917883268,0.1710894552700988,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,1,0.15502147584,15339.4,3.98,8.31,0,0,0,10.09,10.090712000000002,52.070204829756825,65.12996946830965,9.26171875,0.4084785342195078,0.9591254752851711,0.4309838472834068,0.43580134409824284,0.18056244321438847,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,1,0.15174991872,15017.81,4.08,8.44,0,0,0,10.1,10.090126999999999,53.24549804147664,66.59018684810844,9.2578125,0.40105110547299744,0.9591642924976258,0.42552147239263804,0.42904165609352063,0.18819906612065884,proxy
|
||||||
|
haproxy,http-ka-1k,1,0.448790528,44416.32,1.38,2.08,0,0,0,10.02,9.999747,17.86133953344042,22.545884925983344,29.71484375,0.45201014125316913,0.9497630331753555,0.4628956927867151,0.6941980794478849,0.2925208873436063,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,1,0.44509954048,44049.37,1.39,2.09,0,0,0,10.1,10.090792,18.15324273596518,22.702445120772513,35.796875,0.45510611282423363,0.9600760456273765,0.4655127873934384,0.7047753414968844,0.34578888180527684,proxy
|
||||||
|
haproxy-splice,http-ka-1k,1,0.44535119872,44075.39,1.39,2.1,0,0,0,10.1,10.086662,18.142984734795863,22.689745807451672,35.7890625,0.4537708484408992,0.9591642924976258,0.465650826446281,0.698144157232353,0.3382050590003495,proxy
|
||||||
|
direct,http-ka-1k,1,1.22154909696,118640.29,0.561,0.87,0,0,0,0.73,0.0,0.47808147986304245,0.6092563567137547,0.0,0.8065168539325843,0.23624595469255663,0.9525766677205185,2.487133879528027,0.9520692576470958,origin
|
||||||
|
3proxy-devel-s0,http-ka-1m,1,22.3338299392,2661.9,5.69,11.35,0,0,0,10.02,9.954504,0.35891739221719593,375.7875787578758,15.08203125,0.39166304819800263,0.9524714828897338,0.24179431072210067,0.998997196287122,0.07602551328455898,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,1,35.64822855680001,4248.49,3.51,8.2,0,0,0,10.02,9.953738999999999,0.2248639083770384,235.5762448864438,18.3359375,0.50986632718014,0.9524714828897338,0.36187157789945246,1.504984092218568,0.16343393541133866,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,1,34.61743640576,4124.55,3.6,8.53,0,0,0,10.01,9.953606,0.23132851046900593,242.36114473875358,17.09765625,0.5036108751062022,0.9515209125475285,0.3679152291769345,1.4776402768314068,0.16250695738860327,client
|
||||||
|
haproxy,http-ka-1m,1,5.681688084479999,676.68,23.41,27.18,0,0,0,10.1,10.098886,1.4221125622983752,1477.9045946736903,39.70703125,0.5954545454545455,0.9600760456273765,0.15611685940353012,1.187068085094224,0.02850278466429372,client
|
||||||
|
haproxy-splice-response,http-ka-1m,1,26.886495272959998,3199.4,4.92,7.13,0,0,0,10.0,9.951245,0.29754714843945007,312.4804699706268,52.19140625,0.5846021874329831,0.9505703422053232,0.224278104850014,1.6289000774791895,0.08743357172455572,client
|
||||||
|
haproxy-splice,http-ka-1m,1,27.4877906944,3275.98,4.8,5.96,0,0,0,10.02,9.98811,0.29162038117647165,305.590289426332,52.15234375,0.570334718879895,0.9506641366223909,0.2342367256637168,1.6114456010998695,0.11496989857514432,client
|
||||||
|
direct,http-ka-1m,1,69.5784701952,8287.53,1.39,2.56,0,0,0,0.07,0.0,0.000804846669420784,0.8431703204047217,0.0,0.9134006101854025,0.013618677042801557,0.5416886543535621,3.5955132207399956,0.730596787726919,client
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,1,3.8972633907199996,9470.11,55.72,130.56,0,417,0,10.42,10.383066,2.1389367780092394,109.24264027509855,152.80078125,0.37984783818890333,0.9895536562203229,0.5094380094380094,0.4253189069645489,0.1444623566140756,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,1,3.6859543552,8956.56,68.69,166.41,0,567,0,10.42,10.374920000000001,2.261558119470443,115.56462524676708,193.76953125,0.368085505344084,0.9895536562203229,0.5040563620836892,0.40618607058375267,0.13782981670640643,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,1,3.592421376,8729.35,69.37,169.74,0,574,0,10.41,10.338671,2.31821357473183,118.43407624833613,189.25390625,0.36604127579737333,0.9886039886039886,0.4954760878931495,0.39873414692721915,0.13116511059526584,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,1,3.69425907712,8831.9,218.33,579.34,0,0,0,10.07,10.041761,2.1806808433912983,113.36898395721926,157.3203125,0.5273510678156613,0.959047619047619,0.28055713473564525,0.8506908842525117,0.10264496424164767,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,1,4.61859979264,11156.93,174.55,489.48,0,0,0,10.12,10.065012000000001,1.752912216577291,90.13502440414692,140.1328125,0.5058373205741626,0.9619771863117871,0.4675976434649793,0.8550609037236319,0.1330003868591117,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,1,4.6342864896,11196.2,172.36,424.99,0,0,0,10.13,10.064854,1.7487050095384764,89.79143214231898,133.2421875,0.503550182306659,0.961100569259962,0.45760071221900733,0.8522968991498954,0.13491947344561445,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,1,30.32246910976,73677.33,26.2,1360.0,0,0,0,0.76,0.0,0.02005113758378934,1.0266926582018558,0.0,0.9002569493109087,0.20320855614973263,0.9487017099430018,3.3466132384778007,0.9471075559921832,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,1,0.053016002560000004,5172.21,12.15,17.26,0,0,0,10.02,9.890685000000001,151.19963054415547,193.36163643380934,13.94921875,0.33980023050326547,0.9515669515669516,0.40102389078498296,0.2939950116300253,0.09026272539014284,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,1,0.051589939200000004,5026.84,12.5,17.91,0,0,0,10.0,9.882197,155.0689945376016,198.58606720152514,12.390625,0.33449141092453194,0.9514747859181731,0.39800146234462586,0.28740436975961386,0.08840741185720098,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,1,0.05091885056,4963.17,12.68,17.99,0,0,0,10.01,9.878451,157.26985020142604,201.35983263598325,13.16796875,0.3334622076164701,0.9515209125475285,0.39511002444987775,0.2845230976336132,0.08745556560157255,proxy
|
||||||
|
haproxy,http-close-1k,1,0.1690304512,16478.61,3.73,4.46,0,0,0,10.1,10.066578999999999,47.80203769579715,60.68653900462059,29.6640625,0.5423942394239424,0.9591642924976258,0.467695059244355,0.804026326118069,0.18149220686102707,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,1,0.169869312,16564.81,3.7,4.51,0,0,0,10.1,10.063043,47.565978250385804,60.37131346459611,35.84375,0.5424741894584314,0.9600760456273765,0.43529136438099697,0.8126625021842682,0.17205024153625922,proxy
|
||||||
|
haproxy-splice,http-close-1k,1,0.16961765376,16536.29,3.73,4.41,0,0,0,10.1,10.065089,47.63655091841308,60.475782742247425,35.67578125,0.5438186071621378,0.9600760456273765,0.46944692239072255,0.8048873059929241,0.1615351619690719,proxy
|
||||||
|
direct,http-close-1k,1,0.50264539136,49007.5,0.844,2.31,0,0,0,4.68,0.0,7.44859112279915,9.455175799598761,0.0,0.7887913007109996,0.5282167042889391,0.9366021236727046,2.3176738655799256,0.8985833468836837,origin
|
||||||
|
3proxy-devel-s1,stream1,2,22.412542061207652,nan,nan,nan,0,0,0,10.01,10.001405,0.35718239423146625,nan,8.65234375,0.06389376096216487,0.9515209125475285,0.2161624203821656,0.19317767772057867,0.5657524486097208,proxy
|
||||||
|
3proxy-devel-s3,stream1,2,42.19485753953147,nan,nan,nan,0,0,0,10.01,9.996824,0.18972605516077723,nan,11.03125,0.18370165745856354,0.9506172839506173,0.2898606811145511,0.3785076463813056,0.7261663017363147,proxy
|
||||||
|
haproxy,stream1,2,12.734461707248238,nan,nan,nan,0,0,0,10.0,10.000467,0.6280525968907694,nan,30.75,0.03365384615384615,0.9505703422053232,0.1951219512195122,0.11416389333626328,0.5151260390750806,proxy
|
||||||
|
haproxy-splice-response,stream1,2,13.642627039770355,nan,nan,nan,0,0,0,10.0,10.002360999999999,0.5862271431068662,nan,38.11328125,0.15149530670159353,0.949667616334283,0.1998345055854365,0.11603779651563073,0.5205390266361747,proxy
|
||||||
|
haproxy-splice,stream1,2,47.214454290552546,nan,nan,nan,0,0,0,9.93,9.132807,0.1682128857463181,nan,44.9921875,0.19656962310990747,0.9076782449725777,0.3174754202346971,0.41200892977257375,0.9494882304044413,origin
|
||||||
|
direct,stream1,2,62.171198367771204,nan,nan,nan,0,0,0,0.04,0.0,0.0005146285868344458,nan,0.0,0.13370901639344263,0.005194805194805195,0.3174754202346971,0.5042117850831974,0.9493906240908521,origin
|
||||||
|
3proxy-devel-s0,stream1,2,21.807164296726466,nan,nan,nan,0,0,0,10.0,10.003136999999999,0.36673434075112,nan,6.76171875,0.09279845335911067,0.9505703422053232,0.21451355661881977,0.19208659099534162,0.5622548525126803,proxy
|
||||||
|
3proxy-devel-s1,stream16,2,20.907970548003146,nan,nan,nan,0,0,1947,10.05,10.000237,0.3836149164435075,nan,62.74609375,0.14236351071181755,0.9535104364326376,0.26276556093924713,0.20059920218016655,0.5660576530267616,proxy
|
||||||
|
3proxy-devel-s3,stream16,2,38.1507540727546,nan,nan,nan,0,0,1612,10.03,9.985721,0.2100503892278696,nan,96.44140625,0.18545959712896504,0.9525166191832859,0.36460116398493664,0.35565379178998613,0.9401473783851194,origin
|
||||||
|
haproxy,stream16,2,9.095685800647711,nan,nan,nan,0,0,17,10.02,10.008029,0.8808219057855167,nan,64.046875,0.11503416856492027,0.9506641366223909,0.7057187017001546,0.10173412928821919,1.342720263159998,origin
|
||||||
|
haproxy-splice-response,stream16,2,9.065552626026134,nan,nan,nan,0,0,2,10.02,10.007312,0.8838362568863157,nan,68.8984375,0.10354348826507133,0.9506641366223909,0.6891175553476769,0.09888458368877626,1.347579724265575,origin
|
||||||
|
haproxy-splice,stream16,2,23.23972300154158,nan,nan,nan,0,0,2,10.02,10.007752,0.3447435307628219,nan,50.21484375,0.2768115942028985,0.9515669515669516,0.729487970388649,0.26162023035291915,1.2959658586295257,origin
|
||||||
|
direct,stream16,2,138.00702853494744,nan,nan,nan,0,0,6144,0.25,0.0,0.0014487927031357174,nan,0.0,0.5787878787878787,0.05070993914807302,0.95,1.6975733612606676,2.8440309258678904,origin
|
||||||
|
3proxy-devel-s0,stream16,2,21.28271617367179,nan,nan,nan,0,0,1984,10.05,9.998313,0.3769556359371236,nan,56.50390625,0.13805104408352667,0.9535104364326376,0.25755879059350506,0.20539050326847086,0.5659601516248431,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,2,47.6898340099585,nan,nan,nan,0,0,0,9.95,9.318458000000001,0.16689342470130655,nan,8.54296875,0.24307533005436188,0.961352657004831,0.2835866261398176,0.8903022014005461,0.44327934808285063,proxy
|
||||||
|
3proxy-devel-s3,stream1-down,2,48.303841786431875,nan,nan,nan,0,0,0,9.91,8.864684,0.16410861336116145,nan,10.4296875,0.23877405559515325,0.894404332129964,0.1329399514057619,0.9512678830899849,0.3458615682150364,client
|
||||||
|
haproxy,stream1-down,2,13.872830224954548,nan,nan,nan,0,0,0,10.0,10.0009,0.5766040789662626,nan,37.01953125,0.1508106454573264,0.998003992015968,0.25096525096525096,0.5243534567898559,0.11971545237080566,proxy
|
||||||
|
haproxy-splice-response,stream1-down,2,46.90340399314967,nan,nan,nan,0,0,0,9.94,9.306656,0.16952845655307194,nan,41.97265625,0.23435225618631733,0.9161290322580645,0.13216783216783218,0.9158678847658244,0.34482106680818864,client
|
||||||
|
haproxy-splice,stream1-down,2,47.612362334398284,nan,nan,nan,0,0,0,9.95,9.178912,0.16716501603317538,nan,43.84375,0.24912016088486677,0.9539789069990412,0.24398073836276082,0.9362151674865723,0.416153713441182,client
|
||||||
|
direct,stream1-down,2,62.95540590216663,nan,nan,nan,0,0,0,0.06,0.0,0.0007623600594797953,nan,0.0,0.25081108060893437,0.008321775312066574,0.19247787610619468,0.9491397262612927,0.5289101130447306,client
|
||||||
|
3proxy-devel-s0,stream1-down,2,21.56461910706485,nan,nan,nan,0,0,0,10.01,10.0022,0.37130790823473714,nan,6.7578125,0.14902624894157493,0.9506172839506173,0.15279106858054226,0.5546530421025905,0.2005256238523849,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,2,0.15485370368,15324.33,3.98,8.46,0,0,0,10.09,10.090988,52.126618919496536,65.19561916453979,9.41796875,0.4100035855145213,0.9600380589914367,0.4295913343180699,0.4386459370568692,0.1758138911841442,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,2,0.15032385536,14875.44,4.13,8.6,0,0,0,10.01,10.003869,53.271651268005364,67.21504112808461,9.41015625,0.3997825299021385,0.9524262607040913,0.42067604243770046,0.43010330894019155,0.19292518270134998,proxy
|
||||||
|
haproxy,http-ka-1k,2,0.44409290751999997,43954.85,1.39,2.11,0,0,0,10.1,10.091429999999999,18.194391000572583,22.751334669880386,29.71875,0.45319032903108525,0.9600760456273765,0.46285714285714286,0.6984227681049596,0.32696719488165243,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,2,0.44300238848,43847.82,1.39,2.13,0,0,0,10.11,10.089401,18.257237907341768,22.830431542578417,35.8046875,0.4546606334841629,0.9601139601139601,0.4629966242534407,0.6973532821396143,0.32216731716697494,proxy
|
||||||
|
haproxy-splice,http-ka-1k,2,0.44971327488,44508.83,1.38,2.07,0,0,0,10.11,10.092801999999999,17.98479264851182,22.49005632524492,35.8203125,0.4564000722152013,0.9601139601139601,0.46477774889524304,0.6982359312435344,0.288826641190277,proxy
|
||||||
|
direct,http-ka-1k,2,1.23589361664,120032.57,0.449,0.97,0,0,0,0.75,0.0,0.4854786786836947,0.61864752103814,0.0,0.8133333333333334,0.24509803921568626,0.9579247073710851,2.517043664654647,0.958300051238524,origin
|
||||||
|
3proxy-devel-s0,http-ka-1k,2,0.15980298240000002,15814.69,3.86,8.29,0,0,0,10.02,10.018809999999998,50.16176719365158,63.26636275240248,9.23046875,0.40754039497307004,0.9524714828897338,0.4308183828950602,0.4557980920459262,0.2014843960996622,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1m,2,35.734127902720004,4260.4,3.5,8.29,0,0,0,10.01,9.954687999999999,0.2240994945168495,234.65153894840478,17.8671875,0.5144667370644139,0.9515209125475285,0.38866202257987026,1.5140628451764615,0.16259789928495108,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,2,33.75844294656,4027.77,3.69,9.13,0,0,0,10.02,9.95322,0.23745170986379374,248.40716959615241,18.12109375,0.5025531914893617,0.9515669515669516,0.38276699029126215,1.4765319449214074,0.12828120671426269,client
|
||||||
|
haproxy,http-ka-1m,2,5.82739820544,693.3,22.73,28.61,0,0,0,10.1,10.099346,1.3865536067978244,1442.4450157097972,37.84375,0.5999567754484547,0.9600760456273765,0.1553133514986376,1.2138055133144956,0.02660314498816172,client
|
||||||
|
haproxy-splice-response,http-ka-1m,2,25.512105738240002,3039.38,5.2,6.51,0,0,0,10.1,10.06189,0.3167123906941526,329.0330987750847,52.09765625,0.5806451612903226,0.9591642924976258,0.25239791723759936,1.5959098947136607,0.09311173513541872,client
|
||||||
|
haproxy-splice,http-ka-1m,2,25.59800508416,3045.77,5.14,6.81,0,0,0,10.09,9.997931,0.3153370730828919,328.01274340886187,52.1796875,0.5860089304699129,0.9563981042654028,0.22919010123734535,1.60208005609905,0.09217081889877518,client
|
||||||
|
direct,http-ka-1m,2,71.21055776767999,8489.66,1.31,2.42,0,0,0,0.12,0.0,0.0013481147039066034,1.410802040960286,0.0,0.9280507876792852,0.021897810218978103,0.5729327170005136,3.673680265449341,0.5802900762307843,client
|
||||||
|
3proxy-devel-s0,http-ka-1m,2,22.50562863104,2686.42,5.63,11.4,0,0,0,10.02,9.957056,0.35617756479569057,372.2277944945949,15.1328125,0.39198266522210184,0.9533777354900095,0.2344523940561365,0.9942785213109134,0.09598994439343105,client
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,2,3.73611823104,9078.58,56.34,347.14,0,301,0,10.42,10.374294,2.23119277402513,114.18302157642701,142.58203125,0.3677988365547007,0.9886148007590133,0.4919319668556476,0.40805399723335684,0.13395904605159958,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,2,3.59569293312,8737.32,69.76,173.1,0,515,0,10.4,10.35747,2.3138794537665643,118.3001183001183,183.01953125,0.3619747503297532,0.9895337773549001,0.49957337883959047,0.39570590928196736,0.13398143416173144,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,2,3.68410886144,8798.77,218.58,594.26,0,0,0,10.09,10.039916000000002,2.1910318895530447,113.88390388153366,152.41796875,0.5229100430147746,0.9582146248812915,0.28198581560283686,0.8332164056407744,0.10450901729841595,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,2,4.65181868032,11246.13,172.22,613.08,0,0,0,10.12,10.065694,1.7403945760506456,89.42852345731379,129.80859375,0.5071306332002282,0.9619771863117871,0.4747191011235955,0.8437061463760049,0.13206016213360533,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,2,4.67312574464,11292.9,170.91,609.65,0,0,0,10.12,10.064278,1.732459266538244,89.0351301654892,131.859375,0.5064935064935064,0.9610636277302944,0.468804537521815,0.8532276120405744,0.13301138316058767,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,2,30.75196583936,74650.09,24.37,594.85,0,559,0,0.54,0.0,0.014047882410401075,0.7186432016353125,0.0,0.9103097549699491,0.15254237288135594,0.9547038327526133,3.3763903217528424,0.952624424484007,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,2,3.91018184704,9501.44,64.13,154.58,0,493,0,10.4,10.375247,2.127778278725892,108.74907197306369,173.7734375,0.3782325581395349,0.9904761904761905,0.5147589721809301,0.4262943383234204,0.15023060680399306,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,2,0.051589939200000004,5032.57,12.48,17.86,0,0,0,10.01,9.889688,155.2240635321392,198.39460905757605,12.47265625,0.33526458091927386,0.9524262607040913,0.39579770339604203,0.2892649566119041,0.08744208736695183,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,2,0.05066719232,4941.42,12.7,18.28,0,0,0,10.01,9.883535,158.05099184149938,202.07933784192994,12.328125,0.3330110230129569,0.9506172839506173,0.3953147877013177,0.2853918409977784,0.08741012760702671,proxy
|
||||||
|
haproxy,http-close-1k,2,0.16953376768,16531.46,3.72,4.48,0,0,0,10.11,10.064937,47.70730993996629,60.54871146832122,29.83984375,0.5425628049882523,0.9601139601139601,0.45029775538250116,0.8067033956314082,0.1757744584961748,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,2,0.17280532480000002,16845.92,3.64,4.58,0,0,0,10.02,9.959469,46.387459467915654,59.428137621806925,35.9140625,0.5421990282526543,0.9506641366223909,0.42577295256077413,0.8115412761749208,0.1672503124172539,proxy
|
||||||
|
haproxy-splice,http-close-1k,2,0.17221812224000002,16794.84,3.67,4.28,0,0,0,10.1,10.064293,46.917245960560756,59.54591815678853,35.640625,0.5421119362434341,0.9600760456273765,0.4580483356133151,0.8114098994221223,0.189993297265006,proxy
|
||||||
|
direct,http-close-1k,2,0.5020581888,48951.17,0.841,2.29,0,0,0,4.68,0.0,7.4573029252819545,9.466498103666245,0.0,0.7882451021258858,0.5264341957255343,0.9354939233406045,2.3150945648023504,0.8905012023160093,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,2,0.052512686079999996,5122.12,12.28,17.55,0,0,0,10.01,9.892285,152.49648414099943,195.05066250974278,12.61328125,0.33603864734299516,0.9524262607040913,0.4009261515963929,0.29309418708894697,0.09028870487075917,proxy
|
||||||
|
64
bench/data/skylake-grace.csv
Normal file
64
bench/data/skylake-grace.csv
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
3proxy-devel-s1,stream1,0,19.97818097659635,nan,nan,nan,0,0,0,10.01,6.861308999999999,0.4007611092279849,nan,6.9453125,0.10687405920722529,0.999001996007984,0.289850136239782,0.2807591563595339,0.5242162822200562,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1,0,19.742163074564107,nan,nan,nan,0,0,0,10.0,6.837938,0.4051529417738929,nan,8.8515625,0.134173461823573,0.999000999000999,0.2792207792207792,0.32267898307021686,0.5111302154541534,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1,0,19.375433324241943,nan,nan,nan,0,0,2,9.98,6.822737,0.4119802044274638,nan,6.1640625,0.12711022840119166,0.9950149551345963,0.27138945927446956,0.305718684848744,0.48520207742470634,proxy
|
||||||
|
3proxy-devel-s1,stream16,0,19.07237094981249,nan,nan,nan,0,0,737,10.03,7.114903,0.419590553247087,nan,92.02734375,0.13854853911404336,0.9534220532319392,0.2676422764227642,0.3478905881721866,0.478675171157012,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream16,0,18.38128508005787,nan,nan,nan,0,0,790,10.04,7.060224,0.43567032626593255,nan,88.56640625,0.13476011288805267,0.9534662867996201,0.2601362309438858,0.3345677319979222,0.4625239250503418,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream16,0,19.060620747099044,nan,nan,nan,0,0,789,10.02,7.075574,0.42047022860496003,nan,91.07421875,0.13620324629498942,0.9506641366223909,0.2648106183230819,0.34126793268195404,0.4663859683132522,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,0,31.66700660730227,nan,nan,nan,0,0,0,9.94,5.2211929999999995,0.25108657904005205,nan,11.546875,0.2703318976437801,0.9920159680638723,0.25466045272969373,0.7053331267720395,0.5550846795632212,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1-down,0,31.0956698919565,nan,nan,nan,0,0,0,9.97,5.212859,0.25647142107458115,nan,11.44140625,0.26698661278100533,0.9950099800399201,0.25041404438555814,0.7033195700284811,0.544839358048385,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1-down,0,33.71480123207125,nan,nan,nan,0,0,1,9.94,5.195236,0.23583615540539488,nan,11.1796875,0.2753916119252148,0.9920159680638723,0.22188552188552188,0.7253811359746524,0.5162068295111297,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,0,0.15451815936000002,15399.39,3.96,8.69,0,0,0,10.09,7.776215,52.2398146174759,64.87244110688201,9.78125,0.1592099000475964,0.9591254752851711,0.2376237623762376,0.3481992665319233,0.20246800509354868,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1k,0,0.16466837503999998,16415.68,3.75,7.87,0,0,0,10.09,7.776965,49.01973434813583,60.85828885068911,10.00390625,0.16654804270462634,0.9591254752851711,0.24552429667519182,0.357738394789852,0.1949042324703459,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1k,0,0.16626221056,16575.77,3.73,7.47,0,0,0,10.01,7.715996,48.1648834875205,60.342281191413434,9.78125,0.16305641513925256,0.9506172839506173,0.2418321588725176,0.3605801106300779,0.21391633135363147,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1m,0,25.254407700479998,3005.89,5.06,11.06,0,0,0,10.01,6.266191,0.3170931623095558,332.53604411667,16.46875,0.4434229137199434,0.9524262607040913,0.21149068322981365,1.4774624737810826,0.1378426872301122,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1m,0,24.223615549439998,2885.08,5.14,12.67,0,0,0,10.0,6.233359,0.3302562321331484,346.0806367883717,17.50390625,0.4256724870221803,0.9523809523809523,0.20180629087511678,1.4175919220088566,0.13499720413833763,client
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1m,0,25.254407700479998,3014.66,5.02,11.44,0,0,0,10.01,6.255949,0.3170931623095558,331.6326530612245,17.46484375,0.44651711924439197,0.9524262607040913,0.21437422552664187,1.4944802132500334,0.14068083362794956,client
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,0,3.42011936768,8312.18,56.32,111.11,0,284,0,10.48,7.5281590000000005,2.451376428328346,125.20459242798944,165.171875,0.1605493724840161,0.9952516619183286,0.24205225055083412,0.39386428848897437,0.16060536692720764,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-2k-50k-2000,0,3.42305538048,8319.32,45.56,113.83,0,217,0,10.48,7.629284,2.449273841086483,125.11938872970391,125.30078125,0.15825633736081499,0.9961977186311787,0.23985009369144286,0.3910123546197932,0.1511076269531801,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-2k-50k-2000,0,3.5676749824000002,8670.95,54.74,113.31,0,259,0,10.48,7.529979,2.349989850914061,120.0320696369259,159.28515625,0.16120607787274455,0.9971455756422455,0.2426239799121155,0.40150098349800273,0.15682424252147653,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,0,0.04630511616,4549.5,13.26,22.61,0,0,0,10.04,7.111331,173.45815465070197,220.25272025272025,29.078125,0.1330166270783848,0.952561669829222,0.15428571428571428,0.27116146869492636,0.07605984001254153,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-close-1k,0,0.04630511616,4548.5,13.3,22.68,0,0,0,10.0,7.09639,172.7670863054801,219.62093426745437,38.34375,0.13094106463878327,0.9523809523809523,0.15509554140127388,0.2663805749345092,0.07700873767334432,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-close-1k,0,0.04756340736,4670.38,12.87,22.43,0,0,0,10.03,7.048138,168.70111805211087,214.49498513718697,32.921875,0.13409144752428334,0.9525166191832859,0.15504121750158528,0.27019824457001107,0.07508142397062999,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1,1,19.99295619731226,nan,nan,nan,0,0,0,10.0,6.855381,0.4000668333088625,nan,5.28125,0.12481278082875687,0.999000999000999,0.29162393162393163,0.3097336734549248,0.5112158147262651,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1,1,20.14584580051949,nan,nan,nan,0,0,0,10.0,7.010956,0.3970045131625506,nan,8.57421875,0.12242481648117452,0.9505703422053232,0.258777633289987,0.3282867357387694,0.4743337416206333,proxy
|
||||||
|
3proxy-devel-s1,stream1,1,20.474172528356966,nan,nan,nan,0,0,0,10.0,6.778047,0.390660003136281,nan,6.38671875,0.11747919143876338,0.9514747859181731,0.2685546875,0.29210043371873357,0.4972598249075507,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream16,1,18.975432855429553,nan,nan,nan,0,0,812,10.03,7.076132,0.42163660338551706,nan,95.66796875,0.1452253093625963,0.9534220532319392,0.2654120700843608,0.3488170225093332,0.4701379714617092,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream16,1,19.517510165584948,nan,nan,nan,0,0,751,10.0,7.044628,0.40944066563538106,nan,94.0703125,0.12996219281663515,0.9505703422053232,0.2726681832954176,0.3383966463207904,0.4804372963625567,proxy
|
||||||
|
3proxy-devel-s1,stream16,1,20.272088287169534,nan,nan,nan,0,0,797,10.03,7.094227,0.39486685422891055,nan,92.5625,0.13072360616844603,0.9534220532319392,0.27817357512953367,0.34601203580503664,0.4901158479265062,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1-down,1,33.146384491720774,nan,nan,nan,0,0,0,9.99,5.2020599999999995,0.2410867628065474,nan,8.7109375,0.26037644787644787,0.950523311132255,0.21854093660401402,0.7098944309800352,0.4886354267033914,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1-down,1,32.081131147072185,nan,nan,nan,0,0,12,9.51,5.056833,0.23712356279842442,nan,11.4609375,0.2700176812326345,0.9491017964071856,0.20873949579831932,0.7073315408797886,0.49316526599576865,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,1,34.28650940946106,nan,nan,nan,0,0,0,9.94,5.237946,0.2319035816003651,nan,11.5234375,0.2851020922611545,0.9900398406374502,0.26218097447795824,0.7610998115670152,0.5808791672733641,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1k,1,0.16659775488,16603.91,3.68,8.28,0,0,0,9.99,7.676701,47.971834949136145,60.11662263730841,9.77734375,0.16,0.950523311132255,0.23419955085017646,0.3539424542889111,0.19492107104172984,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1k,1,0.16609443840000002,16557.69,3.71,7.7,0,0,0,10.1,7.7634620000000005,48.64702321062184,60.39477854251254,9.7734375,0.16333333333333333,0.9591642924976258,0.23876765083440307,0.3577171268923177,0.22152121096792818,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,1,0.15552479232,15505.73,3.77,7.87,0,0,0,10.09,7.751042,51.90169284001652,64.42879309353988,9.7734375,0.15521749465177087,0.9591254752851711,0.22998078155028828,0.3377447182770327,0.2072568861432294,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1m,1,26.45699854336,3156.07,4.82,10.14,0,0,0,10.02,6.215743,0.30298221420932125,317.09864236210007,16.71484375,0.464841906559698,0.9524714828897338,0.22366790582403964,1.5575072708769517,0.14737441184684066,client
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1m,1,25.42620639232,3033.7,4.95,11.84,0,0,0,10.02,6.2447669999999995,0.315265276947537,329.80053979329864,18.42578125,0.4574192026421326,0.9524714828897338,0.22549627791563276,1.5155528412891814,0.1606707414015199,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,1,26.45699854336,3149.09,4.79,10.54,0,0,0,10.01,6.227593,0.3026798367500305,317.5660670664002,16.90234375,0.46795475966069744,0.9515209125475285,0.20769471379418206,1.5697733659790591,0.17772010664454696,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-2k-50k-2000,1,3.07232768,7467.03,47.91,130.57,0,216,0,10.46,7.496495,2.723667808767065,139.14015111205703,106.796875,0.1536094674556213,0.9952426260704091,0.22362204724409449,0.37199722421966114,0.15022302961775982,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-2k-50k-2000,1,3.21602453504,7816.11,51.48,110.75,0,251,0,10.47,7.509432,2.6044577423896493,133.15528424265548,139.578125,0.15935499170026085,0.9961941008563273,0.2390075376884422,0.3891170585063435,0.15878126499734133,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,1,3.25998084096,7923.01,48.98,106.66,0,214,0,10.49,7.583868,2.574248257707159,131.44210407608355,111.8359375,0.16398865784499056,0.9962013295346629,0.23697426239799121,0.39481452313856286,0.1587568436740403,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-close-1k,1,0.04647288832,4564.5,13.15,23.5,0,0,0,10.02,7.044042,172.48766516950585,219.15051835002842,47.19140625,0.14025112532575218,0.9533777354900095,0.15705638738451735,0.27875641354338576,0.07891269755815927,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-close-1k,1,0.04303355904,4223.78,14.13,27.6,0,0,0,10.01,7.05328,186.0873276262488,236.7269717393875,29.8203125,0.12918546663500355,0.9524262607040913,0.14977692797960485,0.26068673498760464,0.07415754218791192,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,1,0.044459622399999996,4369.31,13.7,26.47,0,0,0,10.0,7.053941,179.9385502653302,228.6341396497325,38.00390625,0.1351671804600427,0.9523809523809523,0.1571927596062242,0.2711485212952833,0.07795499229443685,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1,2,20.28888112115602,nan,nan,nan,0,0,0,9.99,7.048534,0.3938021595572431,nan,9.9296875,0.10874760994263863,0.950523311132255,0.27243278263686427,0.30260944257927985,0.4811976862890873,proxy
|
||||||
|
3proxy-devel-s1,stream1,2,19.751917241354487,nan,nan,nan,0,0,0,9.99,6.803585,0.4045458478218898,nan,7.0546875,0.12070192079677496,0.9514285714285714,0.27694805194805194,0.31590932242319975,0.5172489454629472,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1,2,18.56857777823545,nan,nan,nan,0,0,0,10.02,6.863988,0.43159651773112206,nan,6.4296875,0.11463536463536464,0.99800796812749,0.2815368922135328,0.2837351861572906,0.4881634434741356,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream16,2,18.356289403194534,nan,nan,nan,0,0,819,10.01,7.046023,0.43612473949559133,nan,88.609375,0.1394804586941259,0.9515209125475285,0.2617733030204612,0.3346282978502008,0.4644939923306271,proxy
|
||||||
|
3proxy-devel-s1,stream16,2,19.52173190454759,nan,nan,nan,0,0,778,10.04,7.1317129999999995,0.41004197407900084,nan,95.8125,0.14091122592766558,0.9534662867996201,0.27331606217616583,0.351709879439914,0.48249808570645575,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream16,2,17.991826575351094,nan,nan,nan,0,0,805,10.03,7.05978,0.4444402138974637,nan,98.61328125,0.1346153846153846,0.9543292102759277,0.2543089430894309,0.3279460105547571,0.45118747246594837,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1-down,2,32.479373745819316,nan,nan,nan,0,0,0,9.96,5.294425,0.2452991462691265,nan,11.203125,0.26223186309954205,0.9476688867745005,0.24338790931989923,0.6765313854263647,0.5248896381071574,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,2,32.719063000395955,nan,nan,nan,0,0,0,9.75,5.086837999999999,0.23836739123229145,nan,11.53515625,0.2766011094301563,0.9720837487537388,0.25662251655629137,0.7513326449945147,0.5690856078536491,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1-down,2,32.98512396725947,nan,nan,nan,0,0,0,10.0,5.225493,0.2425078680261535,nan,8.703125,0.27904616945712835,0.998003992015968,0.26521164021164023,0.7181410840158545,0.5708571027876761,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1k,2,0.16240345088,16184.42,3.79,7.56,0,0,0,10.08,7.782796,49.654117300490704,61.66570823800027,9.78515625,0.16413301662707838,0.9590865842055185,0.23820224719101124,0.35676927176573736,0.19204548474399577,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,2,0.15393095680000002,15342.97,4.01,7.95,0,0,0,10.09,7.765093,52.43909456424557,65.11189695671253,9.7734375,0.15656925635542884,0.9591254752851711,0.23054755043227665,0.33870425564453704,0.1873068963380125,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1k,2,0.13203668992,13164.31,4.96,9.9,0,0,0,10.09,7.739739,61.13452257013382,75.88862648355119,9.76953125,0.1380952380952381,0.9591254752851711,0.21201525746980293,0.3015955114340705,0.1806356178435725,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1m,2,26.37109919744,3142.42,4.84,10.54,0,0,0,10.0,6.260394,0.30336240215487903,317.8235443681668,18.13671875,0.46650943396226413,0.9514747859181731,0.22177293934681183,1.5660514739099147,0.1625786413950211,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,2,25.512105738240002,3044.75,4.95,11.23,0,0,0,10.03,6.228746999999999,0.314517354323005,328.9495260896658,17.359375,0.44748642907717723,0.9525166191832859,0.20964230171073095,1.4955008017047875,0.15877434737893567,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1m,2,25.16850835456,2998.89,5.05,11.39,0,0,0,10.02,6.216146,0.3184932490664537,333.77748167888075,18.15234375,0.44142654700047235,0.9524714828897338,0.20547093565433633,1.4765259499745038,0.15209934533166888,client
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-2k-50k-2000,2,3.5145750937600004,8541.84,55.44,118.95,0,287,0,10.48,7.500329,2.385494626330644,121.88455857553237,154.98828125,0.1587942084025635,0.9961977186311787,0.23433070866141734,0.3948493263496859,0.1492666713497686,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,2,3.51700779008,8547.68,47.16,101.22,0,211,0,10.48,7.620989,2.383844591885107,121.64405186122363,107.41015625,0.1662719090478446,0.9961977186311787,0.24913711954816442,0.41006738189510833,0.17303984661685748,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-2k-50k-2000,2,3.48026568704,8458.33,61.86,131.22,0,283,0,10.47,7.525542,2.4067128067811026,122.88588162110773,157.34375,0.16682442025556082,0.9961941008563273,0.24420788979336255,0.41005602454767365,0.15591885497518831,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-close-1k,2,0.04789895168,4701.59,12.79,21.86,0,0,0,10.01,7.07599,167.1852873419713,212.6800662898908,49.9921875,0.13834836260085429,0.9533333333333334,0.1636479186526851,0.28255178423902294,0.080808899908129,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,2,0.04555014144,4475.12,13.18,27.68,0,0,0,10.03,7.041878,176.157521059939,223.83896092302885,45.98828125,0.1335543452521904,0.9534220532319392,0.15416401780038144,0.26639459936300575,0.07605417678567374,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-close-1k,2,0.0486539264,4776.74,12.5,21.84,0,0,0,10.01,7.051387,164.59103288321657,209.33101905100483,49.10546875,0.1382751247327156,0.9515209125475285,0.16045845272206305,0.2844787127348353,0.07986418432914309,proxy
|
||||||
|
148
bench/data/skylake-splice-direction.csv
Normal file
148
bench/data/skylake-splice-direction.csv
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
direct,stream1,0,43.836690240908,nan,nan,nan,0,0,0,6.05,0.0,0.11039375517569716,nan,0.0,0.27106776694173546,0.6282450674974039,0.3602865916069601,0.716014382210462,0.7563867443709865,none
|
||||||
|
3proxy-devel-s0,stream1,0,20.19585192748124,nan,nan,nan,0,0,0,10.01,7.102659,0.396438137560605,nan,9.87109375,0.12115913065201099,0.9980059820538385,0.27517924206213723,0.31464197628592916,0.4881052169317087,proxy
|
||||||
|
3proxy-devel-s1,stream1,0,20.28743240845509,nan,nan,nan,0,0,0,10.0,6.808442,0.39422690934903476,nan,7.00390625,0.12185870080606923,0.9505703422053232,0.270772238514174,0.3159040978930273,0.4954169361886507,proxy
|
||||||
|
3proxy-devel-s3,stream1,0,31.923388114459133,nan,nan,nan,0,0,0,9.99,5.274278,0.2502853688134804,nan,11.47265625,0.18870163778779966,0.9487179487179487,0.35872709739633557,0.5518938993659982,0.7661305966579064,proxy
|
||||||
|
haproxy,stream1,0,9.78116014326784,nan,nan,nan,0,0,0,10.01,6.489873,0.8182817878261277,nan,30.38671875,0.07142857142857142,0.9515209125475285,0.2633311389071758,0.16747538220395852,0.4553238964454953,proxy
|
||||||
|
haproxy-splice-response,stream1,0,9.56238803996089,nan,nan,nan,0,0,0,10.0,6.512339,0.8362446600225792,nan,36.5234375,0.06449309852451214,0.9514747859181731,0.24842871319880913,0.13893536707943008,0.4374489805681654,proxy
|
||||||
|
haproxy-splice,stream1,0,30.741158587381538,nan,nan,nan,0,0,0,9.99,5.286203,0.2598952181734058,nan,41.00390625,0.16369570675370324,0.9970059880239521,0.3567073170731707,0.46150417754058043,0.7326897263930425,proxy
|
||||||
|
direct,stream16,0,147.11615398017736,nan,nan,nan,0,0,4088,8.67,0.0,0.04712223697447121,nan,0.0,0.936986301369863,0.8846938775510204,0.9791252485089463,3.0461399696228404,2.527151531273022,origin
|
||||||
|
3proxy-devel-s0,stream16,0,18.968952312308485,nan,nan,nan,0,0,809,10.05,7.079188,0.4219542417470352,nan,97.94140625,0.15060804490177737,0.9544159544159544,0.2633624878522838,0.36124893880672737,0.4702103752593548,proxy
|
||||||
|
3proxy-devel-s1,stream16,0,18.65596755181685,nan,nan,nan,0,0,773,10.04,7.096519000000001,0.42930710995516325,nan,91.234375,0.13832785345232504,0.9534662867996201,0.2606021366137909,0.338468160087356,0.46835476751489613,proxy
|
||||||
|
3proxy-devel-s3,stream16,0,32.542164253674024,nan,nan,nan,0,0,755,10.03,5.166716,0.24605331541839898,nan,82.23046875,0.195440512942294,0.9525166191832859,0.3543205910697077,0.5694400958941302,0.7760906807349006,proxy
|
||||||
|
haproxy,stream16,0,8.9037702042322,nan,nan,nan,0,0,9,10.0,6.3312100000000004,0.8982415827319071,nan,53.74609375,0.08063748810656518,0.9505703422053232,0.3518324607329843,0.17015010563383554,0.6078941523415237,proxy
|
||||||
|
haproxy-splice-response,stream16,0,9.022532412025374,nan,nan,nan,0,0,10,10.01,6.321186999999999,0.88700495078703,nan,61.41015625,0.08210726150925486,0.9515209125475285,0.3695427982124441,0.16827594204343965,0.6469358221195294,proxy
|
||||||
|
haproxy-splice,stream16,0,32.03535608059839,nan,nan,nan,0,0,7,10.0,5.156018,0.24964724405036534,nan,58.48046875,0.2452561669829222,0.9505703422053232,0.5767676767676768,0.5901881230845435,1.166587714161185,origin
|
||||||
|
direct,stream1-down,0,43.52498712684525,nan,nan,nan,0,0,0,6.15,0.0,0.11302670577213765,nan,0.0,0.24923625254582485,0.6419624217118998,0.35376415722851434,0.6852284631871587,0.734344902356756,none
|
||||||
|
3proxy-devel-s0,stream1-down,0,20.13096689197303,nan,nan,nan,0,0,0,10.01,6.74482,0.39775337627243446,nan,6.32421875,0.21485072722633325,0.999001996007984,0.14590984974958263,0.47759441577207123,0.2955370607274329,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,0,33.28045322524086,nan,nan,nan,0,0,0,9.99,5.221013,0.24011534009151095,nan,8.671875,0.27279635258358664,0.9970059880239521,0.2521537442014579,0.7152801331286519,0.5410802431560445,proxy
|
||||||
|
3proxy-devel-s3,stream1-down,0,32.083116813971,nan,nan,nan,0,0,0,9.77,5.073230000000001,0.24359131038889575,nan,11.52734375,0.27095959595959596,0.9682854311199207,0.26363031914893614,0.7373431195496298,0.5930561278162897,proxy
|
||||||
|
haproxy,stream1-down,0,9.19744187775164,nan,nan,nan,0,0,0,9.94,6.411222,0.8644959889723903,nan,31.078125,0.21411073003429693,0.9448669201520913,0.08692893401015228,0.4824344120942362,0.15975992222257768,proxy
|
||||||
|
haproxy-splice-response,stream1-down,0,32.770997951518986,nan,nan,nan,0,0,0,10.0,5.380629,0.24409219710809374,nan,44.19140625,0.2849557522123894,0.9970089730807578,0.23089812332439677,0.7493016136173929,0.5381518371773574,proxy
|
||||||
|
haproxy-splice,stream1-down,0,31.796517433265464,nan,nan,nan,0,0,0,10.0,5.413102,0.2515726859164172,nan,44.1484375,0.25723938223938225,0.949667616334283,0.24204834605597964,0.7127209688654196,0.5382227022493651,proxy
|
||||||
|
direct,http-ka-1k,0,1.392508928,136195.96,0.46900000000000003,0.78,0,0,0,8.47,0.0,4.866037024072854,6.157568320292422,0.0,0.5939792562610675,0.8660531697341514,0.9587955625990491,1.759657967564108,0.8498758942805595,origin
|
||||||
|
3proxy-devel-s0,http-ka-1k,0,0.20023607296,19958.38,3.1,5.48,0,0,0,10.1,7.498736,40.35236948346512,50.1051712505457,9.703125,0.1822953948938201,0.9609895337773549,0.28926409684612936,0.4138579032297467,0.22532956427785908,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,0,0.17037262847999998,16986.52,3.65,7.22,0,0,0,10.09,7.741980000000001,47.378502474343,58.81324318022849,9.77734375,0.165358077563645,0.9591254752851711,0.24720179085385352,0.3643727705701595,0.20147473142818612,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,0,0.15149826047999998,15102.91,4.06,8.45,0,0,0,10.11,7.917393000000001,53.38675159948609,66.2776976530746,9.78125,0.15505350772889417,0.959203036053131,0.22986310092327283,0.33774170750721577,0.17303432001634952,proxy
|
||||||
|
haproxy,http-ka-1k,0,0.36993761280000004,36876.93,1.64,2.57,0,0,0,10.11,7.015325,21.863145893122873,27.146113755910523,29.5234375,0.21902497027348394,0.9601139601139601,0.38116032439176545,0.5632256593193199,0.307940754112563,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,0,0.37102813184,36987.28,1.65,2.57,0,0,0,10.0,6.935885,21.561707357138822,27.015490682357264,42.046875,0.2171115347950429,0.9514747859181731,0.3799126637554585,0.5641234130939057,0.3136928630017471,proxy
|
||||||
|
haproxy-splice,http-ka-1k,0,0.34804334592,34693.79,1.69,2.69,0,0,0,10.1,6.998108,23.21549914606682,28.823789614874215,40.03515625,0.21245247148288973,0.9600760456273765,0.366219169528567,0.5365608422416794,0.31847918246728263,proxy
|
||||||
|
direct,http-ka-1m,0,67.17328850944,8004.06,1.35,2.6,0,0,0,6.33,0.0,0.07538710866132965,78.95721591617811,0.0,0.9470057034220533,0.6121856866537717,0.5572687224669604,3.5502195053538923,0.5190191123657836,client
|
||||||
|
3proxy-devel-s0,http-ka-1m,0,18.4683593728,2196.62,6.98,15.02,0,0,0,10.03,6.973659,0.43447281039038366,456.01273016594683,18.03125,0.3596325953838907,0.9525166191832859,0.15689332501559575,1.1284430046449632,0.11029944665204378,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,0,24.653112279040002,2940.66,5.21,11.1,0,0,0,10.01,6.252597000000001,0.3248271418780815,339.90967435227003,16.9375,0.43906471421823334,0.9515209125475285,0.20336343818125194,1.4661536660440022,0.16923496619929956,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,0,24.481313587200003,2915.59,5.05,13.69,0,0,0,10.0,6.271345,0.32677985074227317,342.5596053713346,18.390625,0.43183962264150944,0.9514747859181731,0.1972534332084894,1.4413350093943296,0.16543211700047256,client
|
||||||
|
haproxy,http-ka-1m,0,7.988639170560001,946.53,17.96,24.76,0,0,0,10.09,5.339542,1.010434922351632,1055.439330543933,45.23046875,0.34366268732537464,0.9591254752851711,0.06826801517067003,0.8543363707968451,0.05419317037556818,proxy
|
||||||
|
haproxy-splice-response,http-ka-1m,0,27.4877906944,3271.35,4.64,7.65,0,0,0,10.0,5.856335,0.29103830456733704,305.5300947143294,51.3515625,0.47378593863251994,0.9505703422053232,0.20130881894671238,1.565048674942876,0.14446337793813396,client
|
||||||
|
haproxy-splice,http-ka-1m,0,24.395414241279997,2905.08,4.89,9.01,0,0,0,10.0,5.887141000000001,0.3279304840195347,344.1274648129667,53.25390625,0.4667515923566879,0.998003992015968,0.185502471169687,1.4324541954566299,0.1537169087196079,client
|
||||||
|
direct,http-ka-2k-50k-2000,0,26.37109919744,64034.14,28.83,46.05,0,0,0,8.51,0.0,0.258161404233802,13.192080411233265,0.0,0.7577505407354002,0.8351324828263003,0.954718176060798,2.370401588162736,0.7771550852587394,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,0,4.01034182656,9746.67,49.28,102.12,0,282,0,10.46,7.275017999999999,2.0866051728009234,106.62806581173928,158.6015625,0.1803123521060104,0.9961904761904762,0.2629757785467128,0.4538097519546965,0.17112897268812544,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,0,3.47389034496,8442.98,62.41,115.86,0,269,0,10.48,7.521523,2.4134325403113834,123.26511409080216,166.1484375,0.1670220326936745,0.9971455756422455,0.24459755715627937,0.4100610566772289,0.15592897056767693,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,0,3.10806315008,7553.8,63.05,134.6,0,252,0,10.5,7.702789,2.702647788795343,138.09429867824028,156.35546875,0.14983404457088667,0.9971509971509972,0.221767851525637,0.3644034356153315,0.14167377096983388,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,0,3.0126846771199998,7220.78,262.14,641.96,0,0,0,10.12,5.959411,2.6873041382277805,139.23284354190744,180.2890625,0.2386255924170616,0.9628924833491912,0.188125,0.48617909871796255,0.1226585616283394,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,0,3.69459462144,8895.4,212.21,590.16,0,0,0,10.12,6.055417,2.1913094208004105,112.95399245485189,193.5703125,0.2412811387900356,0.9628924833491912,0.22530383296977252,0.5251672031551009,0.15304671256401103,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,0,3.74333243392,9047.57,211.81,512.3,0,0,0,10.14,6.039669,2.167053058524421,111.39429626049127,194.2109375,0.2444813671967719,0.9638783269961977,0.22486689633573442,0.5337162981944547,0.14451089856316726,proxy
|
||||||
|
direct,http-close-1k,0,0.42437967872000004,41674.69,1.23,4.16,0,0,0,8.31,0.0,15.66521757133018,19.932120456208104,0.0,0.7293601651186791,0.8925886143931256,0.9306163691478613,1.8888012492576298,0.5955632120433562,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,0,0.05058330624,4970.97,12.01,21.05,0,0,0,10.07,7.047454999999999,159.26202929039698,202.3266560848687,96.4453125,0.14089184060721063,0.9581351094196003,0.16634860050890585,0.2911371314734927,0.08272168387286188,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,0,0.046389002240000005,4553.85,13.1,25.17,0,0,0,10.02,7.060357,172.79957776474907,219.70311574977526,32.70703125,0.1344876660341556,0.9524714828897338,0.15325914149443562,0.27210027759618666,0.07605559897795683,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,0,0.043201331200000005,4244.27,14.16,26.27,0,0,0,10.02,7.121382,185.54983787166262,235.80354411314804,36.38671875,0.13412604042806184,0.9515669515669516,0.15323604060913706,0.26069517940464176,0.07321112581200954,proxy
|
||||||
|
haproxy,http-close-1k,0,0.16156459008000001,15863.7,3.85,5.75,0,0,0,10.1,5.672904,50.01095844082619,63.03910921369634,29.16796875,0.3402233309574721,0.9600760456273765,0.21189945911549474,0.7695833448813446,0.19297524400233407,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,0,0.1556086784,15279.5,3.88,6.07,0,0,0,10.02,5.684828,51.513836390245956,65.48206431881009,35.47265625,0.319022770398482,0.9515669515669516,0.19692603266090297,0.72682738025748,0.17206422119404569,proxy
|
||||||
|
haproxy-splice,http-close-1k,0,0.15804137472,15517.31,3.87,5.59,0,0,0,10.07,5.737175,50.97399345122579,64.25103203618986,35.76171875,0.3325426944971537,0.959047619047619,0.2037037037037037,0.7563857876568768,0.18825061740562968,proxy
|
||||||
|
3proxy-devel-s0,stream1,1,19.03073365477215,nan,nan,nan,0,0,0,10.02,6.8042549999999995,0.421141972891027,nan,6.015625,0.10961298377028714,0.9970149253731343,0.28254185172531604,0.27539749837283634,0.5115315206684911,proxy
|
||||||
|
3proxy-devel-s1,stream1,1,19.53113154586653,nan,nan,nan,0,0,0,9.99,6.796412,0.4090861102193498,nan,6.02734375,0.12839690850162055,0.998001998001998,0.2811327192084613,0.31667574421913675,0.5011468813782385,proxy
|
||||||
|
3proxy-devel-s3,stream1,1,30.481930557323206,nan,nan,nan,0,0,0,9.99,5.168436,0.26212801185557927,nan,8.83984375,0.2026355047240179,0.998001998001998,0.36302065695902475,0.5474108125276388,0.7513007753978594,proxy
|
||||||
|
haproxy,stream1,1,9.52286579106004,nan,nan,nan,0,0,0,10.03,6.4630540000000005,0.8422058898133117,nan,30.8671875,0.07110582639714626,0.9507109004739337,0.25626461744069495,0.15700407099760288,0.4317086700256053,proxy
|
||||||
|
haproxy-splice-response,stream1,1,9.923060135713985,nan,nan,nan,0,0,0,10.0,6.603758,0.8060127758673513,nan,37.6015625,0.07158145065398336,0.9514747859181731,0.2477933965348153,0.16177087908697213,0.4517058171837601,proxy
|
||||||
|
haproxy-splice,stream1,1,32.40787644894179,nan,nan,nan,0,0,0,9.96,5.296882999999999,0.24579902808102863,nan,41.5390625,0.16979785969084424,0.9467680608365019,0.3493195074530136,0.4815135065525603,0.7018422967071395,proxy
|
||||||
|
direct,stream1,1,45.54215223999863,nan,nan,nan,0,0,0,6.45,0.0,0.11328436365147103,nan,0.0,0.26806701675418854,0.673277661795407,0.3343568747867622,0.7042953191432199,0.7456932823524565,none
|
||||||
|
3proxy-devel-s0,stream16,1,19.20837020301076,nan,nan,nan,0,0,756,10.03,7.100923,0.416693405947613,nan,93.85546875,0.13563327032136105,0.9525166191832859,0.26590909090909093,0.34599426697939994,0.47396307125763265,proxy
|
||||||
|
3proxy-devel-s1,stream16,1,19.04389393623892,nan,nan,nan,0,0,755,10.04,7.092061,0.42021165027538987,nan,96.03125,0.14279015240328252,0.9534662867996201,0.26926829268292685,0.34870123765856625,0.48039766805254897,proxy
|
||||||
|
3proxy-devel-s3,stream16,1,32.312037265531885,nan,nan,nan,0,0,740,10.02,5.193673,0.24764983803427731,nan,87.2890625,0.1979586992641823,0.9524714828897338,0.3504657886283328,0.5731720292292737,0.7655755400196378,proxy
|
||||||
|
haproxy,stream16,1,8.838810636282199,nan,nan,nan,0,0,1,10.01,6.335017,0.9054936419749885,nan,58.34375,0.07725219871642501,0.9506172839506173,0.3335637746284134,0.1635108949612568,0.5870389091305132,proxy
|
||||||
|
haproxy-splice-response,stream16,1,9.118261772261963,nan,nan,nan,0,0,11,10.0,6.335927000000001,0.8768713472766558,nan,55.9140625,0.083828069342199,0.9505703422053232,0.3649025069637883,0.17299556528563237,0.6285330698378542,proxy
|
||||||
|
haproxy-splice,stream16,1,33.777623619706226,nan,nan,nan,0,0,16,10.02,5.168037,0.23721268874895274,nan,58.0546875,0.24017155110793423,0.9506641366223909,0.5829111786558595,0.5940301178690139,1.171049308674524,origin
|
||||||
|
direct,stream16,1,158.7835683300083,nan,nan,nan,0,0,5769,8.81,0.0,0.044363415077372834,nan,0.0,0.942964824120603,0.8989795918367347,0.9910269192422732,3.0087516672094026,2.55830370641458,origin
|
||||||
|
3proxy-devel-s0,stream1-down,1,19.454098434850913,nan,nan,nan,0,0,0,9.99,6.960294,0.41076832193753404,nan,9.72265625,0.21548223350253806,0.998001998001998,0.1614824619457313,0.49753788320264997,0.3163528134938561,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,1,25.497514699593314,nan,nan,nan,0,0,0,10.02,5.16952,0.31435029217244614,nan,7.640625,0.23147477673183683,0.9515669515669516,0.1636828644501279,0.6308930452730215,0.35931608674704296,proxy
|
||||||
|
3proxy-devel-s3,stream1-down,1,29.79568789634541,nan,nan,nan,0,0,0,9.99,5.234784,0.2681982496100678,nan,8.86328125,0.2642369020501139,0.9970059880239521,0.21746403479424556,0.683366034132144,0.4762199709838256,proxy
|
||||||
|
haproxy,stream1-down,1,9.54585509813062,nan,nan,nan,0,0,0,9.99,6.513092,0.8371334420752972,nan,32.5234375,0.19990248659190638,0.950523311132255,0.08719086873811034,0.4643805955456297,0.1512008990238311,proxy
|
||||||
|
haproxy-splice-response,stream1-down,1,32.11154304363737,nan,nan,nan,0,0,0,10.01,5.422752,0.24935429702294853,nan,44.171875,0.2785515320334262,0.999001996007984,0.24917053749170537,0.7193251456146256,0.5400793949046443,proxy
|
||||||
|
haproxy-splice,stream1-down,1,32.641387823250035,nan,nan,nan,0,0,0,9.99,5.382465,0.24481699628101664,nan,44.14453125,0.2725659229208925,0.999,0.23877618889258398,0.7073367470044389,0.5191708103795882,proxy
|
||||||
|
direct,stream1-down,1,47.363695320783485,nan,nan,nan,0,0,0,6.27,0.0,0.10589250484995372,nan,0.0,0.25694621463165945,0.6544885177453027,0.35456971314209473,0.7103559838142272,0.7357656907725375,none
|
||||||
|
3proxy-devel-s0,http-ka-1k,1,0.1954545664,19480.77,3.11,8.24,0,0,0,10.11,7.478095000000001,41.38046068183342,51.38500635324015,9.6796875,0.17119694802098234,0.9601139601139601,0.26912,0.38913905482058053,0.2280820848385461,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,1,0.17012097024,16958.97,3.64,7.07,0,0,0,10.08,7.756333000000001,47.40156365569526,58.85100420364316,9.73828125,0.16345467523197715,0.96,0.23809523809523808,0.3606032261900403,0.22629640338001347,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,1,0.14814281728,14764.85,4.17,8.87,0,0,0,10.09,7.92054,54.48796065990409,67.66226537824481,9.78125,0.14910820451843043,0.9591254752851711,0.22264752791068582,0.32440564939346167,0.18538346354658058,proxy
|
||||||
|
haproxy,http-ka-1k,1,0.37211865088,37092.77,1.61,2.56,0,0,0,10.1,6.972002000000001,21.7135044988799,26.959573985345738,29.5078125,0.2174637163930526,0.9600760456273765,0.399439601494396,0.5574736779075283,0.3251224826925694,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,1,0.38872809472000003,38750.12,1.57,2.38,0,0,0,10.0,6.907742,20.579937773117177,25.792074611313435,35.62890625,0.22426120114394663,0.9505703422053232,0.38711694809255787,0.5812984006239967,0.3669708020229753,proxy
|
||||||
|
haproxy-splice,http-ka-1k,1,0.38520487936000003,38394.93,1.59,2.53,0,0,0,10.1,7.005531,20.97585060039879,26.04441991856606,35.5703125,0.2233890214797136,0.9600760456273765,0.38848920863309355,0.5774664003819621,0.3240608870042164,proxy
|
||||||
|
direct,http-ka-1k,1,1.28790298624,125969.8,0.465,0.88,0,0,0,8.03,0.0,4.987953338593231,6.31142438552035,0.0,0.5554994954591322,0.7911330049261084,0.9590865842055185,1.6123151826434574,0.8341077538159659,origin
|
||||||
|
3proxy-devel-s0,http-ka-1m,1,17.52346656768,2085.75,7.32,16.05,0,0,0,10.01,6.934069,0.45698720450494806,479.45205479452056,16.9609375,0.34888103651354535,0.9524262607040913,0.1506720850265708,1.088391926396938,0.10743430971326655,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,1,24.56721293312,2930.8,5.13,11.94,0,0,0,10.01,6.23446,0.3259629011154175,341.06783876793077,19.4140625,0.436819687647894,0.9524262607040913,0.20317361543248288,1.4698893663336614,0.18540268510764865,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,1,23.79411881984,2832.29,5.36,11.91,0,0,0,10.02,6.27973,0.3368899710341911,353.4391534391534,16.56640625,0.4226317032837231,0.9524714828897338,0.1976925475522295,1.4079643136156588,0.20250309964218255,client
|
||||||
|
haproxy,http-ka-1m,1,7.7309411328,924.9,19.11,25.34,0,0,0,9.98,5.255472,1.0327332549624975,1078.8022916441466,45.5703125,0.3698153599143698,0.997002997002997,0.07263681592039802,0.8620304812457132,0.052901907749902596,proxy
|
||||||
|
haproxy-splice-response,http-ka-1m,1,28.43268349952,3386.59,4.5,6.96,0,0,0,10.02,5.860171,0.2819290694153201,295.7235191689048,51.3125,0.4864670658682635,0.9515669515669516,0.2144646211646838,1.6278445938678148,0.15585741558312555,client
|
||||||
|
haproxy-splice,http-ka-1m,1,25.94160246784,3092.2,4.96,7.82,0,0,0,9.99,5.880381,0.3080765735234646,322.93518668175204,51.27734375,0.4692159692159692,0.9514285714285714,0.1922835633626098,1.5441547102811608,0.18822358401489703,client
|
||||||
|
direct,http-ka-1m,1,67.25918785536,8019.97,1.34,2.69,0,0,0,6.01,0.0,0.0714846573874716,74.8471300297645,0.0,0.9455410225921522,0.5840621963070942,0.5243597751405371,3.5555038895581252,0.5123529448958959,client
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,1,4.0487616511999995,9840.18,52.78,99.11,0,264,0,10.46,7.268441,2.066804796355408,105.52865213882163,164.71484375,0.1847903340440654,0.9961904761904762,0.2703808624488511,0.46332691475186094,0.17968308350711779,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,1,3.58604603392,8715.53,46.43,101.61,0,223,0,10.46,7.629646,2.3334892862077186,119.1126901703562,120.65625,0.16477003319108582,0.9952426260704091,0.2452948557089084,0.407206812619395,0.16061743088064853,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,1,3.13717161984,7624.66,54.67,127.7,0,314,0,10.46,7.749003999999999,2.6673708084949395,136.13587557753627,146.4140625,0.15384615384615385,0.9952426260704091,0.22693032015065914,0.368184802773134,0.14735635026813118,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,1,2.99674632192,7178.41,263.32,842.86,0,0,0,10.16,5.9884260000000005,2.7122749565243254,140.41488729494037,181.42578125,0.23980075901328274,0.9639468690702088,0.19041653617287818,0.4880450758033609,0.12545220455379108,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,1,3.6067658956799997,8706.37,218.42,646.15,0,0,0,10.13,6.007440000000001,2.2468882745360763,115.56671039872226,191.1015625,0.24056043695084303,0.9629277566539924,0.22575615840349236,0.5232291269459143,0.14354447940572476,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,1,3.70088607744,8930.12,216.19,525.91,0,0,0,10.16,6.085102,2.196230802549413,113.06854223933583,197.984375,0.24319848592382304,0.9648622981956315,0.21962616822429906,0.5213552104500473,0.14261711709342764,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,1,26.6287972352,64680.84,27.9,62.88,0,147,0,8.68,0.0,0.260770320892334,13.327989853530305,0.0,0.7359537014709429,0.8830111902339777,0.9430018999366688,2.330217501136078,0.7878960348622462,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,1,0.050331648,4939.81,12.14,20.84,0,0,0,10.07,7.035455,160.05833943684897,203.62356937760342,94.296875,0.1447835344215756,0.956315289648623,0.1645489199491741,0.29302739251147975,0.08173053409934465,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,1,0.048737812479999996,4785.45,12.62,21.7,0,0,0,10.03,7.0636779999999995,164.63603087013232,209.2766081749327,29.56640625,0.13607219187841368,0.9516129032258065,0.15640862944162437,0.2768690069756313,0.07603578961303394,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,1,0.04001366016,3927.46,15.43,29.14,0,0,0,10.0,7.103312,199.93172251703356,254.31703161160704,29.05859375,0.12345385347288297,0.9514747859181731,0.1455816910362365,0.2464187885749304,0.07130975150641841,proxy
|
||||||
|
haproxy,http-close-1k,1,0.1568669696,15406.84,3.81,5.78,0,0,0,10.11,5.73642,51.55961143779245,64.97304036554566,30.5390625,0.34042050555161824,0.9601139601139601,0.21192893401015228,0.7696089337629411,0.18442246672521745,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,1,0.13681819648,13431.29,4.23,6.39,0,0,0,10.02,5.684278,58.58869804040849,74.55135263831434,38.82421875,0.3010191988622896,0.9515669515669516,0.18531580634818853,0.6783154604836974,0.1720774269403825,proxy
|
||||||
|
haproxy-splice,http-close-1k,1,0.15997075456,15708.45,3.9,5.49,0,0,0,10.11,5.735231000000001,50.559241420383785,63.723574571079205,41.48046875,0.33745247148288976,0.9601139601139601,0.20338441890166029,0.7724084641697052,0.21291653797387475,proxy
|
||||||
|
direct,http-close-1k,1,0.47714402304000003,46848.77,0.6890000000000001,4.34,0,0,0,8.9,0.0,14.9221192264691,18.80934718884796,0.0,0.6699346405228758,0.9213250517598344,0.8387835186396337,1.8660633554427881,0.537949761693104,client
|
||||||
|
3proxy-devel-s1,stream1,2,19.460706796087003,nan,nan,nan,0,0,0,10.01,6.81095,0.4113867047570984,nan,5.73828125,0.11880483756224805,0.9515209125475285,0.2578759337447223,0.3073460314592471,0.4725699173434711,proxy
|
||||||
|
3proxy-devel-s3,stream1,2,31.95813667025285,nan,nan,nan,0,0,1,9.99,5.199859999999999,0.25002017860555004,nan,9.578125,0.184015314668581,0.9514285714285714,0.34635248547449965,0.5594977754397917,0.7197510034410624,proxy
|
||||||
|
haproxy,stream1,2,9.547148680464996,nan,nan,nan,0,0,0,10.01,6.482998,0.8384318207627048,nan,33.30078125,0.07035892560019016,0.9515209125475285,0.29044962257958645,0.1598605944740029,0.49331794608728874,proxy
|
||||||
|
haproxy-splice-response,stream1,2,9.70418423252907,nan,nan,nan,0,0,0,10.01,6.554317,0.824919682193721,nan,36.80078125,0.07210851975249881,0.9515209125475285,0.25,0.16937197920556168,0.4240727894833117,proxy
|
||||||
|
haproxy-splice,stream1,2,30.315374680786938,nan,nan,nan,0,0,1,10.01,5.425144,0.2640741329799879,nan,42.79296875,0.17273376159885795,0.9497153700189753,0.34108527131782945,0.5024062682800922,0.7090950230151298,proxy
|
||||||
|
direct,stream1,2,46.16882816961793,nan,nan,nan,0,0,0,6.56,0.0,0.11365176584463065,nan,0.0,0.27445584188141103,0.6869109947643979,0.3446982611660416,0.7221567700430666,0.7675503061365645,none
|
||||||
|
3proxy-devel-s0,stream1,2,18.461107523773826,nan,nan,nan,0,0,0,9.99,6.9583829999999995,0.43281138091180243,nan,7.1484375,0.12071816678478621,0.950523311132255,0.2683560753736192,0.31399872469524126,0.4639908552002264,proxy
|
||||||
|
3proxy-devel-s1,stream16,2,18.020074270836272,nan,nan,nan,0,0,727,10.05,7.051068,0.44479426767601693,nan,96.1796875,0.1385443482330915,0.9535104364326376,0.2593192868719611,0.3279261451071528,0.4596744414757201,proxy
|
||||||
|
3proxy-devel-s3,stream16,2,30.639976959391845,nan,nan,nan,0,0,684,10.03,5.143437,0.26150564255986347,nan,78.3515625,0.18478002378121283,0.9516129032258065,0.34071222329162654,0.534247194747567,0.7434127715086754,proxy
|
||||||
|
haproxy,stream16,2,9.366291333752915,nan,nan,nan,0,0,33,10.01,6.3226759999999995,0.8546738804088421,nan,48.78515625,0.08297669995244888,0.9506172839506173,0.37302423603793466,0.1739761258305773,0.6459595372797895,proxy
|
||||||
|
haproxy-splice-response,stream16,2,9.402789198025244,nan,nan,nan,0,0,10,10.02,6.383591999999999,0.8520282781797867,nan,63.23046875,0.08499525166191833,0.9497630331753555,0.3852372583479789,0.1749024975696716,0.6569749348187767,proxy
|
||||||
|
haproxy-splice,stream16,2,33.270384987816755,nan,nan,nan,0,0,6,10.0,5.135771,0.24031102845061109,nan,63.9765625,0.26432970156324015,0.9505703422053232,0.6186612576064908,0.6300992880604515,1.245976808537982,origin
|
||||||
|
direct,stream16,2,140.70515443427354,nan,nan,nan,0,0,5102,8.61,0.0,0.04894226677896884,nan,0.0,0.9261964735516373,0.8758901322482198,0.9903814262023217,2.9205099931336904,2.5546118362716292,origin
|
||||||
|
3proxy-devel-s0,stream16,2,19.19533298049565,nan,nan,nan,0,0,855,10.05,7.102291999999999,0.4174765606709127,nan,90.58984375,0.14151386929948284,0.9535104364326376,0.26768332251784555,0.349868959159798,0.4749019705350233,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,2,33.04237918250702,nan,nan,nan,0,0,0,9.99,5.265986,0.24184486600768362,nan,11.48828125,0.2806174089068826,0.9970059880239521,0.2515010006671114,0.7382630929315407,0.5689236944620164,proxy
|
||||||
|
3proxy-devel-s3,stream1-down,2,30.702375569014116,nan,nan,nan,0,0,0,9.89,5.236485999999999,0.257672357918747,nan,11.5546875,0.2807371875788942,0.9870259481037924,0.21238640188488725,0.7642588465551465,0.5021358119586412,proxy
|
||||||
|
haproxy,stream1-down,2,9.59741366941687,nan,nan,nan,0,0,0,10.0,6.579014,0.8334674704767419,nan,33.640625,0.22695584817970565,0.998003992015968,0.09580838323353294,0.4623375956264977,0.17263832546095242,proxy
|
||||||
|
haproxy-splice-response,stream1-down,2,32.288009365410076,nan,nan,nan,0,0,1,9.99,5.336526,0.24749606717600786,nan,41.56640625,0.2938196555217832,0.998001998001998,0.22143817204301075,0.7322595357015679,0.5141269913089749,proxy
|
||||||
|
haproxy-splice,stream1-down,2,33.093784635370206,nan,nan,nan,0,0,0,10.01,5.277381999999999,0.24195361569450163,nan,41.25,0.2582669563118513,0.9515209125475285,0.25260498894853173,0.7070112036477109,0.5410891387014686,proxy
|
||||||
|
direct,stream1-down,2,46.95447858195746,nan,nan,nan,0,0,0,6.37,0.0,0.10851921035205095,nan,0.0,0.26443768996960487,0.6649269311064718,0.3598800399866711,0.7573401831395081,0.7468296421635207,none
|
||||||
|
3proxy-devel-s0,stream1-down,2,18.62370518271996,nan,nan,nan,0,0,0,10.0,6.80107,0.42951530903067087,nan,6.98828125,0.20619603859827323,0.998003992015968,0.1573889993373095,0.45951622824452887,0.30343601453730346,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,2,0.14336131072,14287.74,4.11,8.84,0,0,0,10.1,7.718984,56.36109184144602,69.9916148659418,9.70703125,0.14826273203236554,0.9582542694497154,0.21959026888604352,0.3206292777436968,0.19014004903072662,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,2,0.14923333632,14873.8,4.11,9.25,0,0,0,10.06,7.911275,53.92896921330453,66.9688920842237,9.78125,0.1516813737181016,0.9571836346336822,0.22693903606766677,0.33300257792322757,0.1825431112167922,proxy
|
||||||
|
haproxy,http-ka-1k,2,0.385875968,38460.77,1.58,2.52,0,0,0,10.11,6.997935,20.96010291058084,26.026984654119136,31.26171875,0.2299809342230696,0.9601139601139601,0.3968154854823603,0.5917271665800499,0.35079642373538045,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,2,0.35685138432,35570.7,1.68,2.75,0,0,0,10.11,6.9858139999999995,22.664897364520893,28.141022429313427,35.59765625,0.215,0.9610266159695817,0.3744907552491382,0.5451497413033163,0.3308683890457966,proxy
|
||||||
|
haproxy-splice,http-ka-1k,2,0.35072770048,34961.72,1.74,2.77,0,0,0,10.1,7.099559,23.037815344901038,28.605334186773007,35.53515625,0.20946915351506457,0.9609895337773549,0.3789670192906036,0.5385144260599876,0.3213769805971398,proxy
|
||||||
|
direct,http-ka-1k,2,1.30451243008,127595.2,0.512,0.9,0,0,0,8.38,0.0,5.139084799359768,6.502682162397892,0.0,0.5618661257606491,0.857727737973388,0.9562737642585551,1.6638270657422356,0.8436830949512779,origin
|
||||||
|
3proxy-devel-s0,http-ka-1k,2,0.18639486976,18583.64,3.23,6.87,0,0,0,10.09,7.502314,43.30591292771855,53.757139203818944,9.984375,0.17614853606284217,0.960952380952381,0.2658591010519605,0.39198490160608823,0.2158252998070394,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1m,2,26.11340115968,3113.98,4.89,10.44,0,0,0,10.01,6.225759,0.30666246618095194,321.15242709101994,16.42578125,0.45114198257593596,0.9524262607040913,0.2119514472455649,1.5078911239023824,0.1416532352312387,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,2,26.027501813759997,3098.46,4.9,10.43,0,0,0,10.01,6.271611,0.3076745535280838,322.6846329905548,18.4765625,0.4512166312308056,0.9524262607040913,0.20870917573872472,1.5137372539793876,0.1549652885522965,client
|
||||||
|
haproxy,http-ka-1m,2,7.21529339904,859.71,19.82,24.31,0,0,0,10.11,5.271164000000001,1.1209523373056618,1164.3441206956122,45.015625,0.3303030303030303,0.9601139601139601,0.06862745098039216,0.8010778581657361,0.044683886873217324,proxy
|
||||||
|
haproxy-splice-response,http-ka-1m,2,27.74548873216,3305.68,4.64,7.36,0,0,0,10.0,5.864785,0.2883351624196528,302.33401862377553,51.32421875,0.49252651880424303,0.9514747859181731,0.20888055034396497,1.6316151063691278,0.16732687276849526,client
|
||||||
|
haproxy-splice,http-ka-1m,2,26.37109919744,3146.87,4.71,8.42,0,0,0,10.0,5.907016,0.30336240215487903,317.6115610608226,51.36328125,0.48265060240963853,0.9514747859181731,0.2013170272812794,1.5830998010045267,0.1644870139479281,client
|
||||||
|
direct,http-ka-1m,2,64.68220747776,7710.34,1.38,2.68,0,0,0,6.15,0.0,0.07606419434110483,79.62608110207675,0.0,0.9446161159971476,0.5942028985507246,0.535435529191383,3.552113036807283,0.4452050881872812,client
|
||||||
|
3proxy-devel-s0,http-ka-1m,2,17.35166787584,2068.88,7.33,16.67,0,0,0,10.02,6.932848000000001,0.46197288107163836,483.730810080139,17.2421875,0.35457324241711735,0.9515669515669516,0.1571875,1.1025838934919743,0.12833954124642324,client
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,2,3.44050368512,8361.83,53.12,123.6,0,357,0,10.48,7.57941,2.4368524981561177,124.56615794228118,160.96484375,0.1707721459024159,0.9961977186311787,0.2540880503144654,0.41668664213565426,0.1597138074505042,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,2,2.85103620096,6929.07,60.25,126.43,0,323,0,10.48,7.661716,2.9406852137398127,150.1325119977079,143.328125,0.1466603280247207,0.9952516619183286,0.2219083490269931,0.3539078204913683,0.13690133799925638,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,2,2.8979285196799998,6934.44,269.62,813.2,0,0,0,10.12,6.051574,2.7937197018558586,144.9524464306176,180.29296875,0.24976190476190477,0.9619771863117871,0.1926806380982171,0.5136741950540885,0.12072391659634894,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,2,3.4263269376,8290.71,215.76,961.43,0,0,0,10.14,5.998766,2.367549900442986,121.52153591716402,189.671875,0.22850356294536817,0.9647954329210275,0.21896444167186524,0.4937350854709511,0.13783791048585062,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,2,3.76338120704,9111.59,208.76,559.94,0,0,0,10.16,6.003553,2.1597599479944494,110.82870638028645,194.00390625,0.24904942965779467,0.9648622981956315,0.2349641632907448,0.5470138075507407,0.1521004174389673,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,2,27.31599200256,66458.99,27.47,44.28,0,22,0,8.82,0.0,0.25831022352542515,13.20108302762798,0.0,0.7534478586982821,0.9158878504672897,0.9549920760697306,2.4151540166905456,0.8031685413114039,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,2,3.92268087296,9533.61,52.91,126.05,0,214,0,10.49,7.2718929999999995,2.1393532310640184,109.31182526780876,162.71484375,0.18108556529983408,0.997148288973384,0.27204502814258913,0.4585054210521386,0.18529447186781178,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,2,0.047647293439999995,4679.83,12.8,22.42,0,0,0,10.03,7.1012830000000005,168.40410904145577,213.900322023416,55.19921875,0.1408216575635241,0.9534220532319392,0.16040738383195416,0.2854323479659474,0.07986373536240256,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,2,0.04563402752,4480.67,13.42,22.74,0,0,0,9.99,7.146518,175.13247097239773,222.69778639737845,38.70703125,0.13810316139767054,0.9514285714285714,0.1610034931724357,0.2797102369549026,0.0789084780629264,proxy
|
||||||
|
haproxy,http-close-1k,2,0.16366174208,16073.8,3.82,5.4,0,0,0,10.03,5.689025,49.02795178654375,62.33840493237868,29.38671875,0.34765068818224965,0.9516129032258065,0.2133676092544987,0.8019320843617179,0.18061427611053318,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,2,0.15275655168000002,15001.69,4.01,5.74,0,0,0,10.11,5.752631,52.94699252535522,66.72738792966894,35.4453125,0.3222827373904807,0.9610266159695817,0.1998084902649218,0.72874555766995,0.17397332213459915,proxy
|
||||||
|
haproxy-splice,http-close-1k,2,0.15661531136,15378.8,3.87,6.22,0,0,0,10.11,5.722536,51.642460304591246,65.09100507980247,35.3515625,0.34539862786846465,0.9601139601139601,0.21547314578005114,0.7819750986780002,0.2281534392018871,proxy
|
||||||
|
direct,http-close-1k,2,0.44182798336,43382.27,0.96,4.45,0,0,0,8.43,0.0,15.263858908875424,19.239854571348364,0.0,0.6722235842118166,0.8646153846153846,0.8494345718901454,1.813771219050329,0.558874970807077,client
|
||||||
|
3proxy-devel-s0,http-close-1k,2,0.0486539264,4775.56,12.56,21.96,0,0,0,10.03,7.001541,164.91988609577047,209.67472196671963,40.96875,0.13990498812351543,0.9534220532319392,0.16428344455036542,0.2892214286563271,0.0808064950394836,proxy
|
||||||
|
153
bench/report.py
153
bench/report.py
@ -19,13 +19,24 @@ appears in, so a later run can add proxies, and a proxy it repeats (run again
|
|||||||
to see how much the conditions moved between the runs) is left out.
|
to see how much the conditions moved between the runs) is left out.
|
||||||
|
|
||||||
--label old=new renames a column, e.g. --label 3proxy-devel-s="devel, splice".
|
--label old=new renames a column, e.g. --label 3proxy-devel-s="devel, splice".
|
||||||
|
|
||||||
|
--machine NAME=a.csv,b.csv, given once per machine, makes a single table of
|
||||||
|
throughput instead: each cell the machines' medians and their average. The
|
||||||
|
best average of each group (no splice, splice) is in bold, and so is any other
|
||||||
|
of the group whose range (the average of its slowest runs to that of its
|
||||||
|
fastest) reaches the best one's; * marks the best of the row, both groups
|
||||||
|
together, in the same way. --split puts the splice group in a table of its own
|
||||||
|
(* still compares across both), --prefix connect- takes only the scenarios so
|
||||||
|
named.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import csv
|
import csv
|
||||||
import statistics
|
import statistics
|
||||||
|
|
||||||
STREAM = ("stream1", "stream1-down", "stream16")
|
STREAM = ("stream1", "stream1-down", "stream16", "connect-stream1-down", "connect-stream16",
|
||||||
|
"socks-stream1-down", "socks-stream16", "relay-stream1-down", "relay-stream16")
|
||||||
|
# connect-ka-1m etc. are bulk too when present
|
||||||
|
|
||||||
|
|
||||||
def values(rows, key):
|
def values(rows, key):
|
||||||
@ -93,9 +104,133 @@ def table(title, scenarios, groups, labels, cell, best):
|
|||||||
return "\n".join(out) + "\n"
|
return "\n".join(out) + "\n"
|
||||||
|
|
||||||
|
|
||||||
|
def load(paths):
|
||||||
|
"""Rows of several CSVs, a proxy taken from the first file it is in."""
|
||||||
|
rows, seen = [], set()
|
||||||
|
for path in paths:
|
||||||
|
new = list(csv.DictReader(open(path)))
|
||||||
|
rows += [r for r in new if r["proxy"] not in seen]
|
||||||
|
seen |= {r["proxy"] for r in new}
|
||||||
|
return rows
|
||||||
|
|
||||||
|
|
||||||
|
# In the combined table, the bulk scenarios in Gbit/s, the others in
|
||||||
|
# thousands of requests per second.
|
||||||
|
BULK = STREAM + ("http-ka-1m",)
|
||||||
|
|
||||||
|
|
||||||
|
def combined(machines, labels, splice, prefix=None, split=False):
|
||||||
|
"""One throughput table for several machines: each cell their medians
|
||||||
|
and their average. Bold: the best of its group; *: the best of the row.
|
||||||
|
split puts the proxies using splice() in a table of their own, * still
|
||||||
|
comparing across both."""
|
||||||
|
data, proxies, scenarios = {}, [], []
|
||||||
|
for name, paths in machines:
|
||||||
|
by = {}
|
||||||
|
for r in load(paths):
|
||||||
|
if prefix and not r["scenario"].startswith(prefix):
|
||||||
|
continue
|
||||||
|
by.setdefault((r["scenario"], r["proxy"]), []).append(r)
|
||||||
|
if r["proxy"] not in proxies:
|
||||||
|
proxies.append(r["proxy"])
|
||||||
|
if r["scenario"] not in scenarios:
|
||||||
|
scenarios.append(r["scenario"])
|
||||||
|
data[name] = by
|
||||||
|
|
||||||
|
def runs(name, s, p):
|
||||||
|
sel = data[name].get((s, p), [])
|
||||||
|
if s in BULK:
|
||||||
|
return values(sel, "gbit")
|
||||||
|
return [x / 1000 for x in values(sel, "rate")]
|
||||||
|
|
||||||
|
def value(name, s, p):
|
||||||
|
xs = runs(name, s, p)
|
||||||
|
return statistics.median(xs) if xs else None
|
||||||
|
|
||||||
|
def average(s, p):
|
||||||
|
xs = [value(n, s, p) for n, _ in machines]
|
||||||
|
return sum(xs) / len(xs) if xs and None not in xs else None
|
||||||
|
|
||||||
|
def spread(s, p):
|
||||||
|
"""The range of the average: of the slowest runs to of the fastest."""
|
||||||
|
lows, highs = [], []
|
||||||
|
for n, _ in machines:
|
||||||
|
xs = runs(n, s, p)
|
||||||
|
if not xs:
|
||||||
|
return None
|
||||||
|
lows.append(min(xs))
|
||||||
|
highs.append(max(xs))
|
||||||
|
return sum(lows) / len(lows), sum(highs) / len(highs)
|
||||||
|
|
||||||
|
def leaders(s, ps):
|
||||||
|
"""The best average, and those whose range reaches the best one's:
|
||||||
|
the runs cannot tell them apart."""
|
||||||
|
known = {p: average(s, p) for p in ps if p != "direct"}
|
||||||
|
known = {p: a for p, a in known.items() if a is not None}
|
||||||
|
if not known:
|
||||||
|
return set()
|
||||||
|
floor = spread(s, max(known, key=known.get))[0]
|
||||||
|
return {p for p in known if spread(s, p)[1] >= floor}
|
||||||
|
|
||||||
|
plain = [p for p in proxies if p != "direct" and p not in splice]
|
||||||
|
spliced = [p for p in proxies if p in splice]
|
||||||
|
direct = [p for p in proxies if p == "direct"]
|
||||||
|
names = " / ".join(n for n, _ in machines) + " / average"
|
||||||
|
|
||||||
|
def render(tables):
|
||||||
|
"""tables: lists of groups, each table printed on its own; bold for
|
||||||
|
the best of a group, * for the best of the row over all of them."""
|
||||||
|
everyone = [p for t in tables for g in t for p in g]
|
||||||
|
for t in tables:
|
||||||
|
head, rule = [], []
|
||||||
|
for i, g in enumerate(t):
|
||||||
|
if i:
|
||||||
|
head.append("‖")
|
||||||
|
rule.append(":-:")
|
||||||
|
head += [labels.get(p, p) for p in g]
|
||||||
|
rule += ["---:"] * len(g)
|
||||||
|
out = [f"| scenario ({names}) | " + " | ".join(head) + " |",
|
||||||
|
"|---|" + "|".join(rule) + "|"]
|
||||||
|
for s in scenarios:
|
||||||
|
unit = "Gbit/s" if s in BULK else "k req/s"
|
||||||
|
overall = leaders(s, everyone)
|
||||||
|
cells = []
|
||||||
|
for i, g in enumerate(t):
|
||||||
|
if i:
|
||||||
|
cells.append("‖")
|
||||||
|
best = leaders(s, g)
|
||||||
|
for p in g:
|
||||||
|
vals = [value(n, s, p) for n, _ in machines] + [average(s, p)]
|
||||||
|
if all(v is None for v in vals):
|
||||||
|
cells.append("–")
|
||||||
|
continue
|
||||||
|
text = " / ".join(fmt(v, 1) for v in vals)
|
||||||
|
if p in best:
|
||||||
|
text = f"**{text}**"
|
||||||
|
if p in overall:
|
||||||
|
text += " *"
|
||||||
|
cells.append(text)
|
||||||
|
name = s[len(prefix):] if prefix else s
|
||||||
|
out.append(f"| {name}, {unit} | " + " | ".join(cells) + " |")
|
||||||
|
print("\n".join(out))
|
||||||
|
print()
|
||||||
|
|
||||||
|
if split and spliced:
|
||||||
|
render([[g for g in (direct, plain) if g], [spliced]])
|
||||||
|
else:
|
||||||
|
render([[g for g in (direct, plain, spliced) if g]])
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
ap = argparse.ArgumentParser()
|
ap = argparse.ArgumentParser()
|
||||||
ap.add_argument("csv", nargs="+")
|
ap.add_argument("csv", nargs="*")
|
||||||
|
ap.add_argument("--split", action="store_true",
|
||||||
|
help="the proxies using splice() in a table of their own")
|
||||||
|
ap.add_argument("--prefix", help="only the scenarios named so, e.g. connect- "
|
||||||
|
"(the prefix is left out of the rows)")
|
||||||
|
ap.add_argument("--machine", action="append", default=[],
|
||||||
|
help="NAME=a.csv[,b.csv]: one throughput table for all the "
|
||||||
|
"machines given, instead of the tables for one")
|
||||||
ap.add_argument("--label", action="append", default=[], help="old=new")
|
ap.add_argument("--label", action="append", default=[], help="old=new")
|
||||||
ap.add_argument("--title", default="")
|
ap.add_argument("--title", default="")
|
||||||
ap.add_argument("--splice", action="append", default=[],
|
ap.add_argument("--splice", action="append", default=[],
|
||||||
@ -103,11 +238,11 @@ def main():
|
|||||||
args = ap.parse_args()
|
args = ap.parse_args()
|
||||||
labels = dict(l.split("=", 1) for l in args.label)
|
labels = dict(l.split("=", 1) for l in args.label)
|
||||||
|
|
||||||
rows, seen = [], set()
|
if args.machine:
|
||||||
for path in args.csv:
|
combined([(m.split("=", 1)[0], m.split("=", 1)[1].split(","))
|
||||||
new = list(csv.DictReader(open(path)))
|
for m in args.machine], labels, args.splice, args.prefix, args.split)
|
||||||
rows += [r for r in new if r["proxy"] not in seen]
|
return
|
||||||
seen |= {r["proxy"] for r in new}
|
rows = load(args.csv)
|
||||||
proxies, scenarios = [], []
|
proxies, scenarios = [], []
|
||||||
for r in rows:
|
for r in rows:
|
||||||
if r["proxy"] not in proxies:
|
if r["proxy"] not in proxies:
|
||||||
@ -137,7 +272,7 @@ def main():
|
|||||||
sel = by.get((s, p), [])
|
sel = by.get((s, p), [])
|
||||||
if p == "direct":
|
if p == "direct":
|
||||||
return "–"
|
return "–"
|
||||||
if s in STREAM or s in ("http-ka-1m", "http-ka-50k-2000"):
|
if s in STREAM or s in ("http-ka-1m", "http-ka-50k-2000", "http-ka-2k-50k-2000"):
|
||||||
return fmt(median(sel, "cpu_s_per_gb"), 2) + " s/GB"
|
return fmt(median(sel, "cpu_s_per_gb"), 2) + " s/GB"
|
||||||
return fmt(median(sel, "cpu_us_per_req"), 0) + " µs/req"
|
return fmt(median(sel, "cpu_us_per_req"), 0) + " µs/req"
|
||||||
|
|
||||||
@ -147,7 +282,7 @@ def main():
|
|||||||
return fmt(median(by.get((s, p), []), "peak_mb"), 0)
|
return fmt(median(by.get((s, p), []), "peak_mb"), 0)
|
||||||
|
|
||||||
def cpukey(s):
|
def cpukey(s):
|
||||||
return "cpu_s_per_gb" if s in STREAM or s in ("http-ka-1m", "http-ka-50k-2000") \
|
return "cpu_s_per_gb" if s in STREAM or s in ("http-ka-1m", "http-ka-50k-2000", "http-ka-2k-50k-2000") \
|
||||||
else "cpu_us_per_req"
|
else "cpu_us_per_req"
|
||||||
|
|
||||||
plain = [p for p in proxies if p != "direct" and p not in args.splice]
|
plain = [p for p in proxies if p != "direct" and p not in args.splice]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user