1. A computer implemented method for scalable scheduling of tasks in heterogeneous systems, the computer implemented method comprising: a computer fetching tasks to form a received input; the computer estimating a run time for each task in the received input using previous runtime information stored in a data base; the computer calculating, responsive to estimating the run time for each task in the received input, an average estimated completion time for each task of the received input; the computer sorting, responsive to calculating an average estimated completion time for each task of the received input, the tasks according to each task's average estimated completion time to form a task list; the computer identifying a task within the task list having a smallest average estimated completion time to form an identified task; the computer identifying a particular machine having a smallest estimated completion time to form an identified machine; the computer assigning the identified task from the task list to the identified machine, thereby scheduling the identified task; and the computer updating an estimated completion time of the identified machine, wherein updating the estimated completion time of the identified machine further comprises: adding an estimated run time of the identified task to the estimated completion time of the identified machine.