本文整理汇总了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;未经允许,请勿转载。 |
请发表评论