1. 程式人生 > >解析Cloudsim中,獲取虛擬機器遷移之前的時間的函式:getTimesBeforeVmMigration()

解析Cloudsim中,獲取虛擬機器遷移之前的時間的函式:getTimesBeforeVmMigration()

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)列表集合
	}