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.
On my blog is available a theoretical explanation of this tool.
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
Generate 20% of load on core 0 for 20 seconds:
./CPULoadGenerator.py -l 0.2 -d 20 -c 0
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
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
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
Example graph of CPU load: