Changeset: 105970184241 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=105970184241 Modified Files: monetdb5/mal/mal_profiler.c monetdb5/mal/mal_profiler.h Branch: holindex Log Message:
Export CPU load for use in holisitic indexing. Add appropriate functions. diffs (119 lines): 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 @@ -65,29 +65,6 @@ static int profileAll = 0; /* all instr static int delayswitch = 0; /* to wait before sending the profile info */ static int eventcounter = 0; -#define PROFevent 0 -#define PROFtime 1 -#define PROFthread 2 -#define PROFpc 3 -#define PROFfunc 4 -#define PROFticks 5 -#define PROFcpu 6 -#define PROFmemory 7 -#define PROFreads 8 -#define PROFwrites 9 -#define PROFrbytes 10 -#define PROFwbytes 11 -#define PROFstmt 12 -#define PROFaggr 13 -#define PROFprocess 14 -#define PROFuser 15 -#define PROFstart 16 -#define PROFtype 17 -#define PROFdot 18 -#define PROFflow 19 -#define PROFping 20 /* heartbeat ping messages */ -#define PROFfootprint 21 - static struct { str name; /* which logical counter is needed */ int status; /* trace it or not */ @@ -117,6 +94,12 @@ static struct { /* 21 */ { 0, 0} }; +int +getProfileCounter(int idx){ + return profileCounter[idx].status ==1; +} + + /* * The counters can be set individually. */ @@ -1306,6 +1289,20 @@ static int getCPULoad(char cpuload[BUFSI } return 0; } +// Give users the option to check for the system load between two heart beats +double HeartbeatCPUload(void) +{ + return corestat[255].load; +} +void profilerGetCPUStat(lng *user, lng *nice, lng *sys, lng *idle, lng *iowait) +{ + (void) getCPULoad(0); + *user = corestat[255].user; + *nice = corestat[255].nice; + *sys = corestat[255].system; + *idle = corestat[255].idle; + *iowait = corestat[255].iowait; +} void profilerHeartbeatEvent(str msg) { diff --git a/monetdb5/mal/mal_profiler.h b/monetdb5/mal/mal_profiler.h --- a/monetdb5/mal/mal_profiler.h +++ b/monetdb5/mal/mal_profiler.h @@ -57,8 +57,32 @@ typedef struct RECSTAT { int RPreset0; /* Number of instructions evicted from RP by reset() due to updates*/ } *RecPtr, RecStat; +#define PROFevent 0 +#define PROFtime 1 +#define PROFthread 2 +#define PROFpc 3 +#define PROFfunc 4 +#define PROFticks 5 +#define PROFcpu 6 +#define PROFmemory 7 +#define PROFreads 8 +#define PROFwrites 9 +#define PROFrbytes 10 +#define PROFwbytes 11 +#define PROFstmt 12 +#define PROFaggr 13 +#define PROFprocess 14 +#define PROFuser 15 +#define PROFstart 16 +#define PROFtype 17 +#define PROFdot 18 +#define PROFflow 19 +#define PROFping 20 /* heartbeat ping messages */ +#define PROFfootprint 21 + mal_export str activateCounter(str name); mal_export str deactivateCounter(str name); +mal_export int getProfileCounter(int idx); mal_export str openProfilerStream(stream *fd); mal_export str closeProfilerStream(void); @@ -77,6 +101,7 @@ mal_export str stopProfiling(void); mal_export str cleanupProfiler(void); mal_export void initHeartbeat(void); mal_export void stopHeartbeat(void); +mal_export double HeartbeatCPUload(void); mal_export int instrFilter(InstrPtr pci, str mod, str fcn); mal_export void setFilter(Module cntxt, str mod, str fcn); @@ -101,6 +126,7 @@ mal_export lng getDiskReads(void); mal_export lng getDiskWrites(void); mal_export lng getUserTime(void); mal_export lng getSystemTime(void); +mal_export void profilerGetCPUStat(lng *user, lng *nice, lng *sys, lng *idle, lng *iowait); mal_export void _initTrace(void); #endif _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list