Dynamic adaptive virtual core mapping to improve power, energy, and performance in multi-socket multicores