init
This commit is contained in:
153
src/org/fog/utils/TimeKeeper.java
Normal file
153
src/org/fog/utils/TimeKeeper.java
Normal file
@@ -0,0 +1,153 @@
|
||||
package org.fog.utils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.cloudbus.cloudsim.core.CloudSim;
|
||||
import org.fog.entities.Tuple;
|
||||
|
||||
public class TimeKeeper {
|
||||
|
||||
private static TimeKeeper instance;
|
||||
|
||||
private long simulationStartTime;
|
||||
private int count;
|
||||
private Map<Integer, Double> emitTimes;
|
||||
private Map<Integer, Double> endTimes;
|
||||
private Map<Integer, List<Integer>> loopIdToTupleIds;
|
||||
private Map<Integer, Double> tupleIdToCpuStartTime;
|
||||
private Map<String, Double> tupleTypeToAverageCpuTime;
|
||||
private Map<String, Integer> tupleTypeToExecutedTupleCount;
|
||||
|
||||
private Map<Integer, Double> loopIdToCurrentAverage;
|
||||
private Map<Integer, Integer> loopIdToCurrentNum;
|
||||
|
||||
public static TimeKeeper getInstance(){
|
||||
if(instance == null)
|
||||
instance = new TimeKeeper();
|
||||
return instance;
|
||||
}
|
||||
|
||||
public int getUniqueId(){
|
||||
return count++;
|
||||
}
|
||||
|
||||
public void tupleStartedExecution(Tuple tuple){
|
||||
tupleIdToCpuStartTime.put(tuple.getCloudletId(), CloudSim.clock());
|
||||
}
|
||||
|
||||
public void tupleEndedExecution(Tuple tuple){
|
||||
if(!tupleIdToCpuStartTime.containsKey(tuple.getCloudletId()))
|
||||
return;
|
||||
double executionTime = CloudSim.clock() - tupleIdToCpuStartTime.get(tuple.getCloudletId());
|
||||
if(!tupleTypeToAverageCpuTime.containsKey(tuple.getTupleType())){
|
||||
tupleTypeToAverageCpuTime.put(tuple.getTupleType(), executionTime);
|
||||
tupleTypeToExecutedTupleCount.put(tuple.getTupleType(), 1);
|
||||
} else{
|
||||
double currentAverage = tupleTypeToAverageCpuTime.get(tuple.getTupleType());
|
||||
int currentCount = tupleTypeToExecutedTupleCount.get(tuple.getTupleType());
|
||||
tupleTypeToAverageCpuTime.put(tuple.getTupleType(), (currentAverage*currentCount+executionTime)/(currentCount+1));
|
||||
}
|
||||
}
|
||||
|
||||
public Map<Integer, List<Integer>> loopIdToTupleIds(){
|
||||
return getInstance().getLoopIdToTupleIds();
|
||||
}
|
||||
|
||||
private TimeKeeper(){
|
||||
count = 1;
|
||||
setEmitTimes(new HashMap<Integer, Double>());
|
||||
setEndTimes(new HashMap<Integer, Double>());
|
||||
setLoopIdToTupleIds(new HashMap<Integer, List<Integer>>());
|
||||
setTupleTypeToAverageCpuTime(new HashMap<String, Double>());
|
||||
setTupleTypeToExecutedTupleCount(new HashMap<String, Integer>());
|
||||
setTupleIdToCpuStartTime(new HashMap<Integer, Double>());
|
||||
setLoopIdToCurrentAverage(new HashMap<Integer, Double>());
|
||||
setLoopIdToCurrentNum(new HashMap<Integer, Integer>());
|
||||
}
|
||||
|
||||
public int getCount() {
|
||||
return count;
|
||||
}
|
||||
|
||||
public void setCount(int count) {
|
||||
this.count = count;
|
||||
}
|
||||
|
||||
public Map<Integer, Double> getEmitTimes() {
|
||||
return emitTimes;
|
||||
}
|
||||
|
||||
public void setEmitTimes(Map<Integer, Double> emitTimes) {
|
||||
this.emitTimes = emitTimes;
|
||||
}
|
||||
|
||||
public Map<Integer, Double> getEndTimes() {
|
||||
return endTimes;
|
||||
}
|
||||
|
||||
public void setEndTimes(Map<Integer, Double> endTimes) {
|
||||
this.endTimes = endTimes;
|
||||
}
|
||||
|
||||
public Map<Integer, List<Integer>> getLoopIdToTupleIds() {
|
||||
return loopIdToTupleIds;
|
||||
}
|
||||
|
||||
public void setLoopIdToTupleIds(Map<Integer, List<Integer>> loopIdToTupleIds) {
|
||||
this.loopIdToTupleIds = loopIdToTupleIds;
|
||||
}
|
||||
|
||||
public Map<String, Double> getTupleTypeToAverageCpuTime() {
|
||||
return tupleTypeToAverageCpuTime;
|
||||
}
|
||||
|
||||
public void setTupleTypeToAverageCpuTime(
|
||||
Map<String, Double> tupleTypeToAverageCpuTime) {
|
||||
this.tupleTypeToAverageCpuTime = tupleTypeToAverageCpuTime;
|
||||
}
|
||||
|
||||
public Map<String, Integer> getTupleTypeToExecutedTupleCount() {
|
||||
return tupleTypeToExecutedTupleCount;
|
||||
}
|
||||
|
||||
public void setTupleTypeToExecutedTupleCount(
|
||||
Map<String, Integer> tupleTypeToExecutedTupleCount) {
|
||||
this.tupleTypeToExecutedTupleCount = tupleTypeToExecutedTupleCount;
|
||||
}
|
||||
|
||||
public Map<Integer, Double> getTupleIdToCpuStartTime() {
|
||||
return tupleIdToCpuStartTime;
|
||||
}
|
||||
|
||||
public void setTupleIdToCpuStartTime(Map<Integer, Double> tupleIdToCpuStartTime) {
|
||||
this.tupleIdToCpuStartTime = tupleIdToCpuStartTime;
|
||||
}
|
||||
|
||||
public long getSimulationStartTime() {
|
||||
return simulationStartTime;
|
||||
}
|
||||
|
||||
public void setSimulationStartTime(long simulationStartTime) {
|
||||
this.simulationStartTime = simulationStartTime;
|
||||
}
|
||||
|
||||
public Map<Integer, Double> getLoopIdToCurrentAverage() {
|
||||
return loopIdToCurrentAverage;
|
||||
}
|
||||
|
||||
public void setLoopIdToCurrentAverage(Map<Integer, Double> loopIdToCurrentAverage) {
|
||||
this.loopIdToCurrentAverage = loopIdToCurrentAverage;
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getLoopIdToCurrentNum() {
|
||||
return loopIdToCurrentNum;
|
||||
}
|
||||
|
||||
public void setLoopIdToCurrentNum(Map<Integer, Integer> loopIdToCurrentNum) {
|
||||
this.loopIdToCurrentNum = loopIdToCurrentNum;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user