extend creation event to record the time it spend in the send.
authorGengbin Zheng <gzheng@illinois.edu>
Tue, 21 Jan 2003 07:10:43 +0000 (07:10 +0000)
committerGengbin Zheng <gzheng@illinois.edu>
Tue, 21 Jan 2003 07:10:43 +0000 (07:10 +0000)
src/ck-perf/trace-common.C
src/ck-perf/trace-projections.C
src/ck-perf/trace-projections.h
src/ck-perf/trace.h

index f8afd902d8e8730f60d96cfc1aec606a0456b1dc..9d609cb5e4bd9ad63b102274cdfac05954ea5c75 100644 (file)
@@ -180,7 +180,7 @@ extern "C"
 void traceAwaken(CthThread t)
 {
 #if ! CMK_TRACE_IN_CHARM
-  CkpvAccess(_traces)->creation(0);
+  CkpvAccess(_traces)->creation(0, 0.0);
 #endif
 }
 
@@ -271,4 +271,9 @@ int  traceAvailable()
 #endif
 }
 
+double CmiTraceTimer()
+{
+  return TraceTimer();
+}
+
 /*@}*/
index 3e99f59b047c21fefe10b495abc0e22c15dea150..311b9e711910a8821eee85a22a1816a0a9b4c8ae 100644 (file)
@@ -292,6 +292,8 @@ void LogEntry::write(FILE* fp)
       fprintf(fp, "%d %d %u %d %d %d %d %d %d %d\n", mIdx, eIdx, (UInt) (time*1.0e6), event, pe, msglen, (UInt)(recvTime*1.e6), id.id[0], id.id[1], id.id[2]);
       break;
     case CREATION:
+      fprintf(fp, "%d %d %u %d %d %d %d\n", mIdx, eIdx, (UInt) (time*1.0e6), event, pe, msglen, (UInt)(recvTime*1.e6));
+      break;
     case END_PROCESSING:
     case MESSAGE_RECV:
       fprintf(fp, "%d %d %u %d %d %d\n", mIdx, eIdx, (UInt) (time*1.0e6), event, pe, msglen);
@@ -543,18 +545,19 @@ void TraceProjections::userBracketEvent(int e, double bt, double et)
   _logPool->add(USER_EVENT_PAIR, e, 0, TraceTimer(et), curevent++, CkMyPe());
 }
 
-void TraceProjections::creation(envelope *e, int num)
+void TraceProjections::creation(envelope *e, double startT, int num)
 {
+  double curTime = TraceTimer();
   if(e==0) {
     CtvAccess(curThreadEvent)=curevent;
-    _logPool->add(CREATION,ForChareMsg,_threadEP,TraceTimer(),
-                             curevent++,CkMyPe());
+    _logPool->add(CREATION,ForChareMsg,_threadEP,curTime,
+                    curevent++,CkMyPe(), 0, 0, 0.0);
   } else {
     int type=e->getMsgtype();
     e->setEvent(curevent);
     for(int i=0; i<num; i++) {
-      _logPool->add(CREATION,type,e->getEpIdx(),TraceTimer(),
-                               curevent+i,CkMyPe(),e->getTotalsize());
+      _logPool->add(CREATION,type,e->getEpIdx(), curTime,
+                    curevent+i,CkMyPe(),e->getTotalsize(), 0, curTime-startT);
     }
     curevent += num;
   }
index 75b2b7824340046de5f1c30c8c8ca9c6ec94208c..a616482c242b4a9a084fff320ebe4236747168ae 100644 (file)
@@ -113,7 +113,7 @@ class TraceProjections : public Trace {
     TraceProjections(char **argv);
     void userEvent(int e);
     void userBracketEvent(int e, double bt, double et);
-    void creation(envelope *e, int num=1);
+    void creation(envelope *e, double t, int num=1);
     void beginExecute(envelope *e);
     void beginExecute(CmiObjId  *tid);
     void beginExecute(int event,int msgType,int ep,int srcPe,int ml);
index 6e2a688a4a06ec592f0a18f30422b3fc39f16f24..fa00b238c380b4d47e1360644dff6ef07dd75847 100644 (file)
@@ -18,6 +18,8 @@ class envelope;
 // An additional interface for summary data
 extern "C" void traceClearEps();
 
+extern double CmiTraceTimer();
+
 // Base class of all tracing strategies.
 // 
 class Trace {
@@ -34,7 +36,7 @@ class Trace {
     // a pair of begin/end user event has just occured
     virtual void userBracketEvent(int eventID, double bt, double et) {}
     // creation of message(s)
-    virtual void creation(envelope *, int num=1) {}
+    virtual void creation(envelope *, double t, int num=1) {}
     // ???
     virtual void messageRecv(char *env, int pe) {}
     // **************************************************************
@@ -89,7 +91,7 @@ public:
 
     inline void userEvent(int e) { ALLDO(userEvent(e));}
     inline void userBracketEvent(int e,double bt, double et) {ALLDO(userBracketEvent(e,bt,et));}
-    inline void creation(envelope *env, int num=1) { ALLDO(creation(env, num));}
+    inline void creation(envelope *env, double t, int num=1) { ALLDO(creation(env, t, num));}
     inline void beginExecute(envelope *env) {ALLDO(beginExecute(env));}
     inline void beginExecute(CmiObjId *tid) {ALLDO(beginExecute(tid));}
     inline void beginExecute(int event,int msgType,int ep,int srcPe, int mlen) {ALLDO(beginExecute(event, msgType, ep, srcPe, mlen));}
@@ -140,8 +142,8 @@ CkpvExtern(int, traceOnPe);
 #endif
 
 #define _TRACE_USER_EVENT(x) _TRACE_ONLY(CkpvAccess(_traces)->userEvent(x))
-#define _TRACE_CREATION_1(env) _TRACE_ONLY(CkpvAccess(_traces)->creation(env))
-#define _TRACE_CREATION_N(env, num) _TRACE_ONLY(CkpvAccess(_traces)->creation(env, num))
+#define _TRACE_CREATION_1(env, t) _TRACE_ONLY(CkpvAccess(_traces)->creation(env, t))
+#define _TRACE_CREATION_N(env, t, num) _TRACE_ONLY(CkpvAccess(_traces)->creation(env, t, num))
 #define _TRACE_BEGIN_EXECUTE(env) _TRACE_ONLY(CkpvAccess(_traces)->beginExecute(env))
 #define _TRACE_BEGIN_EXECUTE_DETAILED(evt,typ,ep,src,mlen) \
        _TRACE_ONLY(CkpvAccess(_traces)->beginExecute(evt,typ,ep,src,mlen))