Changes to increase garbage collector heap
[IRC.git] / Robust / src / Runtime / DSTM / interface / signal.c
1 #include "dstm.h"
2 #include "addPrefetchEnhance.h"
3 #include <signal.h>
4
5 extern int numTransAbort;
6 extern int numTransCommit;
7 extern int nchashSearch;
8 extern int nmhashSearch;
9 extern int nprehashSearch;
10 extern int nRemoteSend;
11 extern int nSoftAbort;
12 extern unsigned int myIpAddr;
13
14 void handle();
15 extern pfcstats_t *evalPrefetch;
16
17 void transStatsHandler(int sig, siginfo_t* info, void *context) {
18 #ifdef TRANSSTATS
19   printf("******  Transaction Stats   ******\n");
20   printf("numTransAbort = %d\n", numTransAbort);
21   printf("numTransCommit = %d\n", numTransCommit);
22   printf("nchashSearch = %d\n", nchashSearch);
23   printf("nmhashSearch = %d\n", nmhashSearch);
24   printf("nprehashSearch = %d\n", nprehashSearch);
25   printf("nRemoteReadSend = %d\n", nRemoteSend);
26   printf("nSoftAbort = %d\n", nSoftAbort);
27   exit(0);
28 #endif
29 }
30
31 void handle() {
32 #ifdef TRANSSTATS
33   struct sigaction siga;
34   siga.sa_handler = NULL;
35   siga.sa_flags = SA_SIGINFO;
36   siga.sa_flags = 0;
37   siga.sa_sigaction = &transStatsHandler;
38   sigemptyset(&siga.sa_mask);
39   sigaction(SIGUSR1, &siga, 0);
40 #endif
41 }
42 /*
43
44    double getMax(double *array, int size) {
45    int i;
46    double max = array[0];
47    for(i = 0; i < size; i++) { // for 2 MCS
48     if(max <= array[i])
49       max = array[i];
50    }
51    return max;
52    }
53
54    double getMin(double *array, int size) {
55    int i;
56    double min = array[0];
57    for(i = 0; i < size; i++) { //for 2 MCs
58     if(min > array[i])
59       min = array[i];
60    }
61    return min;
62    }
63
64    int getthreadid() {
65    int val;
66    if(((128<<24)|(195<<16)|(175<<8)|84) == myIpAddr)
67     val = 0;
68    else if(((128<<24)|(195<<16)|(175<<8)|86) == myIpAddr)
69     val = 1;
70    else if(((128<<24)|(195<<16)|(175<<8)|87) == myIpAddr)
71     val = 2;
72    else if(((128<<24)|(195<<16)|(175<<8)|88) == myIpAddr)
73     val = 3;
74    else
75     val = 4;
76    printf("threadid/mid = %d\n", val);
77    return val;
78    }
79
80    double getfast(int siteid, int threadid) {
81    int i, j, k;
82    double fast = 0.0;
83    //for(i = 0; i < 2; i++) { // for 2 MC
84    for(i = 0; i < 5; i++) { // for 5 MC
85     if(i == threadid)
86       continue;
87     for(k= 0; k<countstats[i]; k++) {
88       if(fast < threadstats[i][siteid][k])
89         fast = threadstats[i][siteid][k];
90     }
91    }
92    return fast;
93    }
94
95    void sortascending() {
96    int i;
97    for(i = 0 ; i < 5; i++) {
98
99    }
100    }
101
102    void bubblesort() {
103    const int size = 5; // 5MCS
104    int siteid;
105    for(siteid = 0; siteid < 15; siteid++) {
106     int k;
107     for(k=0; k<counttransCommit; k++) {
108       int i;
109       for(i=0; i < size-1; i++) {
110         int j;
111         for(j=0; j < size-1-i; j++) {
112           if(threadstats[j][siteid][k] > threadstats[j+1][siteid][k]) {
113             double temp;
114             temp = threadstats[j+1][siteid][k];
115             threadstats[j+1][siteid][k] = threadstats[j][siteid][k];
116             threadstats[j][siteid][k] = temp;
117           }
118         }
119       } //end of sorting
120     } // end for each transaction
121    } // end for each siteid
122    }
123
124    double avgofthreads(int siteid, int threadid) {
125    double total = 0.0;
126    int k;
127    for(k = 0; k<counttransCommit; k++) {
128     total += threadstats[threadid][siteid][k];
129    }
130    double avg = 0.0;
131    avg = total/counttransCommit;
132    return avg;
133    }
134
135    double avgfast(int siteid, int threadid) {
136    int i, j, k;
137    double fast;
138    for(k = 0; k<counttransCommit; k++) {
139     fast = 0.0;
140     for(i = 0; i <5; i++) { //for 5 mC
141       if(i == threadid)
142         continue;
143       if(fast < threadstats[i][siteid][k]) {
144         fast = threadstats[i][siteid][k];
145       }
146     }
147     avgfasttime[k] = fast;
148    }
149    double total= 0.0;
150    for(k = 0; k<counttransCommit; k++) {
151     total += avgfasttime[k];
152    }
153    return (total/counttransCommit);
154    }
155
156    double avgslow(int siteid, int threadid) {
157    int i, j, k;
158    double slow;
159    for(k = 0; k<counttransCommit; k++) {
160     slow = 1.0;
161     for(i = 0; i < 2; i++) { //for 2 mC
162       if(i == threadid)
163         continue;
164       if(slow > threadstats[i][siteid][k]) {
165         slow = threadstats[i][siteid][k];
166       }
167     }
168     avgslowtime[k] =  slow;
169    }
170    double total= 0.0;
171    for(k = 0; k<counttransCommit; k++) {
172     total += avgslowtime[k];
173    }
174    return (total/counttransCommit);
175    }
176
177    double getslowest(int siteid, int threadid) {
178    int i, j, k;
179    double slow = 1.0;
180    //for(i = 0; i < 2; i++) { // for 2 MC
181    for(i = 0; i < 5; i++) { // for 5 MC
182     if(i == threadid)
183       continue;
184     for(k= 0; k<countstats[i]; k++) {
185       if(slow > threadstats[i][siteid][k]) {
186         slow = threadstats[i][siteid][k];
187       }
188     }
189    }
190    return slow;
191    }
192
193    double getavg(int siteid, int threadid) {
194    double total=0.0;
195    int i, j, k;
196    int totalcount = 0;
197    //for(i = 0; i < 2; i++) { //for 2 MC
198    for(i = 0; i < 5; i++) { //for 5 MC
199     if(i == threadid)
200       continue;
201     for(k= 0; k<countstats[i]; k++) {
202       total += threadstats[i][siteid][k];
203     }
204     totalcount +=countstats[i];
205    }
206    double avg = total/totalcount;
207    return avg;
208    }
209
210    double getavgperthd(int siteid, int threadid) {
211    double total=0.0;
212    int i, j, k;
213    for(k= 0; k<countstats[threadid]; k++) {
214     total += threadstats[threadid][siteid][k];
215    }
216    double avg = total/countstats[threadid];
217    return avg;
218    }
219  */