From a5830634f03fb2dadd8476f05725a3aae8b0c0d2 Mon Sep 17 00:00:00 2001 From: mquinson Date: Mon, 10 Jul 2006 00:14:40 +0000 Subject: [PATCH] The ENV code which where in the saturation example with no good reason git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2517 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- examples/amok/saturate/env.c | 143 +++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 examples/amok/saturate/env.c diff --git a/examples/amok/saturate/env.c b/examples/amok/saturate/env.c new file mode 100644 index 0000000000..2d7ed277f6 --- /dev/null +++ b/examples/amok/saturate/env.c @@ -0,0 +1,143 @@ +/* $Id$ */ + +/* saturate - link saturation demo of AMOK features */ + +/* Copyright (c) 2003-6 Martin Quinson. 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 +#include +#include + +#include "gras.h" +#include "amok/bandwidth.h" +#include "amok/hostmanagement.h" + +XBT_LOG_NEW_DEFAULT_CATEGORY(saturate,"Messages specific to this example"); + +static void env_hosttohost_bw(int argc, char*argv[]) { + + /* where are the sensors */ + xbt_dynar_t hosts = xbt_dynar_new(sizeof(xbt_host_t),&free_host); + int nb_hosts; + + /* results */ + double sec, bw; + + /* iterators */ + int i; + xbt_host_t h1; + + gras_socket_t peer; /* socket to sensor */ + + /* wait to ensure that all server sockets are there before starting the experiment */ + gras_os_sleep(0.5); + + /* Get the sensor location from argc/argv */ + for (i=1; iname=strdup(argv[i]); + host->port=atoi(argv[i+1]); + INFO2("New sensor: %s:%d",host->name,host->port); + xbt_dynar_push(hosts,&host); + } + nb_hosts = xbt_dynar_length(hosts); + + INFO0(">>> start Test1: ENV end to end mesurements"); + + xbt_dynar_foreach(hosts,i,h1) { + peer = gras_socket_client(h1->name,h1->port); + amok_bw_test(peer,buf_size,exp_size,msg_size,min_duration,&sec,&bw); + INFO6("Bandwidth between me and %s:%d (%d bytes in msgs of %d bytes) took %f sec, achieving %.3f kb/s", + h1->name,h1->port, + exp_size,msg_size, + sec,((double)bw)/1024.0); + } + + xbt_dynar_map(hosts,kill_buddy_dynar); + xbt_dynar_free(&hosts); + +} +/********************************************************************************************/ +static void env_Pairwisehost_bw(int argc, char*argv[]) { + xbt_ex_t e; + + /* where are the sensors */ + xbt_dynar_t hosts = xbt_dynar_new(sizeof(xbt_host_t),&free_host); + int nb_hosts; + + /* getting the name of maestro for the saturation and the concurrent bandwidth measurements */ + char* host_test=argv[0]; + + /* results */ + double sec, bw; + + /* iterators */ + int i,j; + xbt_host_t h1,h2; + + /* socket to sensor */ + gras_socket_t peer; + + /* wait to ensure that all server sockets are there before starting the experiment */ + gras_os_sleep(0.5); + + INFO1(">>>>>< le maestro est: %s ",argv[0]); + /* Get the sensor location from argc/argv */ + for (i=1; iname=strdup(argv[i]); + host->port=atoi(argv[i+1]); + INFO2("New sensor: %s:%d",host->name,host->port); + xbt_dynar_push(hosts,&host); + } + nb_hosts = xbt_dynar_length(hosts); + + INFO0(">>> start Test2: ENV pairwise host bandwidth mesurements"); + xbt_dynar_foreach(hosts,i,h1) { + + TRY { + amok_bw_saturate_start(h1->name,h1->port, + host_test,h1->port,//"Ginette" + msg_size,120); // sturation of the link with msg_size to compute a concurent bandwidth MA //MB + } CATCH(e) { + RETHROW0("Cannot ask hosts to saturate the link: %s"); + } + // gras_os_sleep(1.0); + + xbt_dynar_foreach(hosts,j,h2) { + if (i==j) continue; + + peer = gras_socket_client(h2->name,h2->port); + amok_bw_test(peer,buf_size,exp_size,msg_size,min_duration,&sec,&bw); + INFO6("Bandwidth between me and %s // measurement between me and %s (%d bytes in msgs of %d bytes) took %f sec, achieving %.3f kb/s", + h2->name,h1->name, + exp_size,msg_size, + sec,((double)bw)/1024.0); + + } + amok_bw_saturate_stop(h1->name,h1->port,NULL,NULL); +} + xbt_dynar_map(hosts,kill_buddy_dynar); + xbt_dynar_free(&hosts); + +} + +int maestro(int argc,char *argv[]) { + + gras_init(&argc,argv); + amok_bw_init(); + amok_hm_init(); + + gras_socket_server(3333); /* only so that messages from the transport layer in gras identify us */ + + //env_Pairwisehost_bw(argc,argv); + //env_hosttohost_bw(argc,argv); + + gras_exit(); + return 0; + +} -- 2.20.1