2017-11-30 3 views
2

Ich habe einfache Konfiguration des Systems, wo zwei Hosts und eine Verbindung zwischen ihnen existieren.Wie Latenz in SimGrid berechnet wird

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

Aufgabe wird von einem Host zu einem anderen gesendet:

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

Letztere Host Zeit zählt, während Aufgabe Empfang:

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

Ich erwarte, dass Aufgabe Senden 1 Sekunde dauern würde, aber ich habe 1.08247:

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

Warum ist es?

Antwort

2

Dies liegt daran, dass das Standardnetzwerkmodell Dinge berücksichtigt, die in der Realität beobachtet wurden, indem die vom Benutzer bereitgestellten BW- und Latenzwerte austricksen.

Überprüfen Sie http://hal.inria.fr/hal-00646896/PDF/rr-validity.pdf für die rationale (auch bei TOMACS veröffentlicht).

Im Code möchten Sie https://github.com/simgrid/simgrid/blob/master/src/surf/network_cm02.cpp#L23 lesen Sie werden sehen, dass wenn Sie ein Modell wollen, das vielleicht nicht repräsentativ für große Systeme ist, aber einfacher zu verstehen, sollten Sie zu CM02 wechseln, indem Sie --cfg = network/Modell: CM02 in der Befehlszeile.