Code Monkey home page Code Monkey logo

dirmathfl / containertracer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from i-o-benchmark-on-container/containertracer

0.0 0.0 0.0 20.65 MB

:microscope:This program benchmarks the I/O performance per container. You can see the implementation of this program on our website.

Home Page: https://i-o-benchmark-on-container.github.io/ContainerTracerDoxygen/

License: GNU General Public License v2.0

Python 4.75% C 74.50% Makefile 0.12% C++ 16.71% CSS 0.33% JavaScript 1.48% HTML 2.11%

containertracer's Introduction

한국어 링크

Introduction

Container Tracer is a tool that measures I/O performance per container. This program complements lacks of cgroup and container building sequence the existing I/O performance measurement program like fio and filebench.

Currently, Container Tracer uses trace-replay to measure the I/O performance of each container.

Execution Sample

Recommended system requirements

This program can run on the system which follows the POSIX standards.

But in these documents and our testing was based on the system which is described in the following table.

So, when you build and run this program you have to care about this information.

item content
Operting System Ubuntu 18.04
Kernel linux 4.19

Project Components

The composition of the project is as follows.

  • trace-replay: trace-replay which reconstructed to produce the formatted data to message queue or shared memory. (language: C)
  • runner: Assign benchmark program to each container. (language: C)
  • web: Developed based on Flask, which output the value from runner produces. (language: Python)
  • setting: The directory which contains Scons' build global configuration
  • include: The directory has C program's header. Almost all C program's header must be located in this place.

runner directory subdirectory test has unit-test program of each driver of runner.

Implementation

You have to check this link

Building

In common, you must do the following.

sudo pip3 install black flake8
sudo apt install doxygen

web

Since we are using Flask, you must install Flask and install the related package first.

sudo pip3 install flask flask_restful flask_socketio

And you can run this program with the following command in the project root directory.

sudo python web/run.py

You can get more information from this link.

trace-replay and runner

You download the source code and install necessary programs and libraries following.

Debian

sudo pip3 install scons scons-compiledb
sudo pip3 install clang-format
sudo apt install cppcheck libaio-dev libjson-c-dev libjemalloc-dev

Redhat

sudo yum install cppcheck libaio-devel json-c-devel jemalloc-devel

If you want to build by clang compiler then you must change the SConstruct file's CC section' gcc to clang and follow like below.

Debian

sudo apt install llvm-6.0 clang-6.0 libclang-6.0-dev
sudo ln -s /usr/bin/clang-6.0 /usr/bin/clang

Redhat

sudo yum install llvm6.0 clang7.0-devel clang7.0-libs

Based on the following commands you do the build and unit testing. This execution results are stored in ./build/debug.

sudo scons -c
sudo scons test DEBUG=True TARGET_DEVICE=<your device>

If you want to build the release mode then you do the following. This execution results are stored in ./build/release

sudo scons -c
scons

Moreover, you can install the release mode of runner libraries by following commands. If you want to install the debug mode then just change the sudo scons install to sudo scons DEBUG=True install

sudo scons install
sudo ldconfig

Under the redhat distribution, you must care about two things.

First, you have to check /etc/ld.so.conf file has the line /usr/local/lib. If not you add that line.

Second, if you encounter an error that related to the jemalloc you must build the jemalloc library based on this link.

Additionally, you can get information about how to make the driver program of the runner from this link

Notes

  • DEBUG=True enables us to print all information about debugging. This expects to be made you to easily debug our program.
  • Because trace-replay needs the superuser privileges, you must run this program with superuser privileges.
  • sudo scons test doesn't make a compile_commands.json file. So, if you want to generate that file then must only do scons.

Warning

  1. Because the trace-replay does direct-IO, this may be destructing your disk's file system. So, you must run this program under an empty disk or virtual disk.
  2. You must follow the init JSON contents must be {"driver": "<DRIVER-NAME>", "setting": {...}}. And setting field has driver dependant contents.

Libraries

  1. pthread: POSIX thread library for trace-replay
  2. AIO: asynchronous I/O library
  3. rt: Real-Time library
  4. json-c: Json library for C language
  5. unity: Unit test library for C language
  6. jemalloc: A library which does the efficient memory dynamic allocation.

Contributing

You must follow the contributing rules in this link.

containertracer's People

Contributors

blackinkgj avatar suhoson avatar dirmathfl avatar jsy0831 avatar

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.