如何计算Cooja模拟器的吞吐量

时间:2018-01-30 11:29:40

标签: contiki

大家好,

我在cooja模拟器中使用example / ipv6 / rpl-udp文件。如何衡量网络中的吞吐量?

在client.c代码中使用命令“powertrace_start(CLOCK_SECOND * 60);”,我得到了Powertrace输出。

我可以使用这种方法吗?

吞吐量=收到的数据包/模拟时间

模拟时间=(ENERGEST_TYPE_TRANSMIT + ENERGEST_TYPE_LISTEN)/ 32768

方法是否正确?

提前致谢,

娜斯林

1 个答案:

答案 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>