apps | ||
base | ||
bindings | ||
dpdk@0da7f445df | ||
inc | ||
iokernel | ||
ksched | ||
net | ||
runtime | ||
scripts | ||
shim | ||
tests | ||
.gitignore | ||
.gitmodules | ||
client.config | ||
CONTRIBUTING.md | ||
dpdk.sh | ||
ixgbe_18_11.patch | ||
ixgbe.patch | ||
LICENSE | ||
Makefile | ||
mlx4_18_11.patch | ||
mlx5_18_11.patch | ||
mlx.patch | ||
README.md | ||
sample.config | ||
server.config |
Shenango
Shenango is a system that enables servers in datacenters to simultaneously provide low tail latency and high CPU efficiency, by rapidly reallocating cores across applications, at timescales as small as every 5 microseconds.
How to build
-
Make sure you are on FreeBSD 13.
-
Install the latest DPDK, compiler and gmake on FreeBSD
pkg install dpdk gcc10 gmake
- Make a symbolic link of GCC
ln -s /usr/local/bin/gcc10 /usr/local/bin/gcc
- Use GMAKE
gmake
To enable debugging, build with gmake DEBUG=1
.
- Install Rust and build a synthetic client-server application.
curl https://sh.rustup.rs -sSf | sh
rustup default nightly
cd apps/synthetic
cargo clean
cargo update
cargo build --release
- Run the synthetic application with a client and server. The client sends requests to the server, which performs a specified amount of fake work (e.g., computing square roots for 10us), before responding.
On the server:
sudo ./iokerneld
./apps/synthetic/target/release/synthetic 192.168.1.3:5000 --config server.config --mode spawner-server
On the client:
sudo ./iokerneld
./apps/synthetic/target/release/synthetic 192.168.1.3:5000 --config client.config --mode runtime-client
Supported Platforms
This code has been tested most thoroughly on Ubuntu 18.04, with kernel
4.15.0. It has been tested with Intel 82599ES 10 Gbits/s NICs and
Mellanox ConnectX-3 Pro 10 Gbits/s NICs. If you use Mellanox NICs, you
should install the Mellanox OFED as described in DPDK's
documentation. If you use
Intel NICs, you should insert the IGB UIO module and bind your NIC
interface to it (e.g., using the script ./dpdk/usertools/dpdk-setup.sh
).