Skip to content

Latest commit

 

History

History
78 lines (49 loc) · 2.53 KB

README.rst

File metadata and controls

78 lines (49 loc) · 2.53 KB

CPU Load Generator

github-actions-badge mit-badge made-with-python

This script allows to generate a fixed CPU load for a finite or indefinite time period, for one or more CPU cores. A PI controller is employed for this purpose. The script takes in input the desired CPU load and the CPU core on which the load has to be generated. The controller and the CPU monitor are implemented in two different threads.

Theoretical insight on this tool

On my blog is available a theoretical explanation of this tool.

Dependencies

This script uses Python 3.6 and requires the following additional libraries:

  • matplotlib
  • psutil
  • click

To get started, first install Virtualenv, then create and activate a Python virtualenv in the project root directory:

$ cd CPULoadGenerator/
$ sudo apt install virtualenv
$ virtualenv --python=python3.6 ./venv
$ . venv/bin/activate
(venv) $

Finally, install the dependencies listed in requirements.txt:

(venv) $ pip install -r requirements.txt

Alternatively, install dependencies system-wide using apt:

$ sudo apt install python3-matplotlib python3-psutil python3-click

Examples

  1. Generate 20% of load on core 0 for 20 seconds:

    ./CPULoadGenerator.py -l 0.2 -d 20 -c 0
    
  2. Generate 65% load on cores 0, 1 and 5, until the program is interrupted through Ctrl-C:

    ./CPULoadGenerator.py -l 0.65 -c 0 -c 1 -c 5
    
  3. Generate 55% load on core 0, 12% on core 3, until the program is interrupted through Ctrl-C:

    ./CPULoadGenerator.py -c 0 -c 3 -l 0.55 -l 0.12
    
  4. Generate 12% load on cores 0 and 1, for 20.5 seconds, and then plot the load for each of the cores:

    ./CPULoadGenerator.py -l 0.12 -c 0 -c 1 -d 20.5 --plot
    
  5. Example graph of CPU load:

Example - 50% load on CPU core 0