X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/abb2041092bc40c09f17255e0c97844674a5eb1f..5fc0edd948980d84a410a7e923dc19350c71edcc:/include/amok/bandwidth.h diff --git a/include/amok/bandwidth.h b/include/amok/bandwidth.h index 55cc5b699a..d5d6a77270 100644 --- a/include/amok/bandwidth.h +++ b/include/amok/bandwidth.h @@ -11,15 +11,15 @@ #define AMOK_BANDWIDTH_H #include "amok/base.h" - -/* module handling */ - /** \addtogroup AMOK_bw * \brief Test the bandwidth between two nodes * - * This module allows you to retrieve the bandwidth between to arbitrary hosts, - * provided that they run some GRAS process which initialized this module. + * This module allows you to retrieve the bandwidth between to arbitrary hosts + * and saturating the links leading to them, provided that they run some GRAS + * process which initialized this module. + * + * \htmlonly

Bandwidth measurement

\endhtmlonly * * Retrieving the bandwidth is usually done by active measurment: one send * a packet of known size, time how long it needs to go back and forth, @@ -52,17 +52,45 @@ * buf_size=32k, msg_size=16k and exp_size=64k. That means that the * socket will be prepared to accept 32k in its buffer and then four * messages of 16k will be sent (so that the total amount of data equals - * 64k). Of course, you can use other values if you want to. + * 64k). Of course, you can use other values if you want to. * * \htmlonly - * amok bandwidth measurement protocol
+ *
amok bandwidth measurement protocol
+ * Fig 1: AMOK bandwidth measurement protocol.
+ *

Link saturation

* \endhtmlonly * - * \todo Cleanup and implement the link saturation stuff. + * You sometimes want to try saturating some link during the network + * related experiments (at least, we did ;). This also can turn quite + * untrivial to do, unless you use this great module. You can either ask + * for the saturation between the current host and a distant one with + * amok_bw_saturate_begin() or between two distant hosts with + * amok_bw_saturate_start(). In any case, remember that gras actors + * (processes) are not interruptible. It means that an actor you + * instructed to participate to a link saturation experiment will not do + * anything else until it is to its end (either because the asked duration + * was done or because someone used amok_bw_saturate_stop() on the emitter + * end of the experiment). + * + * The following figure depicts the used protocol. Note that any + * handshaking messages internal messages are omitted for sake of + * simplicity. In this example, the experiment ends before the planned + * experiment duration is over because one host use the + * amok_bw_saturate_stop() function, but things are not really different + * if the experiment stops alone. Also, it is not mandatory that the host + * calling amok_bw_saturate_stop() is the same than the one which called + * amok_bw_saturate_start(), despite what is depicted here. + * + * \htmlonly + *
amok bandwidth saturation protocol
+ * Fig 2: AMOK link saturation protocol.
+ * \endhtmlonly * * @{ */ +/* module handling */ + void amok_bw_init(void); void amok_bw_exit(void); @@ -75,46 +103,25 @@ void amok_bw_request(const char* from_name,unsigned int from_port, unsigned long int buf_size,unsigned long int exp_size,unsigned long int msg_size, /*OUT*/ double *sec, double*bw); -/** @} */ -#if 0 +double * amok_bw_matrix(xbt_dynar_t hosts, /* dynar of xbt_host_t */ + int buf_size_bw, int exp_size_bw, int msg_size_bw); /* *************************************************************************** * Link saturation * ***************************************************************************/ -/** - * grasbw_saturate_start: - * @from_name: Name of the host we are asking to do a experiment with (to_name:to_port) - * @from_port: port on which the process we are asking for an experiment is listening - * (for message, do not give a raw socket here. The needed raw socket will be negociated - * between the peers) - * @to_name: Name of the host with which we should conduct the experiment - * @to_port: port on which the peer process is listening for message - * @msgSize: Size of each message sent. - * @timeout: How long in maximum should be the saturation. - * - * Ask the process 'from_name:from_port' to start to saturate the link between itself - * and to_name:to_name. - */ -void grasbw_saturate_start(const char* from_name,unsigned int from_port, - const char* to_name,unsigned int to_port, - unsigned int msgSize, unsigned int timeout); - -/** - * grasbw_saturate_stop: - * @from_name: Name of the host we are asking to do a experiment with (to_name:to_port) - * @from_port: port on which the process we are asking for an experiment is listening - * (for message, do not give a raw socket here. The needed raw socket will be negociated - * between the peers) - * @to_name: Name of the host with which we should conduct the experiment - * @to_port: port on which the peer process is listening for message - * - * Ask the process 'from_name:from_port' to stop saturating the link between itself - * and to_name:to_name. - */ -void grasbw_saturate_stop(const char* from_name,unsigned int from_port, - const char* to_name,unsigned int to_port); +void amok_bw_saturate_start(const char* from_name,unsigned int from_port, + const char* to_name,unsigned int to_port, + unsigned int msg_size, double duration); + +void amok_bw_saturate_begin(const char* to_name,unsigned int to_port, + unsigned int msg_size, double duration, + /*out*/ double *elapsed, double *bw); + +void amok_bw_saturate_stop(const char* from_name,unsigned int from_port, + /*out*/ double *time, double *bw); + +/** @} */ -#endif /* if 0 */ #endif /* AMOK_BANDWIDTH_H */