A computer-implemented method comprising; tracking assignments by a dispatcher of tasks to servers in a data structure , wherein the data structure includes at least one entry for each server , with a number of entries per server being based on a capacity of the server , with servers with greater capacity having more entries than servers with lesser capacity , with an entry representing either an assignment of a task to a server or an available slot indicating an availability of a server to execute a task; receiving a first dispatch request for execution of a first task; searching the data structure to find a first entry indicating a first available slot, the first available slot associated with a first server ; assigning the first task to the first server , wherein the assigning includes updating the first entry, in the data structure , to track the execution of the first task by the first server ; receiving a second dispatch request for execution of a second task; searching the data structure to find a second entry indicating a second available slot, the second available slot associated with a second server , wherein the second server has greater capacity than the first server , and wherein the second server is faster than the first server ; assigning the second task to a second server , wherein the assigning includes updating the second entry, in the data structure , to track the execution of the second task by the second server ; receiving, before the first task has completed, an indication that the second server has completed the second task; updating the second entry to indicate completion of the second task by the second server and an availability of the second server for task assignment; receiving a third dispatch request for execution of a third task; and assigning the third task to the second server , rather than the first server , in response to detecting the updated second entry indicating completion of the second task by the second server . tracking assignments by a dispatcher of tasks to servers in a data structure , wherein the data structure includes at least one entry for each server , with a number of entries per server being based on a capacity of the server , with servers with greater capacity having more entries than servers with lesser capacity , with an entry representing either an assignment of a task to a server or an available slot indicating an availability of a server to execute a task; receiving a first dispatch request for execution of a first task; searching the data structure to find a first entry indicating a first available slot, the first available slot associated with a first server ; assigning the first task to the first server , wherein the assigning includes updating the first entry, in the data structure , to track the execution of the first task by the first server ; receiving a second dispatch request for execution of a second task; searching the data structure to find a second entry indicating a second available slot, the second available slot associated with a second server , wherein the second server has greater capacity than the first server , and wherein the second server is faster than the first server ; assigning the second task to a second server , wherein the assigning includes updating the second entry, in the data structure , to track the execution of the second task by the second server ; receiving, before the first task has completed, an indication that the second server has completed the second task; updating the second entry to indicate completion of the second task by the second server and an availability of the second server for task assignment; receiving a third dispatch request for execution of a third task; and assigning the third task to the second server , rather than the first server , in response to detecting the updated second entry indicating completion of the second task by the second server . <EOS>