@Override public NormalizedResourceOffer getAvailableResources(SupervisorDetails sd) { NormalizedResourceOffer ret = new NormalizedResourceOffer(sd.getTotalResources()); for (SchedulerAssignment assignment: assignments.values()) { for (Entry<WorkerSlot, WorkerResources> entry: assignment.getScheduledResources().entrySet()) { if (sd.getId().equals(entry.getKey().getNodeId())) { ret.remove(entry.getValue(), getResourceMetrics()); } } } return ret; }
@Override public NormalizedResourceOffer getNonBlacklistedClusterAvailableResources(Collection<String> blacklistedSupervisorIds) { NormalizedResourceOffer available = new NormalizedResourceOffer(); for (SupervisorDetails sup : supervisors.values()) { if (!isBlackListed(sup.getId()) && !blacklistedSupervisorIds.contains(sup.getId())) { available.add(sup.getTotalResources()); available.remove(getAllScheduledResourcesForNode(sup.getId()), getResourceMetrics()); } } return available; }
/** * Gets all available resources for this node. * * @return All of the available resources. */ public NormalizedResourceOffer getTotalAvailableResources() { if (sup != null) { NormalizedResourceOffer availableResources = new NormalizedResourceOffer(sup.getTotalResources()); if (availableResources.remove(cluster.getAllScheduledResourcesForNode(sup.getId()), cluster.getResourceMetrics())) { if (!loggedUnderageUsage) { LOG.error("Resources on {} became negative and was clamped to 0 {}.", hostname, availableResources); loggedUnderageUsage = true; } } return availableResources; } else { return new NormalizedResourceOffer(); } }
shortage.remove(available, cluster.getResourceMetrics()); int shortageSlots = neededSlots - availableSlots; LOG.debug("Need {} and {} slots.", needed, neededSlots); int sdAvailableSlots = cluster.getAvailablePorts(sd).size(); readyToRemove.add(supervisorId); shortage.remove(sdAvailable, cluster.getResourceMetrics()); shortageSlots -= sdAvailableSlots; LOG.info("Releasing {} with {} and {} slots leaving {} and {} slots to go", supervisorId,
@Test public void testNodeOverExtendedCpu() { NormalizedResourceOffer availableResources = createOffer(100.0, 0.0); NormalizedResourceOffer scheduledResources = createOffer(110.0, 0.0); availableResources.remove(scheduledResources, new ResourceMetrics(new StormMetricsRegistry())); Assert.assertEquals(0.0, availableResources.getTotalCpu(), 0.001); }
@Test public void testNodeOverExtendedMemory() { NormalizedResourceOffer availableResources = createOffer(0.0, 5.0); NormalizedResourceOffer scheduledResources = createOffer(0.0, 10.0); availableResources.remove(scheduledResources, new ResourceMetrics(new StormMetricsRegistry())); Assert.assertEquals(0.0, availableResources.getTotalMemoryMb(), 0.001); }