This repository contains
- Network latency, throughput estimation tools
benchmate
: iperf3, qperf like tool to estimate network throughput, latency.konnectivity-benchmate
: A client to measure throughput, latency of a Konnectivity setup.
- Package to simplify construction of such tools. Read documentation.
- HTTP handlers to quickly add network performance estimation to your services. See example.
benchmate
measures latency and throughput between two nodes. You can run it on one node in the server mode and on
another node in the client mode. If the the client and server can talk to each other, you should get the network
performance stats at the client. This tool supports both TCP and Unix Domain sockets. Quickest way to try this out is using the docker image. If you are go programmer, you can build it yourself from cmd/benchmate
directory.
Demo:
Commands from the demo:
# run server
docker run --rm --network host quay.io/kubermatic-labs/benchmate
# run client
docker run --rm --network host quay.io/kubermatic-labs/benchmate -c
Client for benchmarking Konnectivity. You can
run benchmark server on one node and point konnectivity-benchmate
to the UDS of konnectivity proxy server.
This program demonstrates how you can easily add network performance estimation to your application. For example, if two microservices are communicating over a network, you can measure the latency and throughput of the network. You register HTTP handlers like pprof.
mux := http.NewServeMux()
mux.HandleFunc("/benchmate/throughput", bmHandler.Throughput)
mux.HandleFunc("/benchmate/latency", bmHandler.Latency)
log.Fatal(http.ListenAndServe(addr, mux))
You can then trigger handler on one service to run the server and on the other service to run the client.
Demo:
Commands from the demo:
# run the latency server
curl http://localhost:8888/benchmate/latency --data '
{
"msgSize": 128,
"numMsg": 1000,
"network": "tcp",
"addr": ":13501",
"timeout": 120000
}
'
# run the latency client
curl http://localhost:9999/benchmate/latency --data '
{
"msgSize": 128,
"numMsg": 1000,
"network": "tcp",
"addr": ":13501",
"timeout": 120000,
"client": true
}
'
If you encounter issues file an issue or talk to us on the #kubermatic channel on the Kubermatic Slack.
Thanks for taking the time to join our community and start contributing!
Feedback and discussion are available on the mailing list.
- Please familiarize yourself with the Code of Conduct before contributing.
- See CONTRIBUTING.md for instructions on the developer certificate of origin that we require.
- Read how we're using ZenHub for project and roadmap planning
- We welcome pull requests. Feel free to dig through the issues and jump in.
See the list of releases to find out about feature changes.
These programs are based on programs by Eli Bendersky (https://github.com/eliben). Original programs are in references folder.