Go to file
quackerd aecedce8a5 wip2 2020-09-03 09:00:10 +08:00
apps wip 2020-09-01 00:03:35 +08:00
base wip2 2020-09-03 09:00:10 +08:00
bindings dune: remove (unused) 2019-02-21 16:48:46 -05:00
dpdk@0da7f445df move DPDK version up to 18.11 2018-12-14 14:05:38 -05:00
inc wip2 2020-09-01 20:22:05 +08:00
iokernel wip2 2020-09-01 20:22:05 +08:00
ksched ksched: bug fixes 2018-07-12 21:52:14 +00:00
net checkpoint 2018-01-02 15:31:41 -05:00
runtime wip2 2020-09-01 20:22:05 +08:00
scripts runtime: shrink tx buffer pool 2019-02-22 12:32:34 -05:00
shim shim: cleanup c++ refs 2018-07-11 17:20:10 -04:00
tests tests: improve RCU test 2019-02-18 22:20:10 +00:00
.gitignore iokernel: support mlx5 2019-01-31 13:46:34 -05:00
.gitmodules iokernel: Add a basic DPDK echo server and DPDK 17.08.0 as a git submodule. 2017-11-10 18:33:37 -05:00
CONTRIBUTING.md dune: remove (unused) 2019-02-21 16:48:46 -05:00
LICENSE add license 2019-02-04 18:03:36 -05:00
Makefile wip2 2020-09-01 20:22:05 +08:00
README.md Update 'README.md' 2020-09-01 12:34:18 +00:00
client.config more detailed instructions for getting started 2018-10-25 14:58:51 -04:00
dpdk.sh iokernel: support mlx5 2019-01-31 13:46:34 -05:00
ixgbe.patch runtime/iokernel: enable IP and TCP checksum offloading for ixgbe vector TX 2018-08-28 14:17:25 -04:00
ixgbe_18_11.patch iokernel/dpdk: restore TCP offloads and vector TX path 2018-12-19 01:37:51 -05:00
mlx.patch iokernel/mlx: bug fix 2018-06-01 19:09:37 -04:00
mlx4_18_11.patch iokernel/dpdk: manually register memory for mlx4 driver 2019-01-13 18:49:49 -05:00
mlx5_18_11.patch iokernel: support mlx5 2019-01-31 13:46:34 -05:00
sample.config checkpoint 2018-01-02 15:31:41 -05:00
server.config more detailed instructions for getting started 2018-10-25 14:58:51 -04:00

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 build

  1. Make sure you are on FreeBSD 13.

  2. Install the latest DPDK, compiler and gmake on FreeBSD

pkg install dpdk gcc10 gmake
  1. Make a symbolic link of GCC
ln -s /usr/local/bin/gcc10 /usr/local/bin/gcc
  1. Use GMAKE
gmake

To enable debugging, build with gmake 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).