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;
12 extern unsigned int myIpAddr;
15 extern pfcstats_t *evalPrefetch;
17 void transStatsHandler(int sig, siginfo_t* info, void *context) {
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);
33 struct sigaction siga;
34 siga.sa_handler = NULL;
35 siga.sa_flags = SA_SIGINFO;
37 siga.sa_sigaction = &transStatsHandler;
38 sigemptyset(&siga.sa_mask);
39 sigaction(SIGUSR1, &siga, 0);
44 double getMax(double *array, int size) {
46 double max = array[0];
47 for(i = 0; i < size; i++) { // for 2 MCS
54 double getMin(double *array, int size) {
56 double min = array[0];
57 for(i = 0; i < size; i++) { //for 2 MCs
66 if(((128<<24)|(195<<16)|(175<<8)|84) == myIpAddr)
68 else if(((128<<24)|(195<<16)|(175<<8)|86) == myIpAddr)
70 else if(((128<<24)|(195<<16)|(175<<8)|87) == myIpAddr)
72 else if(((128<<24)|(195<<16)|(175<<8)|88) == myIpAddr)
76 printf("threadid/mid = %d\n", val);
80 double getfast(int siteid, int threadid) {
83 //for(i = 0; i < 2; i++) { // for 2 MC
84 for(i = 0; i < 5; i++) { // for 5 MC
87 for(k= 0; k<countstats[i]; k++) {
88 if(fast < threadstats[i][siteid][k])
89 fast = threadstats[i][siteid][k];
95 void sortascending() {
97 for(i = 0 ; i < 5; i++) {
103 const int size = 5; // 5MCS
105 for(siteid = 0; siteid < 15; siteid++) {
107 for(k=0; k<counttransCommit; k++) {
109 for(i=0; i < size-1; i++) {
111 for(j=0; j < size-1-i; j++) {
112 if(threadstats[j][siteid][k] > threadstats[j+1][siteid][k]) {
114 temp = threadstats[j+1][siteid][k];
115 threadstats[j+1][siteid][k] = threadstats[j][siteid][k];
116 threadstats[j][siteid][k] = temp;
120 } // end for each transaction
121 } // end for each siteid
124 double avgofthreads(int siteid, int threadid) {
127 for(k = 0; k<counttransCommit; k++) {
128 total += threadstats[threadid][siteid][k];
131 avg = total/counttransCommit;
135 double avgfast(int siteid, int threadid) {
138 for(k = 0; k<counttransCommit; k++) {
140 for(i = 0; i <5; i++) { //for 5 mC
143 if(fast < threadstats[i][siteid][k]) {
144 fast = threadstats[i][siteid][k];
147 avgfasttime[k] = fast;
150 for(k = 0; k<counttransCommit; k++) {
151 total += avgfasttime[k];
153 return (total/counttransCommit);
156 double avgslow(int siteid, int threadid) {
159 for(k = 0; k<counttransCommit; k++) {
161 for(i = 0; i < 2; i++) { //for 2 mC
164 if(slow > threadstats[i][siteid][k]) {
165 slow = threadstats[i][siteid][k];
168 avgslowtime[k] = slow;
171 for(k = 0; k<counttransCommit; k++) {
172 total += avgslowtime[k];
174 return (total/counttransCommit);
177 double getslowest(int siteid, int threadid) {
180 //for(i = 0; i < 2; i++) { // for 2 MC
181 for(i = 0; i < 5; i++) { // for 5 MC
184 for(k= 0; k<countstats[i]; k++) {
185 if(slow > threadstats[i][siteid][k]) {
186 slow = threadstats[i][siteid][k];
193 double getavg(int siteid, int threadid) {
197 //for(i = 0; i < 2; i++) { //for 2 MC
198 for(i = 0; i < 5; i++) { //for 5 MC
201 for(k= 0; k<countstats[i]; k++) {
202 total += threadstats[i][siteid][k];
204 totalcount +=countstats[i];
206 double avg = total/totalcount;
210 double getavgperthd(int siteid, int threadid) {
213 for(k= 0; k<countstats[threadid]; k++) {
214 total += threadstats[threadid][siteid][k];
216 double avg = total/countstats[threadid];