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