collect statistics
authorbdemsky <bdemsky>
Wed, 8 Apr 2009 00:02:39 +0000 (00:02 +0000)
committerbdemsky <bdemsky>
Wed, 8 Apr 2009 00:02:39 +0000 (00:02 +0000)
Robust/src/Benchmarks/SingleTM/LeeRouting/Grid.java
Robust/src/Benchmarks/SingleTM/LeeRouting/makefile
Robust/src/ClassLibrary/JavaSTM/Object.java
Robust/src/IR/Flat/BuildCode.java
Robust/src/Runtime/STM/stm.c
Robust/src/Runtime/STM/tm.h
Robust/src/buildscript

index 5fce2b96c760500eef7b412f5112d07a16033ba7..9efa4d8cb67f78da0f1948d486b2295f0ae1a45d 100644 (file)
@@ -72,9 +72,7 @@ public class Grid {
       instantiateGrid(debugGrid);
       resetGrid(debugGrid);
     } else {
-      //debugGrid = new GridCell[width][height][depth];
-      //FIXME compiler error:Type of rside (null) not compatible with type of lside (GridCell)debugGrid = null
-      debugGrid = null;
+      debugGrid = new GridCell[width][height][depth];
     }
   }
 
index eb00b053eef871809d8a3f645ed03e271eacff2e..e4f0912f5e29b8b52d761e4c43d178e12c58e930 100644 (file)
@@ -5,7 +5,7 @@ SRC=${MAINCLASS}.java \
        GridCell.java \
        LeeThread.java \
        WorkQueue.java 
-FLAGS=-singleTM -nooptimize -debug -mainclass ${MAINCLASS}
+FLAGS=-singleTM -optimize -profile -mainclass ${MAINCLASS} -joptimize -debug -garbagestats -transstats
 default:
        ../../../buildscript ${FLAGS} -o ${MAINCLASS} ${SRC}
 
