From: velho Date: Mon, 16 Jul 2007 14:40:33 +0000 (+0000) Subject: Added files to the sendrecv example. X-Git-Tag: v3.3~1555 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/aee89a177a3536e035e38e44500bcee0eb49225d?ds=sidebyside Added files to the sendrecv example. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3805 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/examples/msg/sendrecv/README b/examples/msg/sendrecv/README new file mode 100644 index 0000000000..5577d64076 --- /dev/null +++ b/examples/msg/sendrecv/README @@ -0,0 +1,22 @@ +==================================================== + Send/Recv - Simple MSG Example +==================================================== +Directory : SG_INSTALL_DIR/examples/msg/sendrecv +Content : Simple sendrecv msg example +Author : SimGrid Team +==================================================== + + +This directory contains a simple send/recv example +using MSG. The platform file is composed by two +hosts called Imnos and Bellevue. Two process are +implemented in sendrecv.c : sender and receiver. +Sender process runs on "Imnos" host taking as +parameter the receiver hostname "Bellevue". Receiver +process runs on "Bellevue" listening to messages +from any host. + + + + + diff --git a/examples/msg/sendrecv/deployment_sendrecv.xml b/examples/msg/sendrecv/deployment_sendrecv.xml new file mode 100644 index 0000000000..a9c097beb0 --- /dev/null +++ b/examples/msg/sendrecv/deployment_sendrecv.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/examples/msg/sendrecv/platform_sendrecv.xml b/examples/msg/sendrecv/platform_sendrecv.xml new file mode 100644 index 0000000000..8bd9d5ac6d --- /dev/null +++ b/examples/msg/sendrecv/platform_sendrecv.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/examples/msg/sendrecv/sendrecv.c b/examples/msg/sendrecv/sendrecv.c new file mode 100644 index 0000000000..8325890e66 --- /dev/null +++ b/examples/msg/sendrecv/sendrecv.c @@ -0,0 +1,181 @@ +/* $Id$ */ +/* Copyright (c) 2002,2003,2004 Arnaud Legrand. All rights reserved. */ +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#include + +#include "msg/msg.h" /* Yeah! If you want to use msg, you need to include msg/msg.h */ +#include "xbt/sysdep.h" /* calloc */ + +/* Create a log channel to have nice outputs. */ +#include "xbt/log.h" +#include "xbt/asserts.h" + +XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test,"Messages specific for this msg example"); + +int sender(int argc, char *argv[]); +int receiver(int argc, char *argv[]); + +MSG_error_t test_all(const char *platform_file, const char *application_file); + +typedef enum + { + PORT_22 = 0, + MAX_CHANNEL + } channel_t; + +double task_comm_size_lat = 10e0; +double task_comm_size_bw = 10e8; + +/** Emitter function */ +int sender(int argc,char *argv[] ) +{ + m_host_t host = NULL; + double time; + m_task_t task_la=NULL; + m_task_t task_bw=NULL; + char sprintf_buffer_la[64]; + char sprintf_buffer_bw[64]; + + INFO0("sender"); + + host = calloc(1, sizeof(m_host_t)); + + INFO1("host = %s", argv[1]); + + host = MSG_get_host_by_name(argv[1]); + + if(host==NULL){ + INFO1("Unknown host %s. Stopping Now! ", argv[1]); + abort(); + } + + /* Latency */ + time= MSG_get_clock(); + sprintf(sprintf_buffer_la, "latency task"); + task_la = MSG_task_create(sprintf_buffer_la, 0.0, task_comm_size_lat, NULL); + task_la->data = xbt_new(double, 1); + *(double *)task_la->data = time; + INFO1("task_la->data = %le", *((double *)task_la->data)); + MSG_task_put(task_la, host,PORT_22); + + /* Bandwidth */ + time=MSG_get_clock(); + sprintf(sprintf_buffer_bw, "bandwidth task"); + task_bw = MSG_task_create(sprintf_buffer_bw, 0.0, task_comm_size_bw, NULL); + task_bw->data = xbt_new(double, 1); + *(double *)task_bw->data = time; + INFO1("task_bw->data = %le", *((double *)task_bw->data) ); + MSG_task_put(task_bw, host,PORT_22); + + return 0; +} /* end_of_client */ + +/** Receiver function */ +int receiver(int argc, char *argv[]) +{ + double time, time1, sender_time; + m_task_t task_la = NULL; + m_task_t task_bw = NULL; + int a; + double communication_time=0; + + INFO0("receiver"); + + time = MSG_get_clock(); + + /* Get Latency */ + a = MSG_task_get(&task_la,PORT_22); + if (a == MSG_OK) { + time1=MSG_get_clock(); + sender_time= *((double*)(task_la->data)); + time=sender_time; + communication_time=time1-time; + INFO1("Task received : %s", task_la->name); + MSG_task_destroy(task_la); + INFO1("Communic. time %le",communication_time); + INFO1("--- la %f ----",communication_time); + }else{ + xbt_assert0(0,"Unexpected behavior"); + } + + + /* Get Bandwidth */ + a=MSG_task_get(&task_bw,PORT_22); + if (a == MSG_OK) { + time1=MSG_get_clock(); + sender_time= *((double*)(task_bw->data)); + time=sender_time; + communication_time=time1-time; + INFO1("Task received : %s", task_bw->name); + MSG_task_destroy(task_bw); + INFO1("Communic. time %le",communication_time); + INFO1("--- bw %f ----",task_comm_size_bw/communication_time); + }else{ + xbt_assert0(0,"Unexpected behavior"); + } + + + return 0; +}/* end_of_receiver */ + + +/** Test function */ +MSG_error_t test_all(const char *platform_file, + const char *application_file) +{ + + MSG_error_t res = MSG_OK; + + INFO0("test_all"); + + /* Simulation setting */ + MSG_set_channel_number(MAX_CHANNEL); + MSG_paje_output("msg_test.trace"); + MSG_create_environment(platform_file); + + /* Application deployment */ + MSG_function_register("sender", sender); + MSG_function_register("receiver", receiver); + + MSG_launch_application(application_file); + + res = MSG_main(); + return res; +} /* end_of_test_all */ + + +/** Main function */ +int main(int argc, char *argv[]) +{ + MSG_error_t res = MSG_OK; + + + MSG_global_init(&argc,argv); + + + if (argc != 4){ + CRITICAL1 ("Usage: %s platform_file deployment_file \n",argv[0]); + CRITICAL1 ("example: %s msg_platform.xml msg_deployment.xml KCCFLN05_Vegas\n",argv[0]); + exit(1); + } + + /* Options for the workstation_model: + + KCCFLN05 => for maxmin + KCCFLN05_proportional => for proportional (Vegas) + KCCFLN05_Vegas => for TCP Vegas + KCCFLN05_Reno => for TCP Reno + */ + MSG_config("surf_workstation_model", argv[3]); + + res = test_all(argv[1],argv[2]); + + INFO1("Total simulation time: %le", MSG_get_clock()); + + MSG_clean(); + + if(res==MSG_OK) return 0; + else return 1; +} /* end_of_main */ diff --git a/examples/msg/sendrecv/sendrecv_KCCFLN05.tesh.in b/examples/msg/sendrecv/sendrecv_KCCFLN05.tesh.in new file mode 100644 index 0000000000..0e246649a8 --- /dev/null +++ b/examples/msg/sendrecv/sendrecv_KCCFLN05.tesh.in @@ -0,0 +1,20 @@ +#! ./tesh + +p Testing the surf network maxmin fairness model + +$ sendrecv/sendrecv @srcdir@/sendrecv/platform_sendrecv.xml @srcdir@/sendrecv/deployment_sendrecv.xml KCCFLN05 +> [0.000000] [xbt_cfg/INFO] type in variable = 2 +> [0.000000] [msg_test/INFO] test_all +> [Inmos:sender:(1) 0.000000] [msg_test/INFO] sender +> [Inmos:sender:(1) 0.000000] [msg_test/INFO] host = Bellevue +> [Inmos:sender:(1) 0.000000] [msg_test/INFO] task_la->data = 0.000000e+00 +> [Bellevue:receiver:(2) 0.000000] [msg_test/INFO] receiver +> [Inmos:sender:(1) 0.100100] [msg_test/INFO] task_bw->data = 1.001000e-01 +> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] Task received : latency task +> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] Communic. time 1.001000e-01 +> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] --- la 0.100100 ---- +> [Bellevue:receiver:(2) 10000.200100] [msg_test/INFO] Task received : bandwidth task +> [Bellevue:receiver:(2) 10000.200100] [msg_test/INFO] Communic. time 1.000010e+04 +> [Bellevue:receiver:(2) 10000.200100] [msg_test/INFO] --- bw 99999.000010 ---- +> [10000.200100] [msg_test/INFO] Total simulation time: 1.000020e+04 + diff --git a/examples/msg/sendrecv/sendrecv_KCCFLN05_Reno.tesh.in b/examples/msg/sendrecv/sendrecv_KCCFLN05_Reno.tesh.in new file mode 100644 index 0000000000..357b5742a2 --- /dev/null +++ b/examples/msg/sendrecv/sendrecv_KCCFLN05_Reno.tesh.in @@ -0,0 +1,23 @@ +#! ./tesh + +p Testing the surf network Reno fairness model using lagrangian approach + +$ sendrecv/sendrecv @srcdir@/sendrecv/platform_sendrecv.xml @srcdir@/sendrecv/deployment_sendrecv.xml KCCFLN05_Reno +> [0.000000] [xbt_cfg/INFO] type in variable = 2 +> [0.000000] [msg_test/INFO] test_all +> [Inmos:sender:(1) 0.000000] [msg_test/INFO] sender +> [Inmos:sender:(1) 0.000000] [msg_test/INFO] host = Bellevue +> [Inmos:sender:(1) 0.000000] [msg_test/INFO] task_la->data = 0.000000e+00 +> [Bellevue:receiver:(2) 0.000000] [msg_test/INFO] receiver +> [0.100000] [surf_lagrange/INFO] Checking KKT: sat = 9.782929e-03 mu = 9.999998e-09 +> [Inmos:sender:(1) 0.100100] [msg_test/INFO] task_bw->data = 1.001000e-01 +> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] Task received : latency task +> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] Communic. time 1.001000e-01 +> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] --- la 0.100100 ---- +> [0.200100] [surf_lagrange/INFO] Checking KKT: sat = 9.782929e-03 mu = 9.999998e-09 +> [Bellevue:receiver:(2) 10000.199122] [msg_test/INFO] Task received : bandwidth task +> [Bellevue:receiver:(2) 10000.199122] [msg_test/INFO] Communic. time 1.000010e+04 +> [Bellevue:receiver:(2) 10000.199122] [msg_test/INFO] --- bw 99999.009793 ---- +> [10000.199122] [msg_test/INFO] Total simulation time: 1.000020e+04 + + diff --git a/examples/msg/sendrecv/sendrecv_KCCFLN05_Vegas.tesh.in b/examples/msg/sendrecv/sendrecv_KCCFLN05_Vegas.tesh.in new file mode 100644 index 0000000000..bee1fc3f6b --- /dev/null +++ b/examples/msg/sendrecv/sendrecv_KCCFLN05_Vegas.tesh.in @@ -0,0 +1,23 @@ +#! ./tesh + +p Testing the surf network Vegas fairness model using lagrangian approach + +$ sendrecv/sendrecv @srcdir@/sendrecv/platform_sendrecv.xml @srcdir@/sendrecv/deployment_sendrecv.xml KCCFLN05_Vegas +> [0.000000] [xbt_cfg/INFO] type in variable = 2 +> [0.000000] [msg_test/INFO] test_all +> [Inmos:sender:(1) 0.000000] [msg_test/INFO] sender +> [Inmos:sender:(1) 0.000000] [msg_test/INFO] host = Bellevue +> [Inmos:sender:(1) 0.000000] [msg_test/INFO] task_la->data = 0.000000e+00 +> [Bellevue:receiver:(2) 0.000000] [msg_test/INFO] receiver +> [0.100000] [surf_lagrange/INFO] Checking KKT: sat = 1.272565e-02 mu = 9.999999e-07 +> [Inmos:sender:(1) 0.100100] [msg_test/INFO] task_bw->data = 1.001000e-01 +> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] Task received : latency task +> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] Communic. time 1.001000e-01 +> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] --- la 0.100100 ---- +> [0.200100] [surf_lagrange/INFO] Checking KKT: sat = 1.272565e-02 mu = 9.999999e-07 +> [Bellevue:receiver:(2) 10000.198827] [msg_test/INFO] Task received : bandwidth task +> [Bellevue:receiver:(2) 10000.198827] [msg_test/INFO] Communic. time 1.000010e+04 +> [Bellevue:receiver:(2) 10000.198827] [msg_test/INFO] --- bw 99999.012735 ---- +> [10000.198827] [msg_test/INFO] Total simulation time: 1.000020e+04 + + diff --git a/examples/msg/sendrecv/sendrecv_KCCFLN05_proportional.tesh.in b/examples/msg/sendrecv/sendrecv_KCCFLN05_proportional.tesh.in new file mode 100644 index 0000000000..67024e04ab --- /dev/null +++ b/examples/msg/sendrecv/sendrecv_KCCFLN05_proportional.tesh.in @@ -0,0 +1,20 @@ +#! ./tesh + +p Testing the surf network proportional fairness model using SDP approach + +$ sendrecv/sendrecv @srcdir@/sendrecv/platform_sendrecv.xml @srcdir@/sendrecv/deployment_sendrecv.xml KCCFLN05_proportional +> [0.000000] [xbt_cfg/INFO] type in variable = 2 +> [0.000000] [msg_test/INFO] test_all +> [Inmos:sender:(1) 0.000000] [msg_test/INFO] sender +> [Inmos:sender:(1) 0.000000] [msg_test/INFO] host = Bellevue +> [Inmos:sender:(1) 0.000000] [msg_test/INFO] task_la->data = 0.000000e+00 +> [Bellevue:receiver:(2) 0.000000] [msg_test/INFO] receiver +> [Inmos:sender:(1) 0.100010] [msg_test/INFO] task_bw->data = 1.000100e-01 +> [Bellevue:receiver:(2) 0.100010] [msg_test/INFO] Task received : latency task +> [Bellevue:receiver:(2) 0.100010] [msg_test/INFO] Communic. time 1.000100e-01 +> [Bellevue:receiver:(2) 0.100010] [msg_test/INFO] --- la 0.100010 ---- +> [Bellevue:receiver:(2) 1000.199945] [msg_test/INFO] Task received : bandwidth task +> [Bellevue:receiver:(2) 1000.199945] [msg_test/INFO] Communic. time 1.000100e+03 +> [Bellevue:receiver:(2) 1000.199945] [msg_test/INFO] --- bw 999900.074576 ---- +> [1000.199945] [msg_test/INFO] Total simulation time: 1.000200e+03 +