如何在SimGrid中计算延迟

时间:2017-11-30 13:35:36

标签: simgrid

我有简单的系统配置,其中存在两个主机并且它们之间存在链接。

<link id="1" bandwidth="1Bps" latency="0"/>

任务从一个主机发送到另一个主机:

msg_task_t task = MSG_task_create("name", 1, 1, NULL);
MSG_task_send(task, "worker");

后一个主机在接收任务时计算时间:

XBT_INFO("time %g", MSG_get_clock());
MSG_task_receive(&task, "worker");
XBT_INFO("time %g", MSG_get_clock());

我希望发送任务会持续1秒,但我有1.08247:

[worker:worker:(2) 0.000000] [example/INFO] time 0
[worker:worker:(2) 1.082474] [example/INFO] time 1.08247

为什么?

1 个答案:

答案 0 :(得分:2)

这是因为默认网络模型通过欺骗用户提供的BW和延迟值来考虑实际观察到的内容。

检查http://hal.inria.fr/hal-00646896/PDF/rr-validity.pdf是否合理(也在TOMACS上发布)。

在代码中,您想要阅读https://github.com/simgrid/simgrid/blob/master/src/surf/network_cm02.cpp#L23您将看到如果您想要的模型可能不是大型系统的代表但更容易理解,您应该通过添加--cfg切换到CM02 = network / model:命令行上的CM02。