Addition of averages for event queue pending events
This commit is contained in:
@ -96,6 +96,7 @@ static int load_samples = 0;
|
|||||||
static int load_nfds = 0;
|
static int load_nfds = 0;
|
||||||
static double current_avg = 0.0;
|
static double current_avg = 0.0;
|
||||||
static double *avg_samples = NULL;
|
static double *avg_samples = NULL;
|
||||||
|
static int *evqp_samples = NULL;
|
||||||
static int next_sample = 0;
|
static int next_sample = 0;
|
||||||
static int n_avg_samples;
|
static int n_avg_samples;
|
||||||
|
|
||||||
@ -196,9 +197,12 @@ int i;
|
|||||||
|
|
||||||
hktask_add("Load Average", poll_loadav, NULL, POLL_LOAD_FREQ);
|
hktask_add("Load Average", poll_loadav, NULL, POLL_LOAD_FREQ);
|
||||||
n_avg_samples = 15 * 60 / POLL_LOAD_FREQ;
|
n_avg_samples = 15 * 60 / POLL_LOAD_FREQ;
|
||||||
avg_samples = (double *)malloc(sizeof(double *) * n_avg_samples);
|
avg_samples = (double *)malloc(sizeof(double) * n_avg_samples);
|
||||||
for (i = 0; i < n_avg_samples; i++)
|
for (i = 0; i < n_avg_samples; i++)
|
||||||
avg_samples[i] = 0.0;
|
avg_samples[i] = 0.0;
|
||||||
|
evqp_samples = (int *)malloc(sizeof(int) * n_avg_samples);
|
||||||
|
for (i = 0; i < n_avg_samples; i++)
|
||||||
|
evqp_samples[i] = 0.0;
|
||||||
|
|
||||||
#if PROFILE_POLL
|
#if PROFILE_POLL
|
||||||
plog = memlog_create("EventQueueWaitTime", ML_LONG, 10000);
|
plog = memlog_create("EventQueueWaitTime", ML_LONG, 10000);
|
||||||
@ -1055,6 +1059,7 @@ dShowThreads(DCB *dcb)
|
|||||||
int i, j, n;
|
int i, j, n;
|
||||||
char *state;
|
char *state;
|
||||||
double avg1 = 0.0, avg5 = 0.0, avg15 = 0.0;
|
double avg1 = 0.0, avg5 = 0.0, avg15 = 0.0;
|
||||||
|
double qavg1 = 0.0, qavg5 = 0.0, qavg15 = 0.0;
|
||||||
|
|
||||||
|
|
||||||
dcb_printf(dcb, "Polling Threads.\n\n");
|
dcb_printf(dcb, "Polling Threads.\n\n");
|
||||||
@ -1063,8 +1068,12 @@ double avg1 = 0.0, avg5 = 0.0, avg15 = 0.0;
|
|||||||
|
|
||||||
/* Average all the samples to get the 15 minute average */
|
/* Average all the samples to get the 15 minute average */
|
||||||
for (i = 0; i < n_avg_samples; i++)
|
for (i = 0; i < n_avg_samples; i++)
|
||||||
|
{
|
||||||
avg15 += avg_samples[i];
|
avg15 += avg_samples[i];
|
||||||
|
qavg15 += evqp_samples[i];
|
||||||
|
}
|
||||||
avg15 = avg15 / n_avg_samples;
|
avg15 = avg15 / n_avg_samples;
|
||||||
|
qavg15 = qavg15 / n_avg_samples;
|
||||||
|
|
||||||
/* Average the last third of the samples to get the 5 minute average */
|
/* Average the last third of the samples to get the 5 minute average */
|
||||||
n = 5 * 60 / POLL_LOAD_FREQ;
|
n = 5 * 60 / POLL_LOAD_FREQ;
|
||||||
@ -1072,8 +1081,12 @@ double avg1 = 0.0, avg5 = 0.0, avg15 = 0.0;
|
|||||||
if (i < 0)
|
if (i < 0)
|
||||||
i += n_avg_samples;
|
i += n_avg_samples;
|
||||||
for (j = i; j < i + n; j++)
|
for (j = i; j < i + n; j++)
|
||||||
|
{
|
||||||
avg5 += avg_samples[j % n_avg_samples];
|
avg5 += avg_samples[j % n_avg_samples];
|
||||||
|
qavg5 += evqp_samples[j % n_avg_samples];
|
||||||
|
}
|
||||||
avg5 = (3 * avg5) / (n_avg_samples);
|
avg5 = (3 * avg5) / (n_avg_samples);
|
||||||
|
qavg5 = (3 * qavg5) / (n_avg_samples);
|
||||||
|
|
||||||
/* Average the last 15th of the samples to get the 1 minute average */
|
/* Average the last 15th of the samples to get the 1 minute average */
|
||||||
n = 60 / POLL_LOAD_FREQ;
|
n = 60 / POLL_LOAD_FREQ;
|
||||||
@ -1081,11 +1094,18 @@ double avg1 = 0.0, avg5 = 0.0, avg15 = 0.0;
|
|||||||
if (i < 0)
|
if (i < 0)
|
||||||
i += n_avg_samples;
|
i += n_avg_samples;
|
||||||
for (j = i; j < i + n; j++)
|
for (j = i; j < i + n; j++)
|
||||||
|
{
|
||||||
avg1 += avg_samples[j % n_avg_samples];
|
avg1 += avg_samples[j % n_avg_samples];
|
||||||
|
qavg1 += evqp_samples[j % n_avg_samples];
|
||||||
|
}
|
||||||
avg1 = (15 * avg1) / (n_avg_samples);
|
avg1 = (15 * avg1) / (n_avg_samples);
|
||||||
|
qavg1 = (15 * qavg1) / (n_avg_samples);
|
||||||
|
|
||||||
dcb_printf(dcb, "15 Minute Average: %.2f, 5 Minute Average: %.2f, "
|
dcb_printf(dcb, "15 Minute Average: %.2f, 5 Minute Average: %.2f, "
|
||||||
"1 Minute Average: %.2f\n\n", avg15, avg5, avg1);
|
"1 Minute Average: %.2f\n\n", avg15, avg5, avg1);
|
||||||
|
dcb_printf(dcb, "Pending event queue length averages:\n");
|
||||||
|
dcb_printf(dcb, "15 Minute Average: %.2f, 5 Minute Average: %.2f, "
|
||||||
|
"1 Minute Average: %.2f\n\n", qavg15, qavg5, qavg1);
|
||||||
|
|
||||||
if (thread_data == NULL)
|
if (thread_data == NULL)
|
||||||
return;
|
return;
|
||||||
@ -1157,6 +1177,7 @@ int new_samples, new_nfds;
|
|||||||
else
|
else
|
||||||
current_avg = 0.0;
|
current_avg = 0.0;
|
||||||
avg_samples[next_sample] = current_avg;
|
avg_samples[next_sample] = current_avg;
|
||||||
|
evqp_samples[next_sample] = pollStats.evq_pending;
|
||||||
next_sample++;
|
next_sample++;
|
||||||
if (next_sample >= n_avg_samples)
|
if (next_sample >= n_avg_samples)
|
||||||
next_sample = 0;
|
next_sample = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user