Message passing-aware power management on many-core systems