1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-29 02:50:28 +03:00

Add a variable for start/current time to ctdb statistics

and print the time startistics was taken and for how long the statistics have been collected to the "ctdb statistics" output.

(This used to be ctdb commit 1bdfe0cd3370a335b960ce1ef97eade93b0cd2fa)
This commit is contained in:
Ronnie Sahlberg 2010-06-02 13:13:09 +10:00
parent ae3e91f0ce
commit 53ea238c6c
4 changed files with 22 additions and 0 deletions

View File

@ -2925,6 +2925,8 @@ struct ctdb_context *ctdb_init(struct event_context *ev)
return NULL;
}
ctdb->statistics.statistics_start_time = timeval_current();
return ctdb;
}

View File

@ -333,6 +333,8 @@ struct ctdb_statistics {
double max_lockwait_latency;
double max_childwrite_latency;
uint32_t num_recoveries;
struct timeval statistics_start_time;
struct timeval statistics_current_time;
};

View File

@ -108,6 +108,8 @@ static int32_t ctdb_control_dispatch(struct ctdb_context *ctdb,
}
}
ctdb->statistics.recovering = (ctdb->recovery_mode == CTDB_RECOVERY_ACTIVE);
ctdb->statistics.statistics_current_time = timeval_current();
outdata->dptr = (uint8_t *)&ctdb->statistics;
outdata->dsize = sizeof(ctdb->statistics);
return 0;
@ -128,6 +130,7 @@ static int32_t ctdb_control_dispatch(struct ctdb_context *ctdb,
case CTDB_CONTROL_STATISTICS_RESET: {
CHECK_CONTROL_DATA_SIZE(0);
ZERO_STRUCT(ctdb->statistics);
ctdb->statistics.statistics_start_time = timeval_current();
return 0;
}

View File

@ -162,6 +162,7 @@ static void show_statistics(struct ctdb_statistics *s)
int i;
const char *prefix=NULL;
int preflen=0;
int tmp, days, hours, minutes, seconds;
const struct {
const char *name;
uint32_t offset;
@ -200,7 +201,19 @@ static void show_statistics(struct ctdb_statistics *s)
STATISTICS_FIELD(memory_used),
STATISTICS_FIELD(max_hop_count),
};
tmp = s->statistics_current_time.tv_sec - s->statistics_start_time.tv_sec;
seconds = tmp%60;
tmp /= 60;
minutes = tmp%60;
tmp /= 60;
hours = tmp%24;
tmp /= 24;
days = tmp;
printf("CTDB version %u\n", CTDB_VERSION);
printf("Current time of statistics : %s", ctime(&s->statistics_start_time.tv_sec));
printf("Statistics collected since : (%03d %02d:%02d:%02d) %s", days, hours, minutes, seconds, ctime(&s->statistics_start_time.tv_sec));
for (i=0;i<ARRAY_SIZE(fields);i++) {
if (strchr(fields[i].name, '.')) {
preflen = strcspn(fields[i].name, ".")+1;
@ -223,6 +236,8 @@ static void show_statistics(struct ctdb_statistics *s)
printf(" %-30s %.6f sec\n", "max_call_latency", s->max_call_latency);
printf(" %-30s %.6f sec\n", "max_lockwait_latency", s->max_lockwait_latency);
printf(" %-30s %.6f sec\n", "max_childwrite_latency", s->max_childwrite_latency);
printf(" %-30s %.6f sec\n", "max_childwrite_latency", s->max_childwrite_latency);
talloc_free(tmp_ctx);
}