public TopologyDetails simScheduleNextHighest() { TopologyDetails td = tds.pop(); assignedCpu += td.getTotalRequestedCpu(); assignedMemory += td.getTotalRequestedMemOffHeap() + td.getTotalRequestedMemOnHeap(); return td; }
public double getCpuResourceRequest(ISchedulingState cluster) { double sum = 0.0; Set<TopologyDetails> topologyDetailsSet = new HashSet<>(cluster.getTopologies().getTopologiesOwnedBy(userId)); for (TopologyDetails topo : topologyDetailsSet) { sum += topo.getTotalRequestedCpu(); } return sum; }
/** * Get a score for the simulated user. This is used to sort the users, by their highest priority topology. * The only requirement is that if the user is over their guarantees, or there are no available resources the * returned score will be > 0. If they are under their guarantee it must be negative. * @param availableCpu available CPU on the cluster. * @param availableMemory available memory on the cluster. * @param td the topology we are looking at. * @return the score. */ protected double getScore(double availableCpu, double availableMemory, TopologyDetails td) { //(Requested + Assigned - Guaranteed)/Available if (td == null || availableCpu <= 0 || availableMemory <= 0) { return Double.MAX_VALUE; } double wouldBeCpu = assignedCpu + td.getTotalRequestedCpu(); double wouldBeMem = assignedMemory + td.getTotalRequestedMemOffHeap() + td.getTotalRequestedMemOnHeap(); double cpuScore = (wouldBeCpu - guaranteedCpu) / availableCpu; double memScore = (wouldBeMem - guaranteedMemory) / availableMemory; return Math.max(cpuScore, memScore); }
@Override public List<TopologyDetails> getOrderedTopologies(ISchedulingState cluster, Map<String, User> userMap) { double cpuAvail = cluster.getClusterTotalCpuResource(); double memAvail = cluster.getClusterTotalMemoryResource(); List<TopologyDetails> allUserTopologies = new ArrayList<>(); List<SimulatedUser> users = new ArrayList<>(); for (User u : userMap.values()) { users.add(getSimulatedUserFor(u, cluster)); } while (!users.isEmpty()) { Collections.sort(users, new SimulatedUserComparator(cpuAvail, memAvail)); SimulatedUser u = users.get(0); TopologyDetails td = u.getNextHighest(); if (td == null) { users.remove(0); } else { double score = u.getScore(cpuAvail, memAvail); td = u.simScheduleNextHighest(); LOG.info("SIM Scheduling {} with score of {}", td.getId(), score); cpuAvail -= td.getTotalRequestedCpu(); memAvail -= (td.getTotalRequestedMemOffHeap() + td.getTotalRequestedMemOnHeap()); allUserTopologies.add(td); } } return allUserTopologies; }
@Override public String toString() { return "Name: " + getName() + " id: " + getId() + " Priority: " + getTopologyPriority() + " Uptime: " + getUpTime() + " CPU: " + getTotalRequestedCpu() + " Memory: " + (getTotalRequestedMemOffHeap() + getTotalRequestedMemOnHeap()); }
LOG.debug("attempting to make space for topo {} from user {}", td.getName(), td.getTopologySubmitter()); int tdIndex = reversedList.indexOf(td); double cpuNeeded = td.getTotalRequestedCpu(); double memoryNeeded = td.getTotalRequestedMemOffHeap() + td.getTotalRequestedMemOnHeap(); SchedulerAssignment assignment = cluster.getAssignmentById(td.getId());
requestedNonSharedMemOnHeap = td.getRequestedNonSharedOnHeap(); requestedNonSharedMemOffHeap = td.getRequestedNonSharedOffHeap(); requestedCpu = td.getTotalRequestedCpu(); assignedMemOnHeap = 0.0; assignedMemOffHeap = 0.0;
public double getCPUResourceUsedByUser() { double sum = 0.0; for (TopologyDetails topo : this.runningQueue) { sum += topo.getTotalRequestedCpu(); } return sum; }
@Override public String toString() { return "Name: " + this.getName() + " id: " + this.getId() + " Priority: " + this.getTopologyPriority() + " Uptime: " + this.getUpTime() + " CPU: " + this.getTotalRequestedCpu() + " Memory: " + (this.getTotalRequestedMemOffHeap() + this.getTotalRequestedMemOnHeap()); }
double requestedMemOnHeap = td.getTotalRequestedMemOnHeap(); double requestedMemOffHeap = td.getTotalRequestedMemOffHeap(); double requestedCpu = td.getTotalRequestedCpu(); double assignedMemOnHeap = 0.0; double assignedMemOffHeap = 0.0;
double cpuNeeded = td.getTotalRequestedCpu() / submitter.getCPUResourceGuaranteed(); double memoryNeeded = (td.getTotalRequestedMemOffHeap() + td.getTotalRequestedMemOnHeap()) / submitter.getMemoryResourceGuaranteed();