-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
21 changed files
with
1,569 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
# Observatory C++ implementation | ||
|
||
This is the C++ implementation of Observatory, written in C++-11 and using CMake as build system. | ||
|
||
## Build instructions | ||
|
||
Observatory depends on [nlohmann_json](https://github.com/nlohmann/json), [log4cpp](http://log4cpp.sourceforge.net/). Make sure to have these installed, before building Observatory. | ||
|
||
Each Observatory binding can be build into a standalone application. The bindings are located in the subdirectory `bindings`. To build a binding you can run the following command from the project's root directory: | ||
|
||
``` | ||
./build.sh <binding-name> | ||
``` | ||
|
||
For example, to build the `socket-binding` you can run: | ||
|
||
``` | ||
./build.sh socket-binding | ||
``` | ||
|
||
It is also possible to build multiple implementations at once, by providing multiple names, seperated by spaces. | ||
|
||
## Run instructions | ||
|
||
After building a binding you need to change into the build output directory: | ||
|
||
``` | ||
cd build/<binding-subdirectory>/ | ||
``` | ||
|
||
After that, simply run `./bin/observatory/`. | ||
|
||
## Bindings | ||
|
||
The following bindings are implemented for the C++ version of Observatory: | ||
- [Dummy Binding](https://github.com/hhu-bsinfo/observatory/tree/development/cpp/src/bindings/dummy-binding): An example binding, that can be used as a starting point for new implementations. | ||
- [Socket Binding](https://github.com/hhu-bsinfo/observatory/tree/development/cpp/src/bindings/socket-binding): This implementation uses plain sockets and does **not** support RDMA. | ||
- [Verbs Binding](https://github.com/hhu-bsinfo/observatory/tree/development/cpp/src/bindings/verbs-binding): This implementation uses the standard native ibverbs library access InfiniBand hardware. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# Dummy binding for Observatory (C++) | ||
|
||
This binding shall serve as an example and a starting point for new implementations. It is not functional, as each implemented method just returns `Status::NOT_IMPLEMENTED`. | ||
|
||
## Build instructions | ||
|
||
To build Observatory using this binding, run the following command from the `cpp` directory: | ||
|
||
``` | ||
./build.sh dummy-binding | ||
``` | ||
|
||
## Run instructions | ||
|
||
To run Observatory using this binding, change into the build output directory and run the `observatory` executable: | ||
|
||
``` | ||
cd build/dummy-binding/ | ||
./bin/observatory | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# Socket binding for Observatory (C++) | ||
|
||
This binding does not access InfiniBand hardware directly, but uses plain sockets. Its purpose is to be used with InfiniBand solutions, that intercept socket traffic and redirect it over an InfiBand HCA. It does not support RDMA benchmarks. | ||
|
||
The socket binding has been tested with the following InfiniBand solutions: | ||
- [IP over InfiniBand](https://www.ietf.org/rfc/rfc4392.txt) | ||
- [libvma](https://github.com/Mellanox/libvma/) (by Mellanox) | ||
|
||
## Build instructions | ||
|
||
To build Observatory using this binding, run the following command from the `cpp` directory: | ||
|
||
``` | ||
./build.sh socket-binding | ||
``` | ||
|
||
## Run instructions | ||
|
||
To run Observatory using this binding, change into the build output directory and run the `observatory` executable: | ||
|
||
``` | ||
cd build/socket-binding/ | ||
./bin/observatory | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# Socket binding for Observatory (C++) | ||
|
||
This binding uses the standard native ibverbs library (availabe in the [rdma-core](https://github.com/linux-rdma/rdma-core) package) to access InfiniBand hardware. Its purpose is to get baseline results, that other implementations can be compared against. | ||
|
||
## Build instructions | ||
|
||
To build Observatory using this binding, run the following command from the `cpp` directory: | ||
|
||
``` | ||
./build.sh verbs-binding | ||
``` | ||
|
||
## Run instructions | ||
|
||
To run Observatory using this binding, change into the build output directory and run the `observatory` executable: | ||
|
||
``` | ||
cd build/verbs-binding/ | ||
./bin/observatory | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,212 @@ | ||
{ | ||
"className": "Verbs::Benchmark", | ||
"resultName": "ibverbs", | ||
"parameters": [ | ||
{ "key": "deviceNumber", "value": "0" }, | ||
{ "key": "portNumber", "value": "1" }, | ||
{ "key": "queueSize", "value": "200" } | ||
], | ||
"detector": { | ||
"enabled": true, | ||
"deviceNumber": 0, | ||
"mode": "compat" | ||
}, | ||
"operations": [ | ||
{ | ||
"name": "MessagingThroughput", | ||
"modes": [ "unidirectional", "bidirectional" ], | ||
"repetitions": 3, | ||
"iterations": [ | ||
{ "size": 1, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 2, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 4, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 8, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 16, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 32, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 64, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 128, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 256, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 512, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 1024, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 2048, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 4096, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 8192, "count": 50000000, "warmUp": 500000 }, | ||
{ "size": 16384, "count": 25000000, "warmUp": 500000 }, | ||
{ "size": 32768, "count": 12500000, "warmUp": 500000 }, | ||
{ "size": 65536, "count": 6250000, "warmUp": 250000 }, | ||
{ "size": 131072, "count": 3125000, "warmUp": 250000 }, | ||
{ "size": 262144, "count": 1562500, "warmUp": 250000 }, | ||
{ "size": 524288, "count": 781250, "warmUp": 125000 }, | ||
{ "size": 1048576, "count": 390625, "warmUp": 125000 } | ||
] | ||
}, | ||
{ | ||
"name": "RdmaWriteThroughput", | ||
"modes": [ "unidirectional", "bidirectional" ], | ||
"repetitions": 3, | ||
"iterations": [ | ||
{ "size": 1, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 2, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 4, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 8, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 16, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 32, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 64, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 128, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 256, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 512, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 1024, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 2048, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 4096, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 8192, "count": 50000000, "warmUp": 500000 }, | ||
{ "size": 16384, "count": 25000000, "warmUp": 500000 }, | ||
{ "size": 32768, "count": 12500000, "warmUp": 500000 }, | ||
{ "size": 65536, "count": 6250000, "warmUp": 250000 }, | ||
{ "size": 131072, "count": 3125000, "warmUp": 250000 }, | ||
{ "size": 262144, "count": 1562500, "warmUp": 250000 }, | ||
{ "size": 524288, "count": 781250, "warmUp": 125000 }, | ||
{ "size": 1048576, "count": 390625, "warmUp": 125000 } | ||
] | ||
}, | ||
{ | ||
"name": "RdmaReadThroughput", | ||
"modes": [ "unidirectional", "bidirectional" ], | ||
"repetitions": 3, | ||
"iterations": [ | ||
{ "size": 1, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 2, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 4, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 8, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 16, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 32, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 64, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 128, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 256, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 512, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 1024, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 2048, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 4096, "count": 100000000, "warmUp": 1000000 }, | ||
{ "size": 8192, "count": 50000000, "warmUp": 500000 }, | ||
{ "size": 16384, "count": 25000000, "warmUp": 500000 }, | ||
{ "size": 32768, "count": 12500000, "warmUp": 500000 }, | ||
{ "size": 65536, "count": 6250000, "warmUp": 250000 }, | ||
{ "size": 131072, "count": 3125000, "warmUp": 250000 }, | ||
{ "size": 262144, "count": 1562500, "warmUp": 250000 }, | ||
{ "size": 524288, "count": 781250, "warmUp": 125000 }, | ||
{ "size": 1048576, "count": 390625, "warmUp": 125000 } | ||
] | ||
}, | ||
{ | ||
"name": "MessagingLatency", | ||
"modes": [ "unidirectional" ], | ||
"repetitions": 3, | ||
"iterations": [ | ||
{ "size": 1, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 2, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 4, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 8, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 16, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 32, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 64, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 128, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 256, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 512, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 1024, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 2048, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 4096, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 8192, "count": 5000000, "warmUp": 50000 }, | ||
{ "size": 16384, "count": 2500000, "warmUp": 50000 }, | ||
{ "size": 32768, "count": 1250000, "warmUp": 50000 }, | ||
{ "size": 65536, "count": 625000, "warmUp": 25000 }, | ||
{ "size": 131072, "count": 312500, "warmUp": 25000 }, | ||
{ "size": 262144, "count": 156250, "warmUp": 25000 }, | ||
{ "size": 524288, "count": 781250, "warmUp": 12500 }, | ||
{ "size": 1048576, "count": 39062, "warmUp": 12500 } | ||
] | ||
}, | ||
{ | ||
"name": "RdmaWriteLatency", | ||
"modes": [ "unidirectional" ], | ||
"repetitions": 3, | ||
"iterations": [ | ||
{ "size": 1, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 2, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 4, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 8, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 16, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 32, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 64, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 128, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 256, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 512, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 1024, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 2048, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 4096, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 8192, "count": 5000000, "warmUp": 50000 }, | ||
{ "size": 16384, "count": 2500000, "warmUp": 50000 }, | ||
{ "size": 32768, "count": 1250000, "warmUp": 50000 }, | ||
{ "size": 65536, "count": 625000, "warmUp": 25000 }, | ||
{ "size": 131072, "count": 312500, "warmUp": 25000 }, | ||
{ "size": 262144, "count": 156250, "warmUp": 25000 }, | ||
{ "size": 524288, "count": 781250, "warmUp": 12500 }, | ||
{ "size": 1048576, "count": 39062, "warmUp": 12500 } | ||
] | ||
}, | ||
{ | ||
"name": "RdmaReadLatency", | ||
"modes": [ "unidirectional" ], | ||
"repetitions": 3, | ||
"iterations": [ | ||
{ "size": 1, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 2, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 4, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 8, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 16, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 32, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 64, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 128, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 256, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 512, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 1024, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 2048, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 4096, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 8192, "count": 5000000, "warmUp": 50000 }, | ||
{ "size": 16384, "count": 2500000, "warmUp": 50000 }, | ||
{ "size": 32768, "count": 1250000, "warmUp": 50000 }, | ||
{ "size": 65536, "count": 625000, "warmUp": 25000 }, | ||
{ "size": 131072, "count": 312500, "warmUp": 25000 }, | ||
{ "size": 262144, "count": 156250, "warmUp": 25000 }, | ||
{ "size": 524288, "count": 781250, "warmUp": 12500 }, | ||
{ "size": 1048576, "count": 39062, "warmUp": 12500 } | ||
] | ||
}, | ||
{ | ||
"name": "MessagingPingPong", | ||
"modes": [ "unidirectional" ], | ||
"repetitions": 3, | ||
"iterations": [ | ||
{ "size": 1, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 2, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 4, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 8, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 16, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 32, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 64, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 128, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 256, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 512, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 1024, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 2048, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 4096, "count": 10000000, "warmUp": 100000 }, | ||
{ "size": 8192, "count": 5000000, "warmUp": 50000 }, | ||
{ "size": 16384, "count": 2500000, "warmUp": 50000 }, | ||
{ "size": 32768, "count": 1250000, "warmUp": 50000 }, | ||
{ "size": 65536, "count": 625000, "warmUp": 25000 }, | ||
{ "size": 131072, "count": 312500, "warmUp": 25000 }, | ||
{ "size": 262144, "count": 156250, "warmUp": 25000 }, | ||
{ "size": 524288, "count": 781250, "warmUp": 12500 }, | ||
{ "size": 1048576, "count": 39062, "warmUp": 12500 } | ||
] | ||
} | ||
] | ||
} |
Oops, something went wrong.