GithubHelp home page GithubHelp logo

cmusatyalab / sec19-scalable-edge-native-applications Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 1.0 47.44 MB

Towards scalable edge-native applications

Home Page: https://dl.acm.org/doi/10.1145/3318216.3363308

License: Apache License 2.0

Dockerfile 0.01% Makefile 0.02% Python 5.98% PureBasic 0.01% Shell 0.11% PHP 0.01% Mako 0.01% Jupyter Notebook 93.88%

sec19-scalable-edge-native-applications's Introduction

Towards scalable edge-native applications

This repository contains code and experiments for the following SEC'19 paper.

Wang, J., Feng, Z., George, S., Iyengar, R., Pillai, P., & Satyanarayanan, M. (2019, November). Towards scalable edge-native applications. In Proceedings of the 4th ACM/IEEE Symposium on Edge Computing (pp. 152-165).

What's in this repo?

  • Makefile: Entry point for building and running experiments.
  • environment.yml: Conda environment dependency file.
  • app: Wearable cognitive assistance applications packaged as python modules for stateless vision processing.
  • data: experimental input data including application input traces, not version controlled under git. See below for the download link.
  • infra: experiment infrastructure, including a MySQL database for experiment data. All these tools are set up using containers.
  • rmexp: main python module "Resource Management Experiment".
    • rmexp/broker: Python implementation of ZMQ message broker Majordomo Pattern.
    • rmexp/alembic: Alembic-based database migration scripts.
    • rmexp/client: Emulated mobile client devices.
    • rmexp/proto: Protobuf definition for client and server communication.
    • rmexp/scheduler: Resource allocator: cpushare are the capped allocation using docker cpushares. Greedyratio (deprecated) is a greedy implementation that does cpu limitation even when utilization is not high.
    • rmexp/schema: Database schema definition
  • wcautils: python module for utilities commonly used by wearable cognitive assistance.
  • visualization: Python Jupyter interactive plotting scripts. Used to pull data out from MySQL database and plot figures.
  • writeup: Thoughts and notes.
  • scripts: Scripts to launch experiments.
  • third_party: Third party libaries required: dlib, tensorflow object detection API, and trace-app

Experiment Data

Data used and generated from the experiments can be downloaded from here (~19GB).

Installation

  1. install git lfs
  2. Clone this repository.
git clone --recurse-submodules git://github.com/junjuew/scalable-edge-native-applications.git
  1. Setup conda environment.
conda env create --file environment.yml
  • NOTE: dlib and tensorflow is installed through pip, since opencv 2.4.13 has a fixed dependency of numpy (1.11) that is conflicting with the newest dlib and tf. conda won't allow such conflict to co-exists. However, just updating numpy to 1.16.3 still seems to be working for lego, pingpong, and pool those legacy applications.
  1. Setup the infrastructure services needed for reading/writing experimental results
mv .envrc.example .envrc # set service passwords
source .envrc
cd infra && docker-compose up 
  • Infrastructure service:
    • MySQL database: :3306
    • database management dashboard: :8081

Experiment Details

To access all experiment data and reproduce the experiements. See this document.

sec19-scalable-edge-native-applications's People

Contributors

junjuew avatar akindofyoga avatar a4anna avatar

Stargazers

DMJ avatar

Watchers

James Cloos avatar  avatar  avatar

Forkers

chan-w

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.