解析Cloudsim中,獲取虛擬機器遷移之前的時間的函式:getTimesBeforeVmMigration()
阿新 • • 發佈:2018-12-12
public static List<Double> getTimesBeforeVmMigration(List<Vm> vms) { //獲取虛擬機器遷移之前的時間。引數:虛擬機器列表。返回:虛擬機器遷移之前的時間列表。 List<Double> timeBeforeVmMigration = new LinkedList<Double>(); //例項化一個double型別的列表集合--timeBeforeVmMigration for (Vm vm : vms) { //第一層增強for迴圈遍歷虛擬機器列表(依次遍歷虛擬機器列表中的每個虛擬機器) boolean previousIsInMigration = false; //以前是否遷移 double lastTimeMigrationFinished = 0; //上次遷移完成的時間 for (VmStateHistoryEntry entry : vm.getStateHistory()) { //第二層增強for迴圈遍歷虛擬機器狀態歷史記錄集合(依次遍歷虛擬機器狀態歷史記錄列表中的每個歷史狀態) if (previousIsInMigration == true && entry.isInMigration() == false) { //判斷以前是否遷移並且當前歷史狀態是否遷移,如果以前在遷移並且當前沒有遷移 timeBeforeVmMigration.add(entry.getTime() - lastTimeMigrationFinished); //通過當前時間減去上次遷移完成時間得到虛擬機器遷移之前的時間,並將值新增到列表集合(timeBeforeVmMigration) } if (previousIsInMigration == false && entry.isInMigration() == true) { //判斷以前是否遷移並且當前歷史狀態是否遷移,如果以前沒有遷移並且當前發生遷移 lastTimeMigrationFinished = entry.getTime(); //將當前歷史狀態的時間賦值給上次遷移完成時間(lastTimeMigrationFinished) } previousIsInMigration = entry.isInMigration(); //將當前歷史狀態是否發生遷移賦值給以前是否遷移(previousIsInMigration),以便進行下個歷史狀態的迴圈。 } } return timeBeforeVmMigration; //返回虛擬機器遷移之前的時間(Double)列表集合 }