1. A non-transitory computer readable storage medium embodying instructions executed by a processor to perform a method for scheduling a data processing job, the method comprising: receiving the data processing job comprising a plurality of atomic processing tasks; combining the plurality of atomic processing tasks into a plurality of sets of tasks, each set of tasks comprising atomic processing tasks of about equal estimated processing times, and different sets of tasks having different combined estimated processing times; assigning each of the sets of tasks to a plurality of processors using a dynamic longest processing time (DLPT) scheme by which sets of tasks having longest combined estimated processing times are assigned to the plurality of processors and assignment to the processor is performed dynamically as the processor completes the set of atomic processing tasks; and determining and reporting a maximum number of available processors P to assign to the data processing job, wherein each of the plurality of sets of tasks comprises P atomic processing tasks, and wherein in combining the plurality of atomic processing tasks into a plurality of sets of tasks, the processor computes two parameters A and B, wherein A and B define a proportion of a total execution time of the data processing job devoted to the processing of each of the plurality of sets of tasks, and A and B are each less than 1 and greater than 0.