more detailed instructions for getting started

This commit is contained in:
Amy Ousterhout 2018-10-25 14:58:38 -04:00
parent 19581c5ba5
commit 560bb9370e
5 changed files with 111 additions and 47 deletions

5
.gitignore vendored
View File

@ -3,4 +3,7 @@
*.a
[._]*.sw[a-p]
iokerneld
iokerneld-noht
iokerenld-noht
*~
.cproject
.project

46
README
View File

@ -1,46 +0,0 @@
Overview
========
base - a extension to the standard C library that provides tools for managing
lists, memory, bitmaps, initialization, atomics, and several other useful
features.
dune - a better implementation of libdune based on the base library.
net - a packet manipulation library.
runtime - a user-level threading and networking runtime.
iokernel - a user-level softNIC.
bindings - language bindings (C++ and rust) for the runtime.
Coding Style
============
Use the following conventions for C code:
https://www.kernel.org/doc/html/v4.10/process/coding-style.html
Use the following conventions for C++ code:
https://google.github.io/styleguide/cppguide.html
For third party libraries and tools, use their existing coding style.
For some helpful tips on how to write clean code, see:
https://www.lysator.liu.se/c/pikestyle.html
Building
========
To build run:
$ make
To build in debug mode run:
$ make clean; make DEBUG=1
To get static checker output:
$ make sparse
For now, eaching binding has its own separate build system.

96
README.md Normal file
View File

@ -0,0 +1,96 @@
# 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 do I use it?
1) Clone the Shenango repository.
```
git clone https://github.com/abelay/shenango
cd shenango
```
2) Setup DPDK and build the IOKernel and Shenango runtime.
```
./dpdk.sh
./scripts/setup_machine.sh
make clean && make
```
To use Mellanox NICs, build with `make MLX=1`. You can also build with
debugging enabled (`make DEBUG=1`).
3) 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
```
4) 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
```
## How do I contribute?
### Code Overview
apps - synthetic and benchmarking applications.
base - a extension to the standard C library that provides tools for managing
lists, memory, bitmaps, initialization, atomics, and several other useful
features.
bindings - language bindings (C++ and rust) for the runtime.
dpdk - [DPDK](https://www.dpdk.org/) library for accessing NIC queues
from userspace.
dune - a better implementation of libdune based on the base library.
iokernel - dedicated core that steers packets and reallocates cores
across applications.
net - a packet manipulation library.
runtime - a user-level threading and networking runtime.
shim - a shim layer that enables running unmodified
[PARSEC](http://parsec.cs.princeton.edu/) applications atop Shenango.
### Coding Style
Use the following conventions for C code:
https://www.kernel.org/doc/html/v4.10/process/coding-style.html
Use the following conventions for C++ code:
https://google.github.io/styleguide/cppguide.html
For third party libraries and tools, use their existing coding style.
For some helpful tips on how to write clean code, see:
https://www.lysator.liu.se/c/pikestyle.html

6
client.config Normal file
View File

@ -0,0 +1,6 @@
# an example runtime config file
host_addr 192.168.1.7
host_netmask 255.255.255.0
host_gateway 192.168.1.1
runtime_kthreads 6
runtime_spinning_kthreads 6

5
server.config Normal file
View File

@ -0,0 +1,5 @@
# an example runtime config file
host_addr 192.168.1.3
host_netmask 255.255.255.0
host_gateway 192.168.1.1
runtime_kthreads 3