Skip to content

D4De/runtime_controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Runtime Resource Controller

This project implements a runtime resource management framework for multicores running a multiprogrammed workload working on Linux, capable of monitoring system status (both running applications attached to the controller and hardware parameters) and actuating on available hardware and software knobs to optimize a given objective function. Indeed the controller here implemented is a skeleton and has to be customized with the desired decision policy and extended to support actual sensors and knobs available on the target architecture; also, software knob control has to be implemented based on the necessities of the working scenario.

For a methodological description of the controller, please refer to: Anil Kanduri, Antonio Miele, Amir M. Rahmani, Pasi Liljeberg, Cristiana Bolchini, and Nikil Dutt. 2018. Approximation-aware coordinated power/performance management for heterogeneous multi-cores. In Proceedings of the 55th Annual Design Automation Conference (DAC '18). pp. 1–6. https://doi.org/10.1145/3195970.3195994

At present, there is no technical documentation except for the comments within the source code itself.

If you use the controller in your research, we would appreciate a citation to:

@inproceedings{km+2018,
author = {A. Kanduri and A. Miele and A.M. Rahmani and P. Liljeberg and C. Bolchini and N, Dutt},
title = {Approximation-aware coordinated power/performance management for heterogeneous multi-cores},
booktitle = {Proceedings of the 55th Annual Design Automation Conference},
year={2018},
pages={1-6},
doi={https://doi.org/10.1145/3195970.3195994}
}

Copyright & License

Copyright (C) 2024 Politecnico di Milano.

This framework is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This framework is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Neither the name of Politecnico di Milano nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

Dependencies and Requirements

The project runs on Ubuntu Linux (<= 20.04) and requires cgmanager libcgroup-dev packages to be installed. Indeed, in newer Ubuntu versions, CGroup management has been changed, and the controller does not work properly.

Compilation

To install the framework use make command:

cd basic_controller
make
cd ..
cd sha
make

Run a demo of the controller

To run a very simple demo with a controller monitoring the system status:

a. start the controller:

cd basic_controller
sudo ./controller -p 0

b. start one of the applications:

cd sha
./sha input_large.asc 10000

Actually the demo just only monitors the status of the system (application performance and system status). To kill it, it is sufficient to kill only the controller with ctrl+c.

An advanced version of the controller

In the orin_controller folder there is a more advanced version of the controller deployed on the NVIDIA Jetson Orin NX board. This version demonstrates how to interact with hardware sensors and knobs of the various boards and integrates an example of resource management policy. The project can be compiled and executed in the same way of the basic version. Option -h can be used to see all possible alternative configurations of the policy. The sha application requires also the required throughput to be specified:

cd sha
./sha input_large.asc 10000 30

Optionally, it is possible to specify y as one more parameter to enable a change in the throughput requirement.

Refer to the README file within the folder for advanced details on the features demonstrated in the code.

A previous version of the controller

In the previous_controller folder there is a more advanced version of the controller deployed on multiple boards: Hardkernel Odroid XU3/XU4 (optionally connected to the Hardkernel SmartPower1), NVIDIA Jetson TX2, NVIDIA Jetson Nano, Raspberry PI4. As the orin_controller, this version demonstrates how to interact with hardware sensors and knobs of the various boards and integrates an example of resource management policy. The project can be compiled and executed in the same way of the basic version. Option -h can be used to see all possible alternative configurations of the policy. The code is not maintained any more.

About

Repository containing the basic structure of the runtime resource management controller

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages