package example.load; import schedframe.resources.ResourceStatus; import schedframe.resources.computing.Core; import schedframe.resources.computing.Processor; import schedframe.resources.computing.profiles.energy.ResourceEvent; import schedframe.resources.devices.PhysicalResource; import schedframe.scheduling.manager.tasks.JobRegistry; public class ProcessorLoadEstimationPlugin extends BaseLoadEstimationPlugin{ public double estimateUtlization(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { Processor proc = (Processor) resource; double sumCoresLoad = 0; if(proc.getStatus().equals(ResourceStatus.BUSY)){ sumCoresLoad = 1; } else { if(proc.getCores().size() > 0){ for(Core core: proc.getCores()){ if(core.getStatus().equals(ResourceStatus.BUSY)){ sumCoresLoad = sumCoresLoad + 1; } } sumCoresLoad = sumCoresLoad / proc.getCores().size(); } } double processorLoad = 100 * sumCoresLoad; double calendarLoad = resource.getLoadInterface().getLoadCalendar().getCurrentLoad(); double totalLoad = processorLoad + calendarLoad; if (totalLoad > 100) return 100; else return totalLoad; } }