Changeset: 48a43719e63d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=48a43719e63d
Modified Files:
        
Branch: jacqueline
Log Message:

merged from default


diffs (truncated from 882 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -954,6 +954,7 @@ str BLOBblob_blob(blob **d, blob **s);
 str BLOBblob_fromstr(blob **b, str *d);
 void BLOBconvert(blob *b, int direction);
 void BLOBdel(Heap *h, var_t *index);
+void BLOBdestroy(blob *b);
 str BLOBeoln(char *src, char *end);
 str BLOBfromblob(str *retval, blob **b);
 str BLOBfromidx(str *retval, blob **binp, int *index);
@@ -5781,6 +5782,7 @@ str getName(str nme, size_t len);
 int getPC(MalBlkPtr mb, InstrPtr p);
 str getPipeCatalog(int *nme, int *def);
 str getPipeDefinition(str name);
+stream *getProfilerStream(void);
 str getRef;
 str getRefName(MalBlkPtr mb, int i);
 str getScenarioLanguage(Client c);
diff --git a/clients/mapiclient/Tests/stethoscope--help.stable.err 
b/clients/mapiclient/Tests/stethoscope--help.stable.err
--- a/clients/mapiclient/Tests/stethoscope--help.stable.err
+++ b/clients/mapiclient/Tests/stethoscope--help.stable.err
@@ -21,10 +21,10 @@ The trace options:
   S = monitor start of instruction profiling
   a = aggregate clock ticks per instruction
   e = event counter
-  f = function name and pc counter 
-  o = module.function operation called
-  i = interpreter thread number
-  T = wall colck time
+  f = module.function name
+  i = instruction counter
+  I = interpreter thread number
+  T = wall clock time
   t = ticks in microseconds
   c = cpu statistics (utime,ctime,stime,cstime)
   m = memory resources as provided by OS
@@ -35,6 +35,7 @@ The trace options:
   y = MAL argument types
   p = process statistics, e.g. page faults, context switches
   u = user id
+  D = Generate dot file upon query start
 
 # 19:24:05 >  
 # 19:24:05 >  "Done."
diff --git a/clients/mapiclient/stethoscope.c b/clients/mapiclient/stethoscope.c
--- a/clients/mapiclient/stethoscope.c
+++ b/clients/mapiclient/stethoscope.c
@@ -19,54 +19,7 @@
 
 /**
  * stethoscope
- * Martin Kersten
- *
- * The Stethoscope
- * The performance profiler infrastructure provides
- * precisely control through annotation of a MAL program. 
- * Often, however, inclusion of profiling statements is an afterthought.
- *
- * The program stethoscope addresses this situation by providing
- * a simple application that can attach itself to a running
- * server and extracts the profiler events from concurrent running queries.
- *
- * The arguments to @code{stethoscope} are the profiler properties to be traced
- * and the applicable filter expressions. For example,
- *   stethoscope -t bat.insert algebra.join
- * tracks the microsecond ticks of two specific MAL instructions.
- * A synopsis of the calling conventions:
- *   stethoscope [options] +[aefoTtcmibds] @{<mod>.<fcn> @}
- *     -d | --dbname=<database_name>
- *     -u | --user=<user>
- *     -P | --password=<password>
- *     -p | --port=<portnr>
- *     -h | --host=<hostname>
- * 
- * Event selector:
- *     a =aggregates
- *     e =event
- *     f =function 
- *     i =instruction counter
- *     I =interpreter thread
- *     T =time
- *     t =ticks
- *     c =cpu statistics
- *     m =memory resources
- *     r =block reads
- *     w =block writes
- *     b =bytes read/written
- *     s =statement
- *     y =argument types
- *     p =pgfaults,cntxtswitches
- *     S =Start profiling instruction
- *     D =Generate dot file upon query start
- * 
- * Ideally, the stream of events should be piped into a
- * 2D graphical tool, like xosview (Linux).
- * 
- * For a convenient way to watch most of the SQL interaction you may use
- * the command:
- * stethoscope -umonetdb -Pmonetdb -hhost +tis "algebra.*" "bat.*" "group.*" 
"sql.*" "aggr.*"
+ * author Martin Kersten
  */
 
 #include "monetdb_config.h"
@@ -91,6 +44,7 @@
 # endif
 #endif
 
+#define COUNTERSDEFAULT "ISTest"
 
 static struct {
        char tag;
@@ -131,6 +85,7 @@ static struct {
        /*  0  */ { 'S', "start", "start", 0 },
        /*  1  */ { 'y', "type", "type", 0 },
        /*  2  */ { 'D', "dot", "dot", 0 },
+       /*  3  */ { 'F', "flow", "flow", 0 },
        /*  3  */ { 0, 0, 0, 0 }
 };
 
@@ -162,7 +117,7 @@ usage(void)
        fprintf(stderr, "  -p | --port=<portnr>\n");
        fprintf(stderr, "  -h | --host=<hostname>\n");
        fprintf(stderr, "\n");
-       fprintf(stderr, "The trace options:\n");
+       fprintf(stderr, "The trace options (default '%s'):\n",COUNTERSDEFAULT);
        fprintf(stderr, "  S = monitor start of instruction profiling\n");
        fprintf(stderr, "  a = aggregate clock ticks per instruction\n");
        fprintf(stderr, "  e = event counter\n");
@@ -181,6 +136,7 @@ usage(void)
        fprintf(stderr, "  p = process statistics, e.g. page faults, context 
switches\n");
        fprintf(stderr, "  u = user id\n");
        fprintf(stderr, "  D = Generate dot file upon query start\n");
+       fprintf(stderr, "  F = dataflow memory claims (in MB)\n");
 }
 
 /* Any signal should be captured and turned into a graceful
@@ -408,11 +364,13 @@ main(int argc, char **argv)
                k= setCounter(argv[a] + 1);
                a++;
        } else
-               k= setCounter("TtesDSI");
+               k= setCounter(COUNTERSDEFAULT);
 
-       /* DOT needs PC */
-       if( profileCounter[32].status )
+       /* DOT needs function id and PC to correlate */
+       if( profileCounter[32].status ) {
+               profileCounter[3].status= k++;
                profileCounter[4].status= k;
+       }
 
        if (user == NULL || password == NULL) {
                fprintf(stderr, "%s: need -u and -P arguments\n", argv[0]);
diff --git a/gdk/gdk.mx b/gdk/gdk.mx
--- a/gdk/gdk.mx
+++ b/gdk/gdk.mx
@@ -2125,6 +2125,7 @@ typedef struct {
        void (*atomConvert) (ptr v, int direction);
        int (*atomFix) (ptr atom);
        int (*atomUnfix) (ptr atom);
+       void (*atomDestroy) (ptr atom);
 
        /* varsized atom-only ADT functions */
        var_t (*atomPut) (Heap *, var_t *off, ptr src);
diff --git a/gdk/gdk_atoms.mx b/gdk/gdk_atoms.mx
--- a/gdk/gdk_atoms.mx
+++ b/gdk/gdk_atoms.mx
@@ -2350,64 +2350,44 @@ atomDesc BATatoms[MAXATOMS] = {
         (int (*)(ptr, ptr)) lngCmp,
         (BUN (*)(ptr)) lngHash, 0,
 #endif
-        0, 0,
-        0, 0,
-        0, 0,
-        0, 0},
+        0, 0, 0, 0, 0, 0, 0, 0, 0},
        {"bit", TYPE_chr, 1, sizeof(bit), sizeof(bit), 0, 0, (ptr) &chr_nil,
         (int (*)(str, int *, ptr *)) bitFromStr, (int (*)(str *, int *, ptr)) 
bitToStr,
         (void *(*)(void *, stream *, size_t)) bitRead, (int (*)(void *, stream 
*, size_t)) bitWrite,
         (int (*)(ptr, ptr)) chrCmp,
         (BUN (*)(ptr)) chrHash, 0,
-        0, 0,
-        0, 0,
-        0, 0,
-        0, 0},
+        0, 0, 0, 0, 0, 0, 0, 0, 0},
        {"chr", TYPE_chr, 1, sizeof(chr), sizeof(chr), 0, 0, (ptr) &chr_nil,
         (int (*)(str, int *, ptr *)) chrFromStr, (int (*)(str *, int *, ptr)) 
chrToStr,
         (void *(*)(void *, stream *, size_t)) chrRead, (int (*)(void *, stream 
*, size_t)) chrWrite,
         (int (*)(ptr, ptr)) chrCmp,
         (BUN (*)(ptr)) chrHash, 0,
-        0, 0,
-        0, 0,
-        0, 0,
-        0, 0},
+        0, 0, 0, 0, 0, 0, 0, 0, 0},
        {"bte", TYPE_bte, 1, sizeof(bte), sizeof(bte), 0, 0, (ptr) &bte_nil,
         (int (*)(str, int *, ptr *)) bteFromStr, (int (*)(str *, int *, ptr)) 
bteToStr,
         (void *(*)(void *, stream *, size_t)) bteRead, (int (*)(void *, stream 
*, size_t)) bteWrite,
         (int (*)(ptr, ptr)) bteCmp,
         (BUN (*)(ptr)) bteHash, 0,
-        0, 0,
-        0, 0,
-        0, 0,
-        0, 0},
+        0, 0, 0, 0, 0, 0, 0, 0, 0},
        {"sht", TYPE_sht, 1, sizeof(sht), sizeof(sht), 0, 0, (ptr) &sht_nil,
         (int (*)(str, int *, ptr *)) shtFromStr, (int (*)(str *, int *, ptr)) 
shtToStr,
         (void *(*)(void *, stream *, size_t)) shtRead, (int (*)(void *, stream 
*, size_t)) shtWrite,
         (int (*)(ptr, ptr)) shtCmp,
         (BUN (*)(ptr)) shtHash, (void (*)(ptr, int)) shtConvert,
-        0, 0,
-        0, 0,
-        0, 0,
-        0, 0},
+        0, 0, 0, 0, 0, 0, 0, 0, 0},
        {"BAT", TYPE_int, 1, sizeof(bat), sizeof(bat), 0, 0, (ptr) &int_nil,
         (int (*)(str, int *, ptr *)) batFromStr, (int (*)(str *, int *, ptr)) 
batToStr,
         (void *(*)(void *, stream *, size_t)) batRead, (int (*)(void *, stream 
*, size_t)) batWrite,
         (int (*)(ptr, ptr)) intCmp,
         (BUN (*)(ptr)) intHash, (void (*)(ptr, int)) intConvert,
         (int (*)(ptr)) batFix, (int (*)(ptr)) batUnfix,
-        0, 0,
-        0, 0,
-        0, 0},
+        0, 0, 0, 0, 0, 0, 0},
        {"int", TYPE_int, 1, sizeof(int), sizeof(int), 0, 0, (ptr) &int_nil,
         (int (*)(str, int *, ptr *)) intFromStr, (int (*)(str *, int *, ptr)) 
intToStr,
         (void *(*)(void *, stream *, size_t)) intRead, (int (*)(void *, stream 
*, size_t)) intWrite,
         (int (*)(ptr, ptr)) intCmp,
         (BUN (*)(ptr)) intHash, (void (*)(ptr, int)) intConvert,
-        0, 0,
-        0, 0,
-        0, 0,
-        0, 0},
+        0, 0, 0, 0, 0, 0, 0, 0, 0},
        {"oid",
 #if SIZEOF_OID == SIZEOF_INT
         TYPE_int, 1, sizeof(oid), sizeof(oid), 0, 0, (ptr) &int_nil,
@@ -2422,10 +2402,7 @@ atomDesc BATatoms[MAXATOMS] = {
         (int (*)(ptr, ptr)) lngCmp,
         (BUN (*)(ptr)) lngHash, (void (*)(ptr, int)) lngConvert,
 #endif
-        0, 0,
-        0, 0,
-        0, 0,
-        0, 0},
+        0, 0, 0, 0, 0, 0, 0, 0, 0},
        {"wrd",
 #if SIZEOF_WRD == SIZEOF_INT
         TYPE_int, 1, sizeof(wrd), sizeof(wrd), 0, 0, (ptr) &int_nil,
@@ -2440,10 +2417,7 @@ atomDesc BATatoms[MAXATOMS] = {
         (int (*)(ptr, ptr)) lngCmp,
         (BUN (*)(ptr)) lngHash, (void (*)(ptr, int)) lngConvert,
 #endif
-        0, 0,
-        0, 0,
-        0, 0,
-        0, 0},
+        0, 0, 0, 0, 0, 0, 0, 0, 0},
        {"ptr",
 #if SIZEOF_VOID_P == SIZEOF_INT
         TYPE_ptr, 1, sizeof(ptr), sizeof(ptr), 0, 0, (ptr) &ptr_nil,
@@ -2458,43 +2432,31 @@ atomDesc BATatoms[MAXATOMS] = {
         (int (*)(ptr, ptr)) lngCmp,
         (BUN (*)(ptr)) lngHash, (void (*)(ptr, int)) lngConvert,
 #endif
-        0, 0,
-        0, 0,
-        0, 0,
-        0, 0},
+        0, 0, 0, 0, 0, 0, 0, 0, 0},
        {"flt", TYPE_flt, 1, sizeof(flt), sizeof(flt), 0, 0, (ptr) &flt_nil,
         (int (*)(str, int *, ptr *)) fltFromStr, (int (*)(str *, int *, ptr)) 
fltToStr,
         (void *(*)(void *, stream *, size_t)) fltRead, (int (*)(void *, stream 
*, size_t)) fltWrite,
         (int (*)(ptr, ptr)) fltCmp,
         (BUN (*)(ptr)) intHash, (void (*)(ptr, int)) intConvert,
-        0, 0,
-        0, 0,
-        0, 0,
-        0, 0},
+        0, 0, 0, 0, 0, 0, 0, 0, 0},
        {"dbl", TYPE_dbl, 1, sizeof(dbl), sizeof(dbl), 0, 0, (ptr) &dbl_nil,
         (int (*)(str, int *, ptr *)) dblFromStr, (int (*)(str *, int *, ptr)) 
dblToStr,
         (void *(*)(void *, stream *, size_t)) dblRead, (int (*)(void *, stream 
*, size_t)) dblWrite,
         (int (*)(ptr, ptr)) dblCmp,
         (BUN (*)(ptr)) lngHash, (void (*)(ptr, int)) lngConvert,
-        0, 0,
-        0, 0,
-        0, 0,
-        0, 0},
+        0, 0, 0, 0, 0, 0, 0, 0, 0},
        {"lng", TYPE_lng, 1, sizeof(lng), sizeof(lng), 0, 0, (ptr) &lng_nil,
         (int (*)(str, int *, ptr *)) lngFromStr, (int (*)(str *, int *, ptr)) 
lngToStr,
         (void *(*)(void *, stream *, size_t)) lngRead, (int (*)(void *, stream 
*, size_t)) lngWrite,
         (int (*)(ptr, ptr)) lngCmp,
         (BUN (*)(ptr)) lngHash, (void (*)(ptr, int)) lngConvert,
-        0, 0,
-        0, 0,
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to