大家好,
我在cooja模拟器中使用example / ipv6 / rpl-udp文件。如何衡量网络中的吞吐量?
在client.c代码中使用命令“powertrace_start(CLOCK_SECOND * 60);”,我得到了Powertrace输出。
我可以使用这种方法吗?
吞吐量=收到的数据包/模拟时间
模拟时间=(ENERGEST_TYPE_TRANSMIT + ENERGEST_TYPE_LISTEN)/ 32768
方法是否正确?
提前致谢,
娜斯林
答案 0 :(得分:1)
不,这是不正确的,因为ENERGEST_TYPE_*
是常量。
一种方法是使用Cooja simulator scripts。
例如,假设您有一个C程序,每次节点向另一个节点发送消息时都会打印“Message transmit”,并且每次收到消息时都会打印“Message received”。
Cooja脚本可以在特定时间自动运行模拟并计算消息。这段代码适合我:
TIMEOUT(100000); // simulation duration in milliseconds
num_messages_tx = 0;
num_messages_rx = 0;
timeout_function = function () {
log.log("Script timed out.\n");
log.log("Messages transmitted: " + num_messages_tx + " \n");
log.log("Messages received: " + num_messages_rx + " \n");
log.testOK();
}
while (true) {
if (msg) {
if(msg.startsWith("Message transmitted")) {
num_messages_tx += 1;
}
if(msg.startsWith("Message received")) {
num_messages_rx += 1;
}
}
YIELD();
}
要开始使用它,请将代码(其JavaScript)保存在文件test.js
中,并将其添加到您的.csc
Cooja配置文件中:
<plugin>
org.contikios.cooja.plugins.ScriptRunner
<plugin_config>
<scriptfile>[CONFIG_DIR]/test.js</scriptfile>
<active>true</active>
</plugin_config>
<width>457</width>
<z>4</z>
<height>427</height>
<location_x>3</location_x>
<location_y>404</location_y>
</plugin>