Hey list,
I've been sending a pull request to improve the cpu engine
:https://github.com/axboe/fio/pull/1161
<https://github.com/axboe/fio/pull/1161>
fio is featuring a cpu engine which makes noop to load the cpu cores.
This makes the core busy but doesn't really consume energy and doesn't
generate heat.
When benchmarking systems, it could be useful putting the processor
under a realistic load to see how the whole system behave.
The idea is to get a more realistic cpu workload generator so IO
benchmarks can be done under a defined cpu load.
This commit adds cpumode option into the cpuio engine.
By default, cpumode=noop to keep the current behavior.
If cpumode is set to qsort, fio will use a qsort algorithm instead of
the noop instructions to load the processor.
This mode will consume more cpu power and will be useful to increase the
pressure on the thermal and electrical components.
The expected cpu load is selected as per noop via the cpuload option.
qsort() consumes a lot of energy so the duration of every loop will vary
over time as the power management & cpu clock changes.
To ensure a proper calibration, the thinktime is adjusted after every
qsort() computation to be as precise as possible.
To give an order of magnitude, on an AMD 7502P (TDP=180W) :
cpuload=30, numjobs=64: packagewatt = 134W
cpuload=50, numjobs=64: packagewatt = 167W
cpuload=70, numjobs=64: packagewatt = 180W
The example file is updated to reflect this new capabilities.
The qsort code is coming from stress-qsort.c from stress-ng tool.
This software is also GPLv2 but author was informed and agreed with this
usage
Erwan,