解析Cloudsim中,获取主机违反SLA指标的函数:getSlaTimePerActiveHost()

/*
	 * 注意:该方法中俩个变量:slaViolationTimePerHost表示所有活跃主机总共违反SLA的时间,totalTime表示所有活跃主机的总时间
	 *      但由于最后返回值为二者的比值,即得到违反SLA的比率。故单个活跃主机和所有活跃主机在此没有什么区别。
	 */
	protected static double getSlaTimePerActiveHost(List<Host> hosts) {                //获取每个活跃主机的SLA时间。参数:主机列表。返回:每台活跃主机的SLA时间。
		double slaViolationTimePerHost = 0;                               //每台主机违反SLA的时间
		double totalTime = 0;                                             //总时间

		for (Host _host : hosts) {                                         //第一层增强for循环遍历主机列表集合(依次遍历主机列表中的每个主机)
			
			HostDynamicWorkload host = (HostDynamicWorkload) _host;         //HostDynamicWorkload:支持动态工作负载和性能下降的主机
			double previousTime = -1;                                      //以前的时间
			double previousAllocated = 0;                                  //以前分配的指令数
			double previousRequested = 0;                                  //以前请求的指令数
			boolean previousIsActive = true;                               //以前是否是活跃的

			for (HostStateHistoryEntry entry : host.getStateHistory()) {       //第二层增强for循环遍历主机状态历史记录集合(依次遍历主机状态历史记录列表中的每个历史状态)
				
				if (previousTime != -1 && previousIsActive) {                     //判断以前的时间是否为-1并且以前是否是活跃的
					double timeDiff = entry.getTime() - previousTime;                  //时间段为当前历史状态的时间-以前历史状态时间
					totalTime += timeDiff;                                             //累加计算总时间
					if (previousAllocated < previousRequested) {                  //判断是否违反SLA,即:当分配的Mips小于请求的Mips时候,就违反SLA
						slaViolationTimePerHost += timeDiff;                            //累加计算每台主机违反SLA的时间
					}
				}

				previousAllocated = entry.getAllocatedMips();                    //将历史状态记录表中的某个历史状态的分配的Mips赋值给previousAllocated
				previousRequested = entry.getRequestedMips();                    //将历史状态记录列表中的某个历史状态的请求的Mips赋值给previousRequested
				previousTime = entry.getTime();                                  //将历史状态记录列表中的某个历史状态的时间赋值给previousTime
				previousIsActive = entry.isActive();                             //将历史状态记录表中的某个历史状态的是否活跃赋值给previousIsActive
			}
		}

		return slaViolationTimePerHost / totalTime;                              //返回:每台活跃主机违反SLA比率===每台主机违反SLA时间/总时间
		                                                                        
		
	}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值