Changeset: 3e3cf3ef9c33 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3e3cf3ef9c33
Modified Files:
clients/mapiclient/eventparser.c
clients/mapiclient/eventparser.h
clients/mapiclient/tachograph.c
clients/mapiclient/tomograph.c
monetdb5/mal/mal_profiler.c
Branch: default
Log Message:
Clean up and some re-naming.
diffs (300 lines):
diff --git a/clients/mapiclient/eventparser.c b/clients/mapiclient/eventparser.c
--- a/clients/mapiclient/eventparser.c
+++ b/clients/mapiclient/eventparser.c
@@ -10,7 +10,7 @@
#include "eventparser.h"
-char *statenames[]=
{"","start","done","action","ping","wait","iostat","gccollect"};
+char *statenames[]= {"","start","done","action","ping","wait","system"};
char *malarguments[MAXMALARGS];
int malargtop;
@@ -148,10 +148,14 @@ eventparser(char *row, EventRecord *ev)
return -3;
/* skip pc tag */
- { // decode pc
+ { // decode qry[pc]tag
+ char *nme = c;
c= strchr(c+1,'[');
if( c == 0)
return -4;
+ *c = 0;
+ ev->blk= strdup(nme);
+ *c = '[';
ev->pc = atoi(c+1);
c= strchr(c+1,']');
if ( c == 0)
@@ -170,19 +174,19 @@ eventparser(char *row, EventRecord *ev)
if (c == 0)
return -5;
if (strncmp(c + 1, "start", 5) == 0) {
- ev->state = START;
+ ev->state = MDB_START;
c += 6;
} else if (strncmp(c + 1, "done", 4) == 0) {
- ev->state = DONE;
+ ev->state = MDB_DONE;
c += 5;
} else if (strncmp(c + 1, "ping", 4) == 0) {
- ev->state = PING;
+ ev->state = MDB_PING;
c += 5;
- } else if (strncmp(c + 1, "stat", 4) == 0) {
- ev->state = IOSTAT;
- c += 6;
+ } else if (strncmp(c + 1, "system", 6) == 0) {
+ ev->state = MDB_SYSTEM;
+ c += 5;
} else if (strncmp(c + 1, "wait", 4) == 0) {
- ev->state = WAIT;
+ ev->state = MDB_WAIT;
c += 5;
} else {
ev->state = 0;
diff --git a/clients/mapiclient/eventparser.h b/clients/mapiclient/eventparser.h
--- a/clients/mapiclient/eventparser.h
+++ b/clients/mapiclient/eventparser.h
@@ -58,31 +58,32 @@
#define MAXTHREADS 1048
#define MAXBOX 32678 /* should be > MAXTHREADS */
-#define START 1
-#define DONE 2
-#define ACTION 3
-#define PING 4
-#define WAIT 5
-#define IOSTAT 6
-#define GCOLLECT 7
+#define MDB_START 1
+#define MDB_DONE 2
+#define MDB_PING 3
+#define MDB_WAIT 4
+#define MDB_SYSTEM 5
+
extern char *statenames[];
+// the break down of a profiler event message
typedef struct {
int state;
- int pc;
- int tag;
- lng eventnr;
- int thread;
+ char *blk; // name of MAL block
+ int pc; // instruction counter in block
+ int tag; // unique MAL block invocation tag
+ lng eventnr;// serial event number
+ int thread; // worker thread involved
lng clkticks;
lng ticks;
lng memory;
- lng tmpspace;
+ lng tmpspace; // size of temporary produced
lng inblock;
lng oublock;
lng majflt;
lng swaps;
lng csw;
- char *stmt;
+ char *stmt; // MAL statement, cpu loads or commentary
char *fcn;
char *numa;
} EventRecord;
diff --git a/clients/mapiclient/tachograph.c b/clients/mapiclient/tachograph.c
--- a/clients/mapiclient/tachograph.c
+++ b/clients/mapiclient/tachograph.c
@@ -511,7 +511,7 @@ update(EventRecord *ev)
char number[BUFSIZ]={0};
/* handle a ping event, keep the current instruction in focus */
- if (ev->state >= PING ) {
+ if (ev->state >= MDB_PING ) {
// All state events are ignored
return;
}
@@ -541,7 +541,7 @@ update(EventRecord *ev)
}
/* monitor top level function brackets, we restrict ourselves to SQL
queries */
- if (!capturing && ev->state == START && ev->fcn && strncmp(ev->fcn,
"function", 8) == 0) {
+ if (!capturing && ev->state == MDB_START && ev->fcn && strncmp(ev->fcn,
"function", 8) == 0) {
if( (i = sscanf(ev->fcn + 9,"user.s%d_%d",&uid,&qid)) != 2){
if( debug)
fprintf(stderr,"Start phase parsing %d, uid %d
qid %d\n",i,uid,qid);
@@ -567,7 +567,7 @@ update(EventRecord *ev)
return;
/* start of instruction box */
- if (ev->state == START ) {
+ if (ev->state == MDB_START ) {
if(ev->fcn && strstr(ev->fcn,"querylog.define") ){
// extract a string argument
currentquery = malarguments[0];
@@ -682,7 +682,7 @@ update(EventRecord *ev)
return;
}
/* end the instruction box */
- if (ev->state == DONE ){
+ if (ev->state == MDB_DONE ){
if( ev->tag != currenttag)
return; // forget all except one query
@@ -720,7 +720,7 @@ update(EventRecord *ev)
events[ev->pc].actual= ev->ticks;
clearArguments();
}
- if (ev->state == DONE && ev->fcn && strncmp(ev->fcn, "function", 8) ==
0) {
+ if (ev->state == MDB_DONE && ev->fcn && strncmp(ev->fcn, "function", 8)
== 0) {
if (currentfunction && strcmp(currentfunction, ev->fcn+9) == 0)
{
if( capturing == 0){
free(currentfunction);
diff --git a/clients/mapiclient/tomograph.c b/clients/mapiclient/tomograph.c
--- a/clients/mapiclient/tomograph.c
+++ b/clients/mapiclient/tomograph.c
@@ -772,11 +772,11 @@ showcpu(void)
fprintf(gnudata, "set xrange ["LLFMT".0:"LLFMT".0]\n", startrange,
(endrange? endrange:lastclktick - starttime));
fprintf(gnudata, "set yrange [0:%d]\n", cpus);
for (i = 0; i < topbox; i++)
- j+=(box[i].state == PING);
+ j+=(box[i].state == MDB_PING);
if( debug)
fprintf(stderr,"Pings for cpu heat:%d\n",j);
for (i = 0; i < topbox; i++)
- if (box[i].state == PING) {
+ if (box[i].state == MDB_PING) {
// decode the cpu heat
j = 0;
s = box[i].stmt +1;
@@ -811,7 +811,7 @@ showio(void)
lng max = 0;
for (i = 0; i < topbox; i++)
- if (box[i].clkend && box[i].state >= PING) {
+ if (box[i].clkend && box[i].state >= MDB_PING) {
if (box[i].inblock > max)
max = box[i].inblock;
if (box[i].oublock > max)
@@ -1122,7 +1122,7 @@ createTomogram(void)
/* detect all different threads and assign them a row */
for (i = 0; i < topbox; i++){
- if (box[i].clkend && box[i].state != PING) {
+ if (box[i].clkend && box[i].state != MDB_PING) {
for (j = 0; j < top; j++)
if (rows[j] == box[i].thread)
break;
@@ -1132,7 +1132,7 @@ createTomogram(void)
fprintf(stderr,"Assign thread %d to
%d\n", box[i].thread, top);
rows[top++] = box[i].thread;
}
- if( box[i].state != WAIT)
+ if( box[i].state != MDB_WAIT)
updmap(i);
}
}
@@ -1178,16 +1178,12 @@ createTomogram(void)
fprintf(gnudata, "set object %d
rectangle from "LLFMT".0, %d.0 to "LLFMT".0, %d fillcolor rgb \"%s\" fillstyle
solid 1.0 \n",
object++, box[i].clkstart,
box[i].row * 2 * h, box[i].clkend, box[i].row * 2 * h + h,
colors[box[i].color].col);
break;
- case PING:
+ case MDB_PING:
break;
- case WAIT:
+ case MDB_WAIT:
fprintf(gnudata, "set object %d rectangle from
"LLFMT".0, %d.0 to %.2f,%.2f front fillcolor rgb \"red\" fillstyle solid 1.0\n",
object++, box[i].clkstart, box[i].row *
2 * h+h/3, box[i].clkstart+ w /25.0, box[i].row *2 *h + h - 0.3 * h);
break;
- case GCOLLECT:
- fprintf(gnudata, "set object %d rectangle from
"LLFMT".0, %d.0 to "LLFMT".0, %d fillcolor rgb \"green\" fillstyle solid 1.0
\n",
- object++, box[i].clkstart, box[i].row *
2 * h +h/3, box[i].clkend, box[i].row * 2 * h + h-h/3);
- break;
}
@@ -1252,8 +1248,8 @@ update(char *line, EventRecord *ev)
exit(0);
}
/* handle a ping event, keep the current instruction in focus */
- if (ev->state >= PING ) {
- if (cpus == 0 && ev->state == PING) {
+ if (ev->state >= MDB_PING ) {
+ if (cpus == 0 && ev->state == MDB_PING) {
char *s;
if( (s= ev->stmt,'['))
s++;
@@ -1278,8 +1274,6 @@ update(char *line, EventRecord *ev)
box[idx].thread = ev->thread;
//lastclk[thread] = clkticks-starttime;
box[idx].clkend = box[idx].clkstart = ev->clkticks-starttime;
- if (ev->state == GCOLLECT)
- box[idx].clkstart -= ev->ticks;
box[idx].memend = box[idx].memstart = ev->memory;
box[idx].footstart = box[idx].tmpspace = ev->tmpspace;
box[idx].inblock = ev->inblock;
@@ -1296,7 +1290,7 @@ update(char *line, EventRecord *ev)
ping = idx;
return;
}
- box[idx].fcn = ev->state == PING?
strdup("profiler.ping"):strdup("profiler.wait");
+ box[idx].fcn = ev->state == MDB_PING?
strdup("profiler.ping"):strdup("profiler.wait");
threads[ev->thread] = ++topbox;
idx = threads[ev->thread];
box[idx] = b;
@@ -1330,7 +1324,7 @@ update(char *line, EventRecord *ev)
}
/* monitor top level function brackets, we restrict ourselves to SQL
queries */
- if (!capturing && ev->state == START && ev->fcn && strncmp(ev->fcn,
"function", 8) == 0) {
+ if (!capturing && ev->state == MDB_START && ev->fcn && strncmp(ev->fcn,
"function", 8) == 0) {
if( (i = sscanf(ev->fcn + 9,"user.s%d_%d",&uid,&qid)) != 2){
if( debug)
fprintf(stderr,"Start phase parsing %d, uid %d
qid %d\n",i,uid,qid);
@@ -1361,7 +1355,7 @@ update(char *line, EventRecord *ev)
if( tracefd)
fprintf(tracefd,"%s\n",line);
/* start of instruction box */
- if (ev->state == START ) {
+ if (ev->state == MDB_START ) {
if(debug)
fprintf(stderr, "Start box %s clicks "LLFMT" stmt %s
thread %d idx %d box %d\n", (ev->fcn?ev->fcn:""), ev->clkticks,currentfunction,
ev->thread,idx,topbox);
box[idx].state = ev->state;
@@ -1409,7 +1403,7 @@ update(char *line, EventRecord *ev)
return;
}
/* end the instruction box */
- if (ev->state == DONE && ev->fcn && strncmp(ev->fcn, "function", 8) ==
0) {
+ if (ev->state == MDB_DONE && ev->fcn && strncmp(ev->fcn, "function", 8)
== 0) {
if (currentfunction && strcmp(currentfunction, ev->fcn+9) == 0)
{
if( capturing == 0){
free(currentfunction);
@@ -1431,7 +1425,7 @@ update(char *line, EventRecord *ev)
return;
}
}
- if (ev->state == DONE ){
+ if (ev->state == MDB_DONE ){
if( box[idx].clkstart == 0){
// ignore incorrect pairs
if(debug) fprintf(stderr, "INCORRECT START\n");
@@ -1444,7 +1438,7 @@ update(char *line, EventRecord *ev)
box[idx].memend = ev->memory;
box[idx].tmpspace = ev->tmpspace;
box[idx].ticks = ev->ticks;
- box[idx].state = ACTION;
+ box[idx].state = MDB_DONE;
box[idx].inblock = ev->inblock;
box[idx].oublock = ev->oublock;
box[idx].majflt = ev->majflt;
diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c
--- a/monetdb5/mal/mal_profiler.c
+++ b/monetdb5/mal/mal_profiler.c
@@ -22,7 +22,6 @@
#include "mal_debugger.h"
stream *eventstream = 0;
-stream *progressstream = 0;
static int offlineProfiling = FALSE;
static int cachedProfiling = FALSE;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list