Scalable message-logging techniques for effective fault tolerance in HPC applications