mirror of https://github.com/grpc/grpc-java.git
benckmarks: integrated the two README.md
The readme file present at "benchmarks/src/jmh/java/io/grpc/benchmarks/netty/README.md" is integrated with readme at "benchmarks/README.md".
This commit is contained in:
parent
1b792d1ccf
commit
20f712c14a
|
@ -17,6 +17,46 @@ You can now find the client and the server executables in `benchmarks/build/inst
|
||||||
|
|
||||||
The `C++` counterpart can be found at https://github.com/grpc/grpc/tree/master/test/cpp/qps
|
The `C++` counterpart can be found at https://github.com/grpc/grpc/tree/master/test/cpp/qps
|
||||||
|
|
||||||
|
The [netty benchmark](src/jmh/java/io/grpc/benchmarks/netty) directory contains
|
||||||
|
the standard benchmarks used to assess the performance of GRPC. Since these
|
||||||
|
benchmarks run on localhost over loopback the performance of the underlying network is considerably
|
||||||
|
different to real networks and their behavior. To address this issue we recommend the use of
|
||||||
|
a network emulator to make loopback behave more like a real network. To this end the benchmark
|
||||||
|
code looks for a loopback interface with 'benchmark' in its name and attempts to use the address
|
||||||
|
bound to that interface when creating the client and server. If it cannot find such an interface it
|
||||||
|
will print a warning and continue with the default localhost address.
|
||||||
|
|
||||||
|
To attempt to standardize benchmark behavior across machines we attempt to emulate a 10gbit
|
||||||
|
ethernet interface with a packet delay of 0.1ms.
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
On Linux we can use [netem](https://www.linuxfoundation.org/collaborate/workgroups/networking/netem) to shape the traffic appropriately.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Remove all traffic shaping from loopback
|
||||||
|
sudo tc qdisc del dev lo root
|
||||||
|
# Add a priority traffic class to the root of loopback
|
||||||
|
sudo tc qdisc add dev lo root handle 1: prio
|
||||||
|
# Add a qdisc under the new class with the appropriate shaping
|
||||||
|
sudo tc qdisc add dev lo parent 1:1 handle 2: netem delay 0.1ms rate 10gbit
|
||||||
|
# Add a filter which selects the new qdisc class for traffic to 127.127.127.127
|
||||||
|
sudo tc filter add dev lo parent 1:0 protocol ip prio 1 u32 match ip dst 127.127.127.127 flowid 2:1
|
||||||
|
# Create an interface alias call 'lo:benchmark' that maps 127.127.127.127 to loopback
|
||||||
|
sudo ip addr add dev lo 127.127.127.127/32 label lo:benchmark
|
||||||
|
```
|
||||||
|
|
||||||
|
to remove this configuration
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo tc qdisc del dev lo root
|
||||||
|
sudo ip addr del dev lo 127.127.127.127/32 label lo:benchmark
|
||||||
|
```
|
||||||
|
|
||||||
|
### Other Platforms
|
||||||
|
|
||||||
|
Contributions are welcome!
|
||||||
|
|
||||||
## Visualizing the Latency Distribution
|
## Visualizing the Latency Distribution
|
||||||
|
|
||||||
The QPS client comes with the option `--save_histogram=FILE`, if set it serializes the histogram to `FILE` which can then be used with a plotter to visualize the latency distribution. The histogram is stored in the file format of [HdrHistogram](https://hdrhistogram.org/). That way it can be plotted very easily using a browser based tool like https://hdrhistogram.github.io/HdrHistogram/plotFiles.html. Simply upload the generated file and it will generate a beautiful graph for you. It also allows you to plot two or more histograms on the same surface in order two easily compare latency distributions.
|
The QPS client comes with the option `--save_histogram=FILE`, if set it serializes the histogram to `FILE` which can then be used with a plotter to visualize the latency distribution. The histogram is stored in the file format of [HdrHistogram](https://hdrhistogram.org/). That way it can be plotted very easily using a browser based tool like https://hdrhistogram.github.io/HdrHistogram/plotFiles.html. Simply upload the generated file and it will generate a beautiful graph for you. It also allows you to plot two or more histograms on the same surface in order two easily compare latency distributions.
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
Benchmarks
|
|
||||||
==========
|
|
||||||
|
|
||||||
This directory contains the standard benchmarks used to assess the performance of GRPC. Since these
|
|
||||||
benchmarks run on localhost over loopback the performance of the underlying network is considerably
|
|
||||||
different to real networks and their behavior. To address this issue we recommend the use of
|
|
||||||
a network emulator to make loopback behave more like a real network. To this end the benchmark
|
|
||||||
code looks for a loopback interface with 'benchmark' in its name and attempts to use the address
|
|
||||||
bound to that interface when creating the client and server. If it cannot find such an interface it
|
|
||||||
will print a warning and continue with the default localhost address.
|
|
||||||
|
|
||||||
To attempt to standardize benchmark behavior across machines we attempt to emulate a 10gbit
|
|
||||||
ethernet interface with a packet delay of 0.1ms.
|
|
||||||
|
|
||||||
|
|
||||||
Linux
|
|
||||||
=====
|
|
||||||
|
|
||||||
On Linux we can use [netem](https://www.linuxfoundation.org/collaborate/workgroups/networking/netem) to shape the traffic appropriately.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# Remove all traffic shaping from loopback
|
|
||||||
sudo tc qdisc del dev lo root
|
|
||||||
# Add a priority traffic class to the root of loopback
|
|
||||||
sudo tc qdisc add dev lo root handle 1: prio
|
|
||||||
# Add a qdisc under the new class with the appropriate shaping
|
|
||||||
sudo tc qdisc add dev lo parent 1:1 handle 2: netem delay 0.1ms rate 10gbit
|
|
||||||
# Add a filter which selects the new qdisc class for traffic to 127.127.127.127
|
|
||||||
sudo tc filter add dev lo parent 1:0 protocol ip prio 1 u32 match ip dst 127.127.127.127 flowid 2:1
|
|
||||||
# Create an interface alias call 'lo:benchmark' that maps 127.127.127.127 to loopback
|
|
||||||
sudo ip addr add dev lo 127.127.127.127/32 label lo:benchmark
|
|
||||||
```
|
|
||||||
|
|
||||||
to remove this configuration
|
|
||||||
|
|
||||||
```sh
|
|
||||||
sudo tc qdisc del dev lo root
|
|
||||||
sudo ip addr del dev lo 127.127.127.127/32 label lo:benchmark
|
|
||||||
```
|
|
||||||
|
|
||||||
Other Platforms
|
|
||||||
===============
|
|
||||||
|
|
||||||
Contributions welcome!
|
|
||||||
|
|
Loading…
Reference in New Issue