index fecc4cd199dab04e99917f281b093a39cc0a3857..2e85d02fabc75407ce2a7e55f9466dc539aa778f 100644 (file)
@@ -1,9 +1,9 @@
 public class Object {
   public int cachedCode;   //first field has to be a primitive
   public boolean cachedHash;
-  public Object objlocation;  
-  public int objstatus;
   public native int nativehashCode();
+  private int objstatus;
+  private Object objlocation;
 
   public int hashCode() {
     if (!cachedHash) {
index 38c761a21baefcef92cf9043f2e625f397330d64..07fab7f889b80ae5ed683c277eac7f6ce15e5688 100644 (file)
@@ -224,9 +224,11 @@ public class BuildCode {
   private void outputMainMethod(PrintWriter outmethod) {
     outmethod.println("int main(int argc, const char *argv[]) {");
     outmethod.println("  int i;");
-    outmethod.println("#ifdef TRANSSTATS \n");
-    outmethod.println("handle();\n");
-    outmethod.println("#endif\n");
+    if (state.DSM) {
+       outmethod.println("#ifdef TRANSSTATS \n");
+       outmethod.println("handle();\n");
+       outmethod.println("#endif\n");
+    }
     if (state.THREAD||state.DSM||state.SINGLETM) {
       outmethod.println("initializethreads();");
     }
@@ -292,8 +294,6 @@ public class BuildCode {
       outmethod.println("threadcount--;");
       outmethod.println("pthread_cond_signal(&gccond);");
       outmethod.println("pthread_mutex_unlock(&gclistlock);");
-      if (state.THREAD||state.SINGLETM)
-       outmethod.println("pthread_exit(NULL);");
     }
 
     if (state.DSM||state.SINGLETM) {
@@ -301,15 +301,21 @@ public class BuildCode {
       outmethod.println("printf(\"******  Transaction Stats   ******\\n\");");
       outmethod.println("printf(\"numTransAbort= %d\\n\", numTransAbort);");
       outmethod.println("printf(\"numTransCommit= %d\\n\", numTransCommit);");
-      outmethod.println("printf(\"nchashSearch= %d\\n\", nchashSearch);");
-      outmethod.println("printf(\"nmhashSearch= %d\\n\", nmhashSearch);");
-      outmethod.println("printf(\"nprehashSearch= %d\\n\", nprehashSearch);");
-      outmethod.println("printf(\"nRemoteReadSend= %d\\n\", nRemoteSend);");
       outmethod.println("printf(\"nSoftAbort= %d\\n\", nSoftAbort);");
-      outmethod.println("printf(\"bytesSent= %d\\n\", bytesSent);");
-      outmethod.println("printf(\"bytesRecv= %d\\n\", bytesRecv);");
+      if (state.DSM) {
+         outmethod.println("printf(\"nchashSearch= %d\\n\", nchashSearch);");
+         outmethod.println("printf(\"nmhashSearch= %d\\n\", nmhashSearch);");
+         outmethod.println("printf(\"nprehashSearch= %d\\n\", nprehashSearch);");
+         outmethod.println("printf(\"nRemoteReadSend= %d\\n\", nRemoteSend);");
+         outmethod.println("printf(\"bytesSent= %d\\n\", bytesSent);");
+         outmethod.println("printf(\"bytesRecv= %d\\n\", bytesRecv);");
+      }
       outmethod.println("#endif\n");
     }
+
+    if (state.THREAD||state.SINGLETM)
+       outmethod.println("pthread_exit(NULL);");
+
     outmethod.println("}");
 
   }
@@ -776,14 +782,16 @@ public class BuildCode {
     outclassdefs.print("#ifdef TRANSSTATS \n");
     outclassdefs.print("extern int numTransAbort;\n");
     outclassdefs.print("extern int numTransCommit;\n");
-    outclassdefs.print("extern int nchashSearch;\n");
-    outclassdefs.print("extern int nmhashSearch;\n");
-    outclassdefs.print("extern int nprehashSearch;\n");
-    outclassdefs.print("extern int nRemoteSend;\n");
     outclassdefs.print("extern int nSoftAbort;\n");
-    outclassdefs.print("extern int bytesSent;\n");
-    outclassdefs.print("extern int bytesRecv;\n");
-    outclassdefs.print("extern void handle();\n");
+    if (state.DSM) {
+       outclassdefs.print("extern int nchashSearch;\n");
+       outclassdefs.print("extern int nmhashSearch;\n");
+       outclassdefs.print("extern int nprehashSearch;\n");
+       outclassdefs.print("extern int nRemoteSend;\n");
+       outclassdefs.print("extern int bytesSent;\n");
+       outclassdefs.print("extern int bytesRecv;\n");
+       outclassdefs.print("extern void handle();\n");
+    }
     outclassdefs.print("#endif\n");
     outclassdefs.print("int numprefetchsites = " + pa.prefetchsiteid + ";\n");
 
index 5659800985e80a305a63ceb796f0da340ca9398f..56680152a4b8df833c4daaa7667ed12d27931a98 100644 (file)
 /* Thread transaction variables */
 __thread objstr_t *t_cache;
 
+#ifdef TRANSSTATS
+int numTransCommit = 0;
+int numTransAbort = 0;
+int nSoftAbort = 0;
+#endif
+
 
 /* ==================================================
  * stmStartup
@@ -166,17 +172,26 @@ int transCommit() {
     /* Look through all the objects in the transaction hash table */
     int finalResponse = traverseCache();
     if(finalResponse == TRANS_ABORT) {
+#ifdef TRANSSTATS
+      numTransAbort++;
+#endif
       objstrDelete(t_cache);
       t_chashDelete();
       return TRANS_ABORT;
     }
     if(finalResponse == TRANS_COMMIT) {
+#ifdef TRANSSTATS
+      numTransCommit++;
+#endif
       objstrDelete(t_cache);
       t_chashDelete();
       return 0;
     }
     /* wait a random amount of time before retrying to commit transaction*/
     if(finalResponse == TRANS_SOFT_ABORT) {
+#ifdef TRANSSTATS
+      nSoftAbort++;
+#endif
       randomdelay();
     } else {
       printf("Error: in %s() Unknown outcome", __func__);
index ad38145a931f3f66832c3e6aa617941aa1422eb5..c5df6447cf50dff608377d6e483864a8fd34b5ac 100644 (file)
@@ -114,6 +114,15 @@ typedef struct newObjCreated {
 } newObjCreated_t;
 
 
+#ifdef TRANSSTATS
+/***********************************
+ * Global Variables for statistics
+ **********************************/
+extern int numTransCommit;
+extern int numTransAbort;
+extern int nSoftAbort;
+#endif
+
 /* ================================
  * Functions used
  * ================================
index 02ddb88ea6c2e2c4ff20d6e12dc3e70b33d8a201..193f55e81284d0fa724425b6873672e48020df0e 100755 (executable)
@@ -65,7 +65,6 @@ CHECKFLAG=false
 RECOVERFLAG=false
 MLPFLAG=false
 MULTICOREFLAG=false
-TRANSSTATSFLAG=false
 RAWFLAG=false
 RAWCACHEFLUSHFLAG=false
 RAWCONFIG=''
@@ -152,7 +151,7 @@ then
 JAVAOPTS="$JAVAOPTS -prefetch"
 elif [[ $1 = '-transstats' ]]
 then
-TRANSSTATSFLAG=true
+EXTRAOPTIONS="$EXTRAOPTIONS -DTRANSSTATS"
 elif [[ $1 = '-printflat' ]]
 then
 JAVAOPTS="$JAVAOPTS -printflat"
@@ -479,10 +478,6 @@ $ROBUSTROOT/Runtime/GenericHashtable.c $ROBUSTROOT/Runtime/object.c"
 if $DSMFLAG
 then
 EXTRAOPTIONS="$EXTRAOPTIONS -lpthread -DCOMPILER -DDSTM -I$DSMRUNTIME"
-if $TRANSSTATSFLAG
-then
-EXTRAOPTIONS="$EXTRAOPTIONS -lpthread -DTRANSSTATS -DCOMPILER -DDSTM -I$DSMRUNTIME"
-fi
 FILES="$FILES $DSMRUNTIME/trans.c $DSMRUNTIME/mcpileq.c $DSMRUNTIME/objstr.c $DSMRUNTIME/dstm.c $DSMRUNTIME/mlookup.c $DSMRUNTIME/clookup.c $DSMRUNTIME/llookup.c $DSMRUNTIME/threadnotify.c $DSMRUNTIME/dstmserver.c $DSMRUNTIME/plookup.c $DSMRUNTIME/ip.c $DSMRUNTIME/queue.c $DSMRUNTIME/prelookup.c $DSMRUNTIME/machinepile.c $ROBUSTROOT/Runtime/localobjects.c $ROBUSTROOT/Runtime/thread.c $DSMRUNTIME/sockpool.c $DSMRUNTIME/addUdpEnhance.c $DSMRUNTIME/signal.c $DSMRUNTIME/gCollect.c $DSMRUNTIME/addPrefetchEnhance.c $DSMRUNTIME/dsmlock.c $DSMRUNTIME/prefetch.c"
 fi