private String getLeastLoadedRM()
    {
        int minLoad = Integer.MAX_VALUE;
        String minRM = null;
        for (String rm : loadEstimates.keySet()) {
            int load = loadEstimates.get(rm);
            if (load < minLoad) {
                minLoad = load;
                minRM = rm;
            }
        }
        
        // Don't schedule if the minimum load is higher than just 25% space left in the job queues
        if (minRM == null) {
            System.out.println("Scheduler: no RMs found");
            return null;
        } else if (minLoad > (Cluster.SIZE + RMNode.MAX_QUEUE_SIZE) * 0.75) {
            System.out.println("Scheduler: all RMs overcapacity (minLoad: " + minLoad + ")");
            return null;
        } else {
            return minRM;
        }
    }