X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/be437b7fa306304527b4b99a22d4bd017586cd68..567c254430a96af16846fd14c2b84af8af36a056:/src/amok/Bandwidth/bandwidth.c diff --git a/src/amok/Bandwidth/bandwidth.c b/src/amok/Bandwidth/bandwidth.c index 74400db016..4b05ce428d 100644 --- a/src/amok/Bandwidth/bandwidth.c +++ b/src/amok/Bandwidth/bandwidth.c @@ -118,7 +118,7 @@ void amok_bw_bw_leave() { * launched. Sizes (both \a exp_size and \a msg_size) will be multiplicated by * (\a min_duration / measured_duration) (plus 10% to be sure to eventually * reach the \a min_duration). In that case, the reported bandwidth and - * duration are the ones of the last run. \a msg_size cannot go over 128Mb + * duration are the ones of the last run. \a msg_size cannot go over 64Mb * because we need to malloc a block of this size in RL to conduct the * experiment, and we still don't want to visit the swap. * @@ -184,8 +184,8 @@ void amok_bw_test(gras_socket_t peer, double meas_duration=*sec; request->exp_size = request->exp_size * (min_duration / meas_duration) * 1.1; request->msg_size = request->msg_size * (min_duration / meas_duration) * 1.1; - if (request->msg_size > 128*1024*1024) - request->msg_size = 128*1024*1024; + if (request->msg_size > 64*1024*1024) + request->msg_size = 64*1024*1024; VERB5("The experiment was too short (%f sec<%f sec). Redo it with exp_size=%ld msg_size=%ld (got %fkb/s)", meas_duration,min_duration,request->exp_size,request->msg_size,((double)exp_size) / *sec/1024); @@ -375,21 +375,29 @@ void amok_bw_request(const char* from_name,unsigned int from_port, /* The request */ bw_request_t request; bw_res_t result; - +xbt_ex_t e; request=xbt_new0(s_bw_request_t,1); request->buf_size=buf_size; request->exp_size=exp_size; request->msg_size=msg_size; request->min_duration = min_duration; + request->peer.name = (char*)to_name; request->peer.port = to_port; + sock = gras_socket_client(from_name,from_port); + + + DEBUG4("Ask for a BW test between %s:%d and %s:%d", from_name,from_port, to_name,to_port); - + TRY{ gras_msg_rpccall(sock,20*60,gras_msgtype_by_name("BW request"), &request, &result); - + }CATCH(e){ + if (e.value==1) THROW1(0,1,"%s",to_name); + THROW1(0,0,"%s",from_name); + } if (sec) *sec=result->sec; if (bw) @@ -411,19 +419,23 @@ int amok_bw_cb_bw_request(gras_msg_cb_ctx_t ctx, bw_request_t request = *(bw_request_t*)payload; bw_res_t result = xbt_new0(s_bw_res_t,1); gras_socket_t peer,asker; + xbt_ex_t e; asker=gras_msg_cb_ctx_from(ctx); VERB4("Asked by %s:%d to conduct a bw XP with %s:%d", gras_socket_peer_name(asker),gras_socket_peer_port(asker), + request->peer.name,request->peer.port); peer = gras_socket_client(request->peer.name,request->peer.port); +TRY{ amok_bw_test(peer, request->buf_size,request->exp_size,request->msg_size, request->min_duration, &(result->sec),&(result->bw)); - + gras_msg_rpcreturn(240,ctx,&result); - + }CATCH(e){THROW1(0,1,"%s",request->host.name); + } gras_os_sleep(1); gras_socket_close(peer); /* FIXME: it should be blocking in RL until everything is sent */ free(request->peer.name);