Checkpointing distributed computing systems: an optimisation approach. (18th March 2020)