All Projects → rolandobrondolin → DEEP-mon

rolandobrondolin / DEEP-mon

Licence: GPL-3.0 license
an eBPF-based monitoring tool to measure container resource usage, power consumption, network I/O, and file I/O

Programming Languages

c
50402 projects - #5 most used programming language
python
139335 projects - #7 most used programming language

DEEP-mon

Dynamic and Energy Efficient Power monitor (DEEP-mon) is an eBPF based monitoring tool to measure power consumption and performance of Docker containers. DEEP-mon started in 2017 as a research project of NECSTLab at Politecnico di Milano with the goal of being able to measure the power consumption of each container running in a given host. The project then expanded and now DEEP-mon is able to measure power consumption, performance counters, CPU usage, Memory usage, Network I/O, and File I/O, all displayed in a curses UI terminal window.

Getting started

Requirements

DEEP-mon currently runs on Docker and it is almost self contained. Requirements are:

  • Linux kernel >= 4.13
  • kernel headers
  • make
  • docker
  • intel_rapl module (for power consumption on Intel® processors)

We tested DEEP-mon on Ubuntu 16.04 and 18.04. The power attribution feature of DEEP-mon targets the SMT capability of Intel® Sandy bridge and Ivy bridge server class processors. For other architectures a new attribution factor should be tested and used (more details here and here).

Build and Run

To build the container, within the root folder of the project type:

make build

To run the container, within the root folder of the project type:

make run

Bug reports

For bug reports or feature requests feel free to create an issue.
Please make sure that the same problem wasn't reported already.

Contributing

Contribution is welcome!

  • Create a pull request containing bug fixes or new features.
  • Propose new functions and improvements

DEEP-mon roadmap:

  • fix performance issue with memory metrics
  • experimental measurement tool -> record stuff, single machine + distributed
  • frequency sampling
  • improve parameter injection
  • set attribution ratio in config
  • improve curse UI
  • documentation (code + md files)
  • tests
  • add k8s pod name, deployments, services (e.g. readable k8s data)
  • one UI per cluster (daemonset), server w/data, cli
  • web UI

Research

As we said at the beginning, this work comes form the research conducted at NECSTLab. If you use this tool for your research, please cite the following papers:

  • Brondolin, Rolando, Tommaso Sardelli, and Marco D. Santambrogio. "Deep-mon: Dynamic and energy efficient power monitoring for container-based infrastructures." 2018 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW). IEEE, 2018. (download here)

  • Rolando Brondolin and Marco D Santambrogio. "A black-box monitoring approach to measure microservices runtime performance." ACM Transactions on Architecture and Code Optimization (TACO), 17(4):1-26, 2020. (download here)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].