X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttv%2Flttv%2Fsync%2Fevent_analysis_eval.h;h=d30fb1ef59883bad4d5b8789844909b1bba316dc;hb=e072e1abc02d780d84664fcb2c971eb5a317f664;hp=1515bec955bbfbfa092d23c8ca078426b58bf003;hpb=76be6fc24daf61767bf7f0c2e64f4691fbb56c63;p=lttv.git diff --git a/lttv/lttv/sync/event_analysis_eval.h b/lttv/lttv/sync/event_analysis_eval.h index 1515bec9..d30fb1ef 100644 --- a/lttv/lttv/sync/event_analysis_eval.h +++ b/lttv/lttv/sync/event_analysis_eval.h @@ -24,6 +24,11 @@ #include "data_structures.h" +struct RttKey +{ + uint32_t saddr, daddr; +}; + typedef struct { unsigned int inversionNb, @@ -37,20 +42,62 @@ typedef struct double broadcastDiffSum; unsigned int broadcastNb; + // MessageStats messageStats[traceNb][traceNb] MessageStats** messageStats; + + /* double* exchangeRtt[RttKey] + * For this table, saddr and daddr are swapped as necessary such that + * saddr < daddr */ + GHashTable* exchangeRtt; } AnalysisStatsEval; -struct RttKey + +#define BIN_NB 1001 +struct Bins { - uint32_t saddr, daddr; + // index of min and max bins that are != 0 + uint32_t min, max; + // sum of all bins + uint32_t total; + /* bin[0]: underflow ]-INFINITY..0[ + * bin[1]: [0..1e-6[ + * rest defined exponentially, see binStart() + * bin[BIN_NB - 1]: overflow [1..INFINITY[ */ + uint32_t bin[BIN_NB]; }; + +typedef struct +{ + /* File pointers to files where "trip times" (message latency) histogram + * values are outputted. Each host-pair has two files, one for each + * message direction. As for traces, the host with the smallest address + * is considered to be the reference for the direction of messages (ie. + * messages from the host with the lowest address to the host with the + * largest address are "sent"). */ + FILE* ttSendPoints; + FILE* ttRecvPoints; + + struct Bins ttSendBins; + struct Bins ttRecvBins; + + /* File pointers to files where half round trip times (evaluated from + * exchanges) histogram values are outputted. */ + FILE* hrttPoints; + + struct Bins hrttBins; +} AnalysisGraphEval; + typedef struct { // double* rttInfo[RttKey] GHashTable* rttInfo; AnalysisStatsEval* stats; + /* AnalysisGraphsEval* graphs[RttKey]; + * For this table, saddr and daddr are swapped as necessary such that + * saddr < daddr */ + GHashTable* graphs; } AnalysisDataEval; #endif