计算 Veins-LTE 中 SimpleServerApp 的端到端延迟
Calculating end-to-end delay for SimpleServerApp in Veins-LTE
我正在尝试计算 Veins-LTE 中 SimpleServerApp 的端到端延迟,但无法获得任何结果,当我打开结果文件时,与延迟相关的所有统计数据均为 0 或 NaN .
我查看了 Tic-Toc 教程并尝试做类似的事情,但那样我什至没有得到统计数据:
在模块上:
delayVector.record(delay);
delayHist.collect(delay);
并且在调用 finish() 时:
delayHist.recordAs("delayFinish");
哪里
simtime_t delay;
cOutVector delayVector;
cLongHistogram delayHist;
然后我尝试从其他统计记录中复制程序,但我认为不能用于我的情况,因为我想发送一个长:
关于 NED 文件:
@signal[delay](type="long");
@statistic[delay](title="delay"; source="delay"; record=vector, stats, histogram);
在模块上:
emit(delay,delay); //where the first delay is the signal and the second one, the value.
这就是我计算延迟的方法:
在发送模块上:
msg->setSendingTime();
在接收模块上:
simtime_t delay = simTime() - msg->getSendingTime();
如有任何帮助,我将不胜感激!
自版本 4.1
OMNeT++ 引入了 statistics/metrics 使用信号机制收集和记录的概念。
简而言之,信号机制的工作原理如下:将给定值附加到(类型的内置对象)信号,并将此信息记录到输出文件(作为标量或向量),稍后可以分析以推断某些行为。
如果您真的不了解此机制的工作原理,请务必先阅读 OMNeT++ 手册的以下部分:
一旦您全神贯注于这些概念,就输出结果而言,您会更加自在地获得您想要的东西。
就您的问题而言,如果您想使用 SimpleServerApp
中的信号机制,您首先必须 声明信号和相应的统计数据 .ned
文件:
@signal[nameOfSignal](type="sameAsTypeOfVariable");
@statistic[nameOfStatistic](title="nameToAppearInTheOutputFile"; source="nameOfTheSourceOfThisStatistic"; record=typeOfStat1, typeOfStat2, typeOfStat2);
然后你需要在.h
中声明信号变量:
simsignal_t nameOfMetricSignal;
然后在 initialize()
和 .cc
中注册信号 与您在 .ned
中使用的信号名称相同:
nameOfMetricSignal = registerSignal("nameOfSignal");
最后,您所要做的就是emit()
信号。即,将值附加到信号上,让它被记录下来。您要执行此操作的位置取决于您的实施。
emit(nameOfMetricSignal, theVariableToBeAttached);
对你来说,应该是这样的:
NED:
@signal[delay](type="float");
@statistic[delay](title="delay"; source="delay"; record=mean, sum, stats, vector);
.h
simsignal_t delaySignal;
.cc
delaySignal = registerSignal("delay");
.cc
emit(delaySignal, delay);
如果您得到 0
或 Nan
,这可能是由于除法错误的数字,与变量类型相比的信号类型错误。另外,请确保在 omnetpp.ini
中未关闭矢量和标量记录 (false
)
我正在尝试计算 Veins-LTE 中 SimpleServerApp 的端到端延迟,但无法获得任何结果,当我打开结果文件时,与延迟相关的所有统计数据均为 0 或 NaN .
我查看了 Tic-Toc 教程并尝试做类似的事情,但那样我什至没有得到统计数据:
在模块上:
delayVector.record(delay);
delayHist.collect(delay);
并且在调用 finish() 时:
delayHist.recordAs("delayFinish");
哪里
simtime_t delay;
cOutVector delayVector;
cLongHistogram delayHist;
然后我尝试从其他统计记录中复制程序,但我认为不能用于我的情况,因为我想发送一个长:
关于 NED 文件:
@signal[delay](type="long");
@statistic[delay](title="delay"; source="delay"; record=vector, stats, histogram);
在模块上:
emit(delay,delay); //where the first delay is the signal and the second one, the value.
这就是我计算延迟的方法:
在发送模块上:
msg->setSendingTime();
在接收模块上:
simtime_t delay = simTime() - msg->getSendingTime();
如有任何帮助,我将不胜感激!
自版本 4.1
OMNeT++ 引入了 statistics/metrics 使用信号机制收集和记录的概念。
简而言之,信号机制的工作原理如下:将给定值附加到(类型的内置对象)信号,并将此信息记录到输出文件(作为标量或向量),稍后可以分析以推断某些行为。
如果您真的不了解此机制的工作原理,请务必先阅读 OMNeT++ 手册的以下部分:
一旦您全神贯注于这些概念,就输出结果而言,您会更加自在地获得您想要的东西。
就您的问题而言,如果您想使用 SimpleServerApp
中的信号机制,您首先必须 声明信号和相应的统计数据 .ned
文件:
@signal[nameOfSignal](type="sameAsTypeOfVariable");
@statistic[nameOfStatistic](title="nameToAppearInTheOutputFile"; source="nameOfTheSourceOfThisStatistic"; record=typeOfStat1, typeOfStat2, typeOfStat2);
然后你需要在.h
中声明信号变量:
simsignal_t nameOfMetricSignal;
然后在 initialize()
和 .cc
中注册信号 与您在 .ned
中使用的信号名称相同:
nameOfMetricSignal = registerSignal("nameOfSignal");
最后,您所要做的就是emit()
信号。即,将值附加到信号上,让它被记录下来。您要执行此操作的位置取决于您的实施。
emit(nameOfMetricSignal, theVariableToBeAttached);
对你来说,应该是这样的:
NED:
@signal[delay](type="float");
@statistic[delay](title="delay"; source="delay"; record=mean, sum, stats, vector);
.h
simsignal_t delaySignal;
.cc
delaySignal = registerSignal("delay");
.cc
emit(delaySignal, delay);
如果您得到 0
或 Nan
,这可能是由于除法错误的数字,与变量类型相比的信号类型错误。另外,请确保在 omnetpp.ini
false
)