This tool generates load and outputs computer power metrics for this load.
It's meant to run on an Intel-based bare metal Linux host.
If you want to do power profiling for AMD host you can alternatively use the AMD μProf tool.
Use --help
flag to get help on usage
This tool generates load and outputs computer power metrics for this load.
It requires adequate privileges(CAP_SYS_RAWIO, or simply run as `sudo`) to read the metrics.
It combines CPU load generation using `stress-ng` and power metrics measurement using `turbostat`.
For each load step from 0 to 100, a CPU load corresponding is started and multiple measures of power metrics are taken.
The value of each metric for each step is the mean of the multiple measurements.
More advanced tests are launched after CPU one (ipsec, vm, maximize) to stress with different patterns.
Progression messages are written to STDERR while results are written to STDOUT.
The two can be separated to build a CSV result file while displaying the progression on the console, ex: turbostress | tee results.csv
Usage:
[flags]
Flags:
--cpu-info output CPU info before results (default true)
--duration-between-measures duration the duration to wait between two measures (default 1s)
-h, --help help for this command
--ipsec launch ipsec test to trigger advanced CPU instructions. See stress-ng ipsec-mb flag (default true)
--load-duration-before-measures duration duration to wait between load start and measures (default 5s)
--load-step int increment the stress load from 0 to 100 with this value (default 25)
--maximize launch a stress maximizing stressors values. See stress-ng maximize flag (default true)
--method string the method to use to generate the load. See stress-ng cpu-method flag (default "all")
--metrics strings turbostat columns to read (default [PkgWatt,RAMWatt,PkgTmp])
--repeat int measures are repeated with this value and the measure is the mean of all repetitions (default 10)
--threads int number of threads to use for the load (default to the number of threads on the system)
--vm launch VM test. See stress-ng vm flag (default true)
stress-ng
commandturbostat
commandgolang 1.15
go run cmd/main.go
docker build -t turbostress .
docker run -it --privileged turbostress