Runtime energy management of concurrent applications for multi-core platforms