Skip to content
No description, website, or topics provided.
C C++ Rust Makefile Shell Go Assembly
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
apps README updates Feb 24, 2019
base
bindings dune: remove (unused) Feb 21, 2019
dpdk @ 0da7f44
inc dune: remove (unused) Feb 21, 2019
iokernel cleanup some compile warnings Feb 22, 2019
ksched
net checkpoint Jan 2, 2018
runtime
scripts runtime: shrink tx buffer pool Feb 22, 2019
shim shim: cleanup c++ refs Jul 11, 2018
tests
.gitignore
.gitmodules iokernel: Add a basic DPDK echo server and DPDK 17.08.0 as a git subm… Nov 10, 2017
CONTRIBUTING.md
LICENSE
Makefile dune: remove (unused) Feb 21, 2019
README.md
client.config
dpdk.sh
ixgbe.patch runtime/iokernel: enable IP and TCP checksum offloading for ixgbe vec… Aug 28, 2018
ixgbe_18_11.patch iokernel/dpdk: restore TCP offloads and vector TX path Dec 19, 2018
mlx.patch
mlx4_18_11.patch iokernel/dpdk: manually register memory for mlx4 driver Jan 13, 2019
mlx5_18_11.patch iokernel: support mlx5 Jan 31, 2019
sample.config checkpoint Jan 2, 2018
server.config more detailed instructions for getting started Oct 25, 2018

README.md

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 Run Shenango

  1. Clone the Shenango repository.
git clone https://github.com/abelay/shenango
cd shenango
  1. Setup DPDK and build the IOKernel and Shenango runtime.
./dpdk.sh
./scripts/setup_machine.sh
make clean && make

To enable debugging, build with make DEBUG=1.

  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
  1. 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).

You can’t perform that action at this time.