1. A computer-implemented method of scheduling a task to a processor in a computing cluster comprising a plurality of processors, the method comprising: for each of a plurality of tasks available for allocation to the processor; computing an index related to an assignment cost for the task, the assignment cost being an indication of a preference for a task to be processed on one or more of the processors, the index also being related to a task holding cost being an indication of a waiting time for the task; the index also being related to an externality cost being an indication of how existing tasks assigned in the computing cluster are penalized if the task is allocated to the processor; selecting a task using the index; and scheduling the selected task for allocation to the processor; storing assignment costs for pairs of tasks and processors; and automatically adjusting the assignment costs on the basis of information about topology of the computing cluster and information about traffic arriving at links connecting processors in the computing cluster.