1. A method comprising: determining a first execution time of a first thread of a process previously executed on a first processor of a multiprocessor; determining a second execution time of a second thread of the process previously executed on a second processor of the multiprocessor, the first and second threads of the process being independent from one another and having previously executed in parallel, wherein the multiprocessor is a single die comprising the first and second processors; and adjusting, according to first and second execution times of previously executed first and second threads, a first power level to the first processor and a second power level to the second processor of the multiprocessor, wherein adjusting the first and the second power levels is to cause the first and the second threads of the process to finish executing in parallel on the first and second processors at approximately the same time in future executions of the first and second threads of the process, wherein the future executions of the first and second threads being on the first and the second processors of the multiprocessor respectively, and wherein the adjusted first and second power levels have a total value below or equal to a total power budget for the multiprocessor.