Contiki 如何在Cooja模拟器中计算吞吐量

Contiki 如何在Cooja模拟器中计算吞吐量,contiki,Contiki,大家好 我在cooja模拟器中使用示例/ipv6/rpl udp文件。如何测量网络中的吞吐量 在client.c代码中使用命令“powertrace_start(CLOCK_SECOND*60);”可以获得powertrace输出 我能用这个方法吗 吞吐量=数据包接收/模拟时间 模拟时间=(能量测试类型传输+能量测试类型监听)/32768 这个方法正确吗 提前感谢, Nasrin不,这是不正确的,因为ENERGEST\u TYPE.*是常数 一种方法是使用 例如,假设您有一个C程序,该程序在节点

大家好

我在cooja模拟器中使用示例/ipv6/rpl udp文件。如何测量网络中的吞吐量

在client.c代码中使用命令“powertrace_start(CLOCK_SECOND*60);”可以获得powertrace输出

我能用这个方法吗

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

模拟时间=(能量测试类型传输+能量测试类型监听)/32768

这个方法正确吗

提前感谢,


Nasrin

不,这是不正确的,因为
ENERGEST\u TYPE.*
是常数

一种方法是使用

例如,假设您有一个C程序,该程序在节点每次向另一个节点发送消息时打印“Message Transmited”,并在每次作为消息接收时打印“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>

org.contikios.cooja.plugins.ScriptRunner
[CONFIG_DIR]/test.js
真的
457
4.
427
3.
404

亲爱的@kfx,谢谢你的回答。使用此方法,我将获得接收和发送的数据包总数。此数量应按什么时间划分?以计算网络中的“吞吐量”。(数据包大小为59字节,模拟时间=30分钟)一个选项是使用模拟持续时间。在示例中,
TIMEOUT(100000)
设置模拟的总持续时间。在这种情况下,吞吐量值将非常低。我可以在powertarce.c中使用“全部传输/32768”和“全部侦听/32768”的总次数吗?亲爱的@kfx,谢谢你的回答。在这种情况下,吞吐量值将非常低。我可以在powertarce.c中使用“全部传输/32768”和“全部侦听/32768”的总次数吗?