2 #include "addPrefetchEnhance.h"
6 extern int numTransAbort;
7 extern int numTransCommit;
8 extern int nchashSearch;
9 extern int nmhashSearch;
10 extern int nprehashSearch;
11 extern int nRemoteSend;
12 extern int nSoftAbort;
15 extern int totalObjSize;
16 extern unsigned int myIpAddr;
17 extern int getResponse;
18 extern int sendRemoteReq;
21 extern pfcstats_t *evalPrefetch;
24 void transStatsHandler(int sig, siginfo_t* info, void *context) {
27 if ((fp = fopen("/tmp/client_stats.txt", "a+")) == NULL) {
30 fprintf(fp, "****** Transaction Stats ******\n");
31 fprintf(fp, "myIpAddr = %x\n", myIpAddr);
32 fprintf(fp, "numTransAbort = %d\n", numTransAbort);
33 fprintf(fp, "numTransCommit = %d\n", numTransCommit);
34 fprintf(fp, "nchashSearch = %d\n", nchashSearch);
35 fprintf(fp, "nmhashSearch = %d\n", nmhashSearch);
36 fprintf(fp, "nprehashSearch = %d\n", nprehashSearch);
37 fprintf(fp, "nRemoteReadSend = %d\n", nRemoteSend);
38 fprintf(fp, "nSoftAbort = %d\n", nSoftAbort);
39 fprintf(fp, "bytesSent = %d\n", bytesSent);
40 fprintf(fp, "bytesRecv = %d\n", bytesRecv);
41 fprintf(fp, "totalObjSize= %d\n", totalObjSize);
42 fprintf(fp, "**********************************\n");
50 void transStatsHandler(int sig, siginfo_t* info, void *context) {
52 printf("****** Transaction Stats ******\n");
53 printf("myIpAddr = %x\n", myIpAddr);
54 printf("numTransCommit = %d\n", numTransCommit);
55 printf("numTransAbort = %d\n", numTransAbort);
56 printf("nchashSearch = %d\n", nchashSearch);
57 printf("nmhashSearch = %d\n", nmhashSearch);
58 printf("nprehashSearch = %d\n", nprehashSearch);
59 printf("nRemoteReadSend = %d\n", nRemoteSend);
60 printf("nSoftAbort = %d\n", nSoftAbort);
61 printf("bytesSent = %d\n", bytesSent);
62 printf("bytesRecv = %d\n", bytesRecv);
63 printf("totalObjSize= %d\n", totalObjSize);
64 printf("sendRemoteReq= %d\n", sendRemoteReq);
65 printf("getResponse= %d\n", getResponse);
66 printf("**********************************\n");
73 struct sigaction siga;
74 siga.sa_handler = NULL;
75 siga.sa_flags = SA_SIGINFO;
77 siga.sa_sigaction = &transStatsHandler;
78 sigemptyset(&siga.sa_mask);
79 sigaction(SIGUSR1, &siga, 0);
84 double getMax(double *array, int size) {
86 double max = array[0];
87 for(i = 0; i < size; i++) { // for 2 MCS
94 double getMin(double *array, int size) {
96 double min = array[0];
97 for(i = 0; i < size; i++) { //for 2 MCs
106 if(((128<<24)|(195<<16)|(175<<8)|84) == myIpAddr)
108 else if(((128<<24)|(195<<16)|(175<<8)|86) == myIpAddr)
110 else if(((128<<24)|(195<<16)|(175<<8)|87) == myIpAddr)
112 else if(((128<<24)|(195<<16)|(175<<8)|88) == myIpAddr)
116 printf("threadid/mid = %d\n", val);
120 double getfast(int siteid, int threadid) {
123 //for(i = 0; i < 2; i++) { // for 2 MC
124 for(i = 0; i < 5; i++) { // for 5 MC
127 for(k= 0; k<countstats[i]; k++) {
128 if(fast < threadstats[i][siteid][k])
129 fast = threadstats[i][siteid][k];
135 void sortascending() {
137 for(i = 0 ; i < 5; i++) {
143 const int size = 5; // 5MCS
145 for(siteid = 0; siteid < 15; siteid++) {
147 for(k=0; k<counttransCommit; k++) {
149 for(i=0; i < size-1; i++) {
151 for(j=0; j < size-1-i; j++) {
152 if(threadstats[j][siteid][k] > threadstats[j+1][siteid][k]) {
154 temp = threadstats[j+1][siteid][k];
155 threadstats[j+1][siteid][k] = threadstats[j][siteid][k];
156 threadstats[j][siteid][k] = temp;
160 } // end for each transaction
161 } // end for each siteid
164 double avgofthreads(int siteid, int threadid) {
167 for(k = 0; k<counttransCommit; k++) {
168 total += threadstats[threadid][siteid][k];
171 avg = total/counttransCommit;
175 double avgfast(int siteid, int threadid) {
178 for(k = 0; k<counttransCommit; k++) {
180 for(i = 0; i <5; i++) { //for 5 mC
183 if(fast < threadstats[i][siteid][k]) {
184 fast = threadstats[i][siteid][k];
187 avgfasttime[k] = fast;
190 for(k = 0; k<counttransCommit; k++) {
191 total += avgfasttime[k];
193 return (total/counttransCommit);
196 double avgslow(int siteid, int threadid) {
199 for(k = 0; k<counttransCommit; k++) {
201 for(i = 0; i < 2; i++) { //for 2 mC
204 if(slow > threadstats[i][siteid][k]) {
205 slow = threadstats[i][siteid][k];
208 avgslowtime[k] = slow;
211 for(k = 0; k<counttransCommit; k++) {
212 total += avgslowtime[k];
214 return (total/counttransCommit);
217 double getslowest(int siteid, int threadid) {
220 //for(i = 0; i < 2; i++) { // for 2 MC
221 for(i = 0; i < 5; i++) { // for 5 MC
224 for(k= 0; k<countstats[i]; k++) {
225 if(slow > threadstats[i][siteid][k]) {
226 slow = threadstats[i][siteid][k];
233 double getavg(int siteid, int threadid) {
237 //for(i = 0; i < 2; i++) { //for 2 MC
238 for(i = 0; i < 5; i++) { //for 5 MC
241 for(k= 0; k<countstats[i]; k++) {
242 total += threadstats[i][siteid][k];
244 totalcount +=countstats[i];
246 double avg = total/totalcount;
250 double getavgperthd(int siteid, int threadid) {
253 for(k= 0; k<countstats[threadid]; k++) {
254 total += threadstats[threadid][siteid][k];
256 double avg = total/countstats[threadid];