ipynb/energy/SystemEnergy: Rework pstate modelling
Created by: valschneider
This is fairly extensive rework of the SystemEnergy notebook. The main additions are:
-
Computation of "tare" (noise) system energy. With the previous implementation, we would determine that the energy measured at (n_cpu == 0) would be the cluster energy. However, this energy includes a lot of other components, even more so when the energy measurement point is far away from the clusters (from the standpoint of the electrical circuit).
The proposed improvement is as follows:
- Before doing measurement on cluster 'A', find another cluster 'B'.
- Offline cluster A, online a single CPU noise_cpu of cluster B
- Run benchmark on noise_cpu. Energy measurement = noise_energy
- Online cluster A and run the tests. Run benchmark on noise_cpu during the tests Subtract noise_energy from test energy measurement
While not flawless, this should greatly improve our cluster costs.
-
Energy measurement filtering. Due to many different physical parameters, energy curves can be non-monotonic, which shouldn't be the case. As such, non-monotonic readings are expunged.
-
Energy model monotonization. Even with model generation improvements, the resulting energy model can be non-monotonic and we then have to "massage" it into shape. This is now done inside the notebook itself by replacing non-monotonic values with a polynomial interpolation. This isn't perfect, as I've had cases where the interpolation itself wouldn't be monotonic (locally, within the scope of our energy values), but this can easily be spotted.