2 votes

Comment est calculée la latence dans SimGrid

Je dispose d'une configuration simple du système où deux hôtes et un lien entre eux existent.

Une tâche est envoyée d'un hôte à un autre :

msg_task_t task = MSG_task_create("nom", 1, 1, NULL);
MSG_task_send(task, "travailleur");

L'hôte destinataire mesure le temps de réception de la tâche :

XBT_INFO("temps %g", MSG_get_clock());
MSG_task_receive(&task, "travailleur");
XBT_INFO("temps %g", MSG_get_clock());

Je m'attends à ce que l'envoi de la tâche dure 1 seconde, mais j'ai 1.08247 :

[travailleur:travailleur:(2) 0.000000] [exemple/INFO] temps 0
[travailleur:travailleur:(2) 1.082474] [exemple/INFO] temps 1.08247

Pourquoi est-ce ?

2voto

Martin Quinson Points 11

Cela est dû au fait que le modèle de mise en réseau par défaut prend en compte des éléments qui ont été observés dans la réalité en trompant les valeurs de bande passante et de latence fournies par l'utilisateur.

Consultez http://hal.inria.fr/hal-00646896/PDF/rr-validity.pdf pour la justification (également publiée dans TOMACS).

Dans le code, vous voulez lire https://github.com/simgrid/simgrid/blob/master/src/surf/network_cm02.cpp#L23 Vous verrez que si vous souhaitez un modèle qui n'est peut-être pas très représentatif des systèmes à grande échelle mais plus facile à comprendre, vous devriez passer à CM02 en ajoutant --cfg=network/model:CM02 dans la ligne de commande.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X