From: mquinson Date: Thu, 1 Apr 2010 13:41:39 +0000 (+0000) Subject: Add a pimple to get the ability to trace the amount of messages per size as histogram... X-Git-Tag: SVN~323 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/101b9f6ed0eda560b20d652818cd9956479ebece Add a pimple to get the ability to trace the amount of messages per size as histogram in gnuplot. Should probably be done in a proper way. One day. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7417 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/examples/msg/masterslave/masterslave_mailbox.c b/examples/msg/masterslave/masterslave_mailbox.c index 32e5051a0c..e614a3400f 100644 --- a/examples/msg/masterslave/masterslave_mailbox.c +++ b/examples/msg/masterslave/masterslave_mailbox.c @@ -54,7 +54,7 @@ int master(int argc, char *argv[]) } // INFO0("Goodbye now!"); - exit(0); + return 0; } /* end_of_master */ /** Receiver function */ @@ -125,6 +125,7 @@ int main(int argc, char *argv[]) exit(1); } res = test_all(argv[1],argv[2]); + SIMIX_message_sizes_output("toto.txt"); MSG_clean(); if(res==MSG_OK) diff --git a/include/xbt.h b/include/xbt.h index b168bc3806..372e80e9a8 100644 --- a/include/xbt.h +++ b/include/xbt.h @@ -31,4 +31,7 @@ #include #include +/* pimple to display the message sizes */ +XBT_PUBLIC(void) SIMIX_message_sizes_output(const char *filename); + #endif /* xbt_H */ diff --git a/src/simix/smx_network.c b/src/simix/smx_network.c index 9c17f8b87c..b1608ca15f 100644 --- a/src/simix/smx_network.c +++ b/src/simix/smx_network.c @@ -8,6 +8,10 @@ #include "private.h" #include "xbt/log.h" +#include "xbt/dict.h" + +/* Pimple to get an histogram of message sizes in the simulation */ +xbt_dict_t msg_sizes = NULL; XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_network, simix, "Logging specific to SIMIX (network)"); @@ -364,6 +368,30 @@ void SIMIX_network_copy_data(smx_comm_t comm) comm->dst_proc->smx_host->name, comm->dst_buff, buff_size); (*SIMIX_network_copy_data_callback)(comm, buff_size); + + /* pimple to display the message sizes */ + { + if (msg_sizes == NULL) + msg_sizes = xbt_dict_new(); + uintptr_t casted_size = buff_size; + uintptr_t amount = xbt_dicti_get(msg_sizes, casted_size); + amount++; + + xbt_dicti_set(msg_sizes,casted_size, amount); + } +} +#include "xbt.h" +/* pimple to display the message sizes */ +void SIMIX_message_sizes_output(const char *filename) { + FILE * out = fopen(filename,"w"); + INFO1("Output message sizes to %s",filename); + xbt_assert1(out,"Cannot open file %s",filename); + uintptr_t key,data; + xbt_dict_cursor_t cursor; + xbt_dict_foreach(msg_sizes,cursor,key,data) { + fprintf(out,"%d %d\n",key,data); + } + fclose(out); } /**