communication library statistics collection
[charm.git] / src / ck-com / ComlibStats.C
1
2 #include "ComlibStats.h"
3 #include "ComlibManager.h"
4
5 ComlibGlobalStats::ComlibGlobalStats() {
6     statsArr = new ComlibLocalStats[CkNumPes()];
7 }
8
9 void ComlibGlobalStats::updateStats(ComlibLocalStats &stats, int p) {
10     statsArr[p] = stats;
11 }
12
13 void ComlibGlobalStats::getAverageStats(int sid, double &avMsgSize, 
14                                         double &avNumMessages, 
15                                         double &avDegree,
16                                         double &npes) {
17
18     double bytes = 0, messages = 0, degree = 0;
19     npes = avNumMessages = avMsgSize = avDegree = 0.0;
20
21     for(int count = 0; count < CkNumPes(); count ++) {
22         if(statsArr[count].cdata[sid].isRecorded()) {
23             npes ++;
24             //count send and received
25             bytes += statsArr[count].cdata[sid].getTotalBytes();
26             //count send and received
27             messages += statsArr[count].cdata[sid].getTotalMessages();
28             degree += statsArr[count].cdata[sid].getDegree();
29         }
30     }
31
32     if(npes > 0.0 && messages > 0.0) {
33         avNumMessages = messages/npes;
34         avMsgSize = bytes/ (npes * avNumMessages);
35         avDegree =  degree/npes;
36     }
37 }
38