2 #include "addPrefetchEnhance.h"
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;
14 extern unsigned int myIpAddr;
17 extern pfcstats_t *evalPrefetch;
19 void transStatsHandler(int sig, siginfo_t* info, void *context) {
21 printf("****** Transaction Stats ******\n");
22 printf("numTransAbort = %d\n", numTransAbort);
23 printf("numTransCommit = %d\n", numTransCommit);
24 printf("nchashSearch = %d\n", nchashSearch);
25 printf("nmhashSearch = %d\n", nmhashSearch);
26 printf("nprehashSearch = %d\n", nprehashSearch);
27 printf("nRemoteReadSend = %d\n", nRemoteSend);
28 printf("nSoftAbort = %d\n", nSoftAbort);
29 printf("bytesSent = %d\n", bytesSent);
30 printf("bytesRecv = %d\n", bytesRecv);
37 struct sigaction siga;
38 siga.sa_handler = NULL;
39 siga.sa_flags = SA_SIGINFO;
41 siga.sa_sigaction = &transStatsHandler;
42 sigemptyset(&siga.sa_mask);
43 sigaction(SIGUSR1, &siga, 0);
48 double getMax(double *array, int size) {
50 double max = array[0];
51 for(i = 0; i < size; i++) { // for 2 MCS
58 double getMin(double *array, int size) {
60 double min = array[0];
61 for(i = 0; i < size; i++) { //for 2 MCs
70 if(((128<<24)|(195<<16)|(175<<8)|84) == myIpAddr)
72 else if(((128<<24)|(195<<16)|(175<<8)|86) == myIpAddr)
74 else if(((128<<24)|(195<<16)|(175<<8)|87) == myIpAddr)
76 else if(((128<<24)|(195<<16)|(175<<8)|88) == myIpAddr)
80 printf("threadid/mid = %d\n", val);
84 double getfast(int siteid, int threadid) {
87 //for(i = 0; i < 2; i++) { // for 2 MC
88 for(i = 0; i < 5; i++) { // for 5 MC
91 for(k= 0; k<countstats[i]; k++) {
92 if(fast < threadstats[i][siteid][k])
93 fast = threadstats[i][siteid][k];
99 void sortascending() {
101 for(i = 0 ; i < 5; i++) {
107 const int size = 5; // 5MCS
109 for(siteid = 0; siteid < 15; siteid++) {
111 for(k=0; k<counttransCommit; k++) {
113 for(i=0; i < size-1; i++) {
115 for(j=0; j < size-1-i; j++) {
116 if(threadstats[j][siteid][k] > threadstats[j+1][siteid][k]) {
118 temp = threadstats[j+1][siteid][k];
119 threadstats[j+1][siteid][k] = threadstats[j][siteid][k];
120 threadstats[j][siteid][k] = temp;
124 } // end for each transaction
125 } // end for each siteid
128 double avgofthreads(int siteid, int threadid) {
131 for(k = 0; k<counttransCommit; k++) {
132 total += threadstats[threadid][siteid][k];
135 avg = total/counttransCommit;
139 double avgfast(int siteid, int threadid) {
142 for(k = 0; k<counttransCommit; k++) {
144 for(i = 0; i <5; i++) { //for 5 mC
147 if(fast < threadstats[i][siteid][k]) {
148 fast = threadstats[i][siteid][k];
151 avgfasttime[k] = fast;
154 for(k = 0; k<counttransCommit; k++) {
155 total += avgfasttime[k];
157 return (total/counttransCommit);
160 double avgslow(int siteid, int threadid) {
163 for(k = 0; k<counttransCommit; k++) {
165 for(i = 0; i < 2; i++) { //for 2 mC
168 if(slow > threadstats[i][siteid][k]) {
169 slow = threadstats[i][siteid][k];
172 avgslowtime[k] = slow;
175 for(k = 0; k<counttransCommit; k++) {
176 total += avgslowtime[k];
178 return (total/counttransCommit);
181 double getslowest(int siteid, int threadid) {
184 //for(i = 0; i < 2; i++) { // for 2 MC
185 for(i = 0; i < 5; i++) { // for 5 MC
188 for(k= 0; k<countstats[i]; k++) {
189 if(slow > threadstats[i][siteid][k]) {
190 slow = threadstats[i][siteid][k];
197 double getavg(int siteid, int threadid) {
201 //for(i = 0; i < 2; i++) { //for 2 MC
202 for(i = 0; i < 5; i++) { //for 5 MC
205 for(k= 0; k<countstats[i]; k++) {
206 total += threadstats[i][siteid][k];
208 totalcount +=countstats[i];
210 double avg = total/totalcount;
214 double getavgperthd(int siteid, int threadid) {
217 for(k= 0; k<countstats[threadid]; k++) {
218 total += threadstats[threadid][siteid][k];
220 double avg = total/countstats[threadid];