Heterogeneous multiprocessor scheduling