Implementation of the energy mechanism.
If the energy is enabled (by setting the -p run option), the platform is assumed to contain energy information. Such information is read by SimGrid itself but another ones, such as the 'sleep_pstates' property, are read by Batsim. A lot of assertions has been put in the reading of the platform file which will help generating energy platforms. An example of such a platform can be found in platforms/energy_platform.xml. This platform follows the same rules that those of SimGrid energy platforms but assures pstate coherency via the 'sleep_pstates' property: it says which pstates are sleep pstates and which pstates are its associated virtual pstates (for switching ON and OFF each pstate). More information can be found in the file 'platforms/energy_platform.xml' The scheduler can now send messages of the form TIMESTAMP:P:M=S where M is a machineID and S the asked new pstate for machineID. Batsim does the stuff to simulate the time & energy consumptions of the switchON/OFF (if any, you can also switch from one computation state to another). Once the pstate of a machine has changed, Batsim sends it on the socket with messages of the form TIMESTAMP:p:M=S where M is a machineID and S the new pstate of the corresponding machine (note the lowercase 'p' instead of an uppercase 'P'). To simulate the energy & time costs of the switch ON/OFF, the exact same mechanism as the one presented in SimGrid energy 1O1 is used: computing 1 flop on virtual pstates whose computational power and power consumption met our time and energy consumptions needs.