当前位置: 首页>>代码示例>>Java>>正文


Java DebugCounterResource类代码示例

本文整理汇总了Java中net.floodlightcontroller.debugcounter.DebugCounterResource的典型用法代码示例。如果您正苦于以下问题:Java DebugCounterResource类的具体用法?Java DebugCounterResource怎么用?Java DebugCounterResource使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


DebugCounterResource类属于net.floodlightcontroller.debugcounter包,在下文中一共展示了DebugCounterResource类的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getCurrentCapacity

import net.floodlightcontroller.debugcounter.DebugCounterResource; //导入依赖的package包/类
/**
 * Compute the maximum number of flows to be reconciled.
 *
 * It computes the packetIn increment from the counter values in
 * the counter store;
 * Then computes the rate based on the elapsed time
 * from the last query;
 * Then compute the max flow reconcile rate by subtracting the packetIn
 * rate from the hard-coded max system rate.
 * If the system rate is reached or less than MIN_FLOW_RECONCILE_PER_SECOND,
 * set the maximum flow reconcile rate to the MIN_FLOW_RECONCILE_PER_SECOND
 * to prevent starvation.
 * Then convert the rate to an absolute number for the
 * FLOW_RECONCILE_PERIOD.
 * @return
 */
protected int getCurrentCapacity() {
	int minFlows = MIN_FLOW_RECONCILE_PER_SECOND * FLOW_RECONCILE_DELAY_MILLISEC / 1000;

	List<DebugCounterResource> contCtrRsrcList = debugCounterService.getModuleCounterValues(Controller.class.getName());
	for (DebugCounterResource dcr : contCtrRsrcList) {
		if (dcr.getCounterHierarchy().equals("packet-in")) {
			ctrPacketInRsrc = dcr;
			break;
		}
	}

	// If no packetInCounter, then there shouldn't be any flow.
	if (ctrPacketInRsrc == null || ctrPacketInRsrc.getCounterValue() == null || ctrPacketInRsrc.getCounterValue() == 0) {
		logger.debug("counter {} doesn't exist", ctrPacketInRsrc);
		return minFlows;
	}

	// We're the first packet_in
	if (lastPacketInCounter.getCounterValue() == 0) {
		logger.debug("First time get the count for {}", lastPacketInCounter);
		return minFlows;
	}

	int pktInRate = getPktInRate(ctrPacketInRsrc, new Date());

	// Update the last packetInCounter
	lastPacketInCounter.reset();
	int capacity = minFlows;
	if ((pktInRate + MIN_FLOW_RECONCILE_PER_SECOND) <=
			MAX_SYSTEM_LOAD_PER_SECOND) {
		capacity = (MAX_SYSTEM_LOAD_PER_SECOND - pktInRate)
				* FLOW_RECONCILE_DELAY_MILLISEC / 1000;
	}

	if (logger.isTraceEnabled()) {
		logger.trace("Capacity is {}", capacity);
	}
	return capacity;
}
 
开发者ID:xuraylei,项目名称:fresco_floodlight,代码行数:56,代码来源:FlowReconcileManager.java

示例2: getPktInRate

import net.floodlightcontroller.debugcounter.DebugCounterResource; //导入依赖的package包/类
protected int getPktInRate(DebugCounterResource newCnt, Date currentTime) {
	if (newCnt == null ||
			newCnt.getCounterLastModified() == null ||
			newCnt.getCounterValue() == null) {
		return 0;
	}

	// Somehow the system time is messed up. return max packetIn rate
	// to reduce the system load.
	if (newCnt.getCounterLastModified() < lastPacketInCounter.getLastModified()) {
		logger.debug("Time is going backward. new {}, old {}",
				newCnt.getCounterLastModified(),
				lastPacketInCounter.getLastModified());
		return MAX_SYSTEM_LOAD_PER_SECOND;
	}

	long elapsedTimeInSecond = (currentTime.getTime() - lastPacketInCounter.getLastModified()) / 1000;
	if (elapsedTimeInSecond == 0) {
		// This should never happen. Check to avoid division by zero.
		return 0;
	}

	long diff = 0;
	long newValue = newCnt.getCounterValue().longValue();
	long oldValue = lastPacketInCounter.getCounterValue();
	if (newValue < oldValue) {
		// Roll over event
		diff = Long.MAX_VALUE - oldValue + newValue;
	} else {
		diff = newValue - oldValue;
	}

	return (int)(diff/elapsedTimeInSecond);
}
 
开发者ID:xuraylei,项目名称:fresco_floodlight,代码行数:35,代码来源:FlowReconcileManager.java


注:本文中的net.floodlightcontroller.debugcounter.DebugCounterResource类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。