50,6 → 50,7 |
unsigned long long log_end_tsc = 0; |
unsigned long long total_dtsc = 0; |
|
/* Data for gnuplot external call */ |
int draw_data[DRAW_NUM+1]; |
|
int gnuplot_clear() { |
113,6 → 114,276 |
|
} |
|
int stats_from_execs(int ctx_num, unsigned long long *tot_tsc, |
unsigned long long *min_tsc, |
unsigned long long *mean_tsc, |
unsigned long long *max_tsc, |
unsigned long long *first_tsc, |
int *number) { |
|
unsigned long long temp_tsc; |
int k,i; |
|
temp_tsc = 0; |
*max_tsc = 0; |
*mean_tsc = 0; |
*min_tsc = 0xFFFFFFFF; |
*first_tsc = 0; |
k = 0; |
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[ctx_num].ctx) { |
if (*first_tsc == 0) *first_tsc = exec_list[i].start - log_start_tsc; |
if (exec_list[i].dtsc > *max_tsc) *max_tsc = exec_list[i].dtsc; |
if (exec_list[i].dtsc < *min_tsc) *min_tsc = exec_list[i].dtsc; |
temp_tsc += exec_list[i].dtsc; |
k++; |
} |
|
*number = k; |
*tot_tsc = temp_tsc; |
*mean_tsc = temp_tsc / k; |
|
return 0; |
|
} |
|
int stats_from_jobs(int ctx_num, unsigned long long *tot_tsc, |
unsigned long long *min_tsc, |
unsigned long long *mean_tsc, |
unsigned long long *max_tsc, |
unsigned long long *first_tsc, |
int *number) { |
|
unsigned long long temp_tsc; |
int k,i; |
|
temp_tsc = 0; |
*max_tsc = 0; |
*mean_tsc = 0; |
*min_tsc = 0xFFFFFFFF; |
*first_tsc = 0; |
k = 0; |
for (i=0;i<job_total;i++) |
if (job_list[i].ctx == context_list[ctx_num].ctx) { |
if (*first_tsc == 0) *first_tsc = job_list[i].start - log_start_tsc; |
if (job_list[i].dtsc > *max_tsc) *max_tsc = job_list[i].dtsc; |
if (job_list[i].dtsc < *min_tsc) *min_tsc = job_list[i].dtsc; |
temp_tsc += job_list[i].dtsc; |
k++; |
} |
|
*number = k; |
*tot_tsc = temp_tsc; |
*mean_tsc = temp_tsc / k; |
|
return 0; |
|
} |
|
int arr_stats_from_execs(int ctx_num, unsigned long long *min_tsc, |
unsigned long long *mean_tsc, |
unsigned long long *max_tsc) { |
|
unsigned long long last_start,temp_tsc,delta_start; |
int i,k; |
|
last_start = 0; |
temp_tsc = 0; |
*max_tsc = 0; |
*min_tsc = 0xFFFFFFFF; |
k = 0; |
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[ctx_num].ctx) { |
if (last_start == 0) { |
last_start = exec_list[i].start; |
} else { |
delta_start = exec_list[i].start - last_start; |
if (delta_start > *max_tsc) *max_tsc = delta_start; |
if (delta_start < *min_tsc) *min_tsc = delta_start; |
temp_tsc += delta_start; |
k++; |
last_start = exec_list[i].start; |
} |
} |
|
*mean_tsc = temp_tsc / k; |
|
return 0; |
|
} |
|
int arr_stats_from_jobs(int ctx_num, unsigned long long *min_tsc, |
unsigned long long *mean_tsc, |
unsigned long long *max_tsc) { |
|
unsigned long long last_start,temp_tsc,delta_start; |
int i,k; |
|
last_start = 0; |
temp_tsc = 0; |
*max_tsc = 0; |
*min_tsc = 0xFFFFFFFF; |
k = 0; |
for (i=0;i<job_total;i++) |
if (job_list[i].ctx == context_list[ctx_num].ctx) { |
if (last_start == 0) { |
last_start = job_list[i].start; |
} else { |
delta_start = job_list[i].start - last_start; |
if (delta_start > *max_tsc) *max_tsc = delta_start; |
if (delta_start < *min_tsc) *min_tsc = delta_start; |
temp_tsc += delta_start; |
k++; |
last_start = job_list[i].start; |
} |
} |
|
*mean_tsc = temp_tsc / k; |
|
return 0; |
|
} |
|
int plot_exec_demand_function(int ctx_num, char *pidstr) { |
|
unsigned long long max_limit; |
char tmpstr[50]; |
int i; |
|
gnuplot_clear(); |
|
max_limit = total_dtsc*1000/clk_per_msec; |
|
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[ctx_num].ctx) { |
int h1,h2,h3; |
|
h1 = ((exec_list[i].start-log_start_tsc)*1000/clk_per_msec) * DRAW_NUM / max_limit; |
h2 = ((exec_list[i].start+exec_list[i].dtsc-log_start_tsc)*1000/clk_per_msec) * DRAW_NUM / max_limit; |
for (h3=h1;h3<h2;h3++) |
if (h3 <= DRAW_NUM) draw_data[h3] += (exec_list[i].dtsc*1000/clk_per_msec)*(h3-h1)/(h2-h1); |
for (h3=h2;h3<=DRAW_NUM;h3++) |
if (h3 <= DRAW_NUM) draw_data[h3] += (exec_list[i].dtsc*1000/clk_per_msec); |
|
} |
|
sprintf(tmpstr,"Ctx [%d:%s] Demand-Function",context_list[ctx_num].ctx,pidstr); |
gnuplot_draw(tmpstr,max_limit,1); |
|
return 0; |
|
} |
|
int plot_exec_c_distrib(int ctx_num, unsigned long long max_tsc, char *pidstr) { |
|
unsigned long long max_limit; |
char tmpstr[50]; |
int i,h; |
|
gnuplot_clear(); |
|
max_limit = max_tsc*1000/clk_per_msec; |
|
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[ctx_num].ctx) { |
h = (exec_list[i].dtsc*1000/clk_per_msec) * DRAW_NUM / max_limit; |
if (h <= DRAW_NUM) draw_data[h]++; |
} |
|
sprintf(tmpstr,"Ctx [%d:%s] Exec C-dist",context_list[ctx_num].ctx,pidstr); |
gnuplot_draw(tmpstr,max_limit,0); |
|
return 0; |
|
} |
|
int plot_job_c_distrib(int ctx_num, unsigned long long max_tsc, char *pidstr) { |
|
unsigned long long max_limit; |
char tmpstr[50]; |
int i,h; |
|
gnuplot_clear(); |
|
max_limit = max_tsc*1000/clk_per_msec; |
|
for (i=0;i<job_total;i++) |
if (job_list[i].ctx == context_list[ctx_num].ctx) { |
h = (job_list[i].dtsc*1000/clk_per_msec) * DRAW_NUM / max_limit; |
if (h <= DRAW_NUM) draw_data[h]++; |
} |
|
sprintf(tmpstr,"Ctx [%d:%s] Job C-dist",context_list[ctx_num].ctx,pidstr); |
gnuplot_draw(tmpstr,max_limit,0); |
|
return 0; |
|
} |
|
int plot_exec_arr_distrib(int ctx_num, unsigned long long max_tsc, char *pidstr) { |
|
unsigned long long max_limit,last_start,delta_start; |
char tmpstr[50]; |
int i,h; |
|
gnuplot_clear(); |
|
max_limit = max_tsc*1000/clk_per_msec; |
|
last_start = 0; |
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[ctx_num].ctx) { |
if (last_start == 0) { |
last_start = exec_list[i].start; |
} else { |
delta_start = exec_list[i].start - last_start; |
|
h = (delta_start*1000/clk_per_msec) * DRAW_NUM / max_limit; |
if (h <= DRAW_NUM) draw_data[h]++; |
|
last_start = exec_list[i].start; |
} |
} |
|
sprintf(tmpstr,"Ctx [%d:%s] Exec Arr.Delta",context_list[ctx_num].ctx,pidstr); |
gnuplot_draw(tmpstr,max_limit,0); |
|
return 0; |
|
} |
|
int plot_job_arr_distrib(int ctx_num, unsigned long long max_tsc, char *pidstr) { |
|
unsigned long long max_limit,last_start,delta_start; |
char tmpstr[50]; |
int i,h; |
|
gnuplot_clear(); |
|
max_limit = max_tsc*1000/clk_per_msec; |
|
last_start = 0; |
for (i=0;i<job_total;i++) |
if (job_list[i].ctx == context_list[ctx_num].ctx) { |
if (last_start == 0) { |
last_start = job_list[i].start; |
} else { |
delta_start = job_list[i].start - last_start; |
|
h = (delta_start*1000/clk_per_msec) * DRAW_NUM / max_limit; |
if (h <= DRAW_NUM) draw_data[h]++; |
|
last_start = job_list[i].start; |
} |
} |
|
sprintf(tmpstr,"Ctx [%d:%s] Job Arr.Delta",context_list[ctx_num].ctx,pidstr); |
gnuplot_draw(tmpstr,max_limit,0); |
|
return 0; |
|
} |
|
int create_lists(char *filename) { |
|
FILE *input_file; |
370,11 → 641,9 |
|
int elaborate_statistics(int num, int task_type) { |
|
int i,k,h; |
char pidstr[10],tmpstr[30]; |
unsigned long long temp_tsc,max_tsc,min_tsc; |
unsigned long long last_start, delta_start, first_exec; |
unsigned long long max_limit; |
char pidstr[10]; |
unsigned long long tot_tsc,mean_tsc,max_tsc,min_tsc,first_tsc; |
int number; |
|
switch (context_list[num].pid) { |
case PID_NO_DEF: |
392,277 → 661,82 |
|
printf("Background Task CTX [%5d] PID [%s]\n",context_list[num].ctx,pidstr); |
|
temp_tsc = 0; |
max_tsc = 0; |
min_tsc = 0xFFFFFFFF; |
first_exec = 0; |
k = 0; |
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[num].ctx) { |
if (first_exec == 0) first_exec = exec_list[i].start - log_start_tsc; |
if (exec_list[i].dtsc > max_tsc) max_tsc = exec_list[i].dtsc; |
if (exec_list[i].dtsc < min_tsc) min_tsc = exec_list[i].dtsc; |
temp_tsc += exec_list[i].dtsc; |
k++; |
} |
printf(" Total Execution dTSC [%12llu] us [%12llu]\n",temp_tsc,temp_tsc*1000/clk_per_msec); |
printf(" Mean CPU Bandwidth [%11f%c]\n",(double)(temp_tsc)/(double)(total_dtsc)*100.0,'%'); |
printf(" after first exec [%11f%c]\n",(double)(temp_tsc)/(double)(total_dtsc-first_exec)*100.0,'%'); |
printf(" Execs Number [%12d]\n",k); |
stats_from_execs(num,&tot_tsc,&min_tsc,&mean_tsc,&max_tsc,&first_tsc,&number); |
|
printf(" Total Execution dTSC [%12llu] us [%12llu]\n",tot_tsc,tot_tsc*1000/clk_per_msec); |
printf(" Mean CPU Bandwidth [%11f%c]\n",(double)(tot_tsc)/(double)(total_dtsc)*100.0,'%'); |
printf(" after first exec [%11f%c]\n",(double)(tot_tsc)/(double)(total_dtsc-first_tsc)*100.0,'%'); |
printf(" Execs Number [%12d]\n",number); |
printf(" Min Exec dTSC [%12llu] us [%12llu]\n",min_tsc, min_tsc*1000/clk_per_msec); |
printf(" Mean Exec dTSC [%12llu] us [%12llu]\n",temp_tsc / k, temp_tsc / k*1000/clk_per_msec); |
printf(" Mean Exec dTSC [%12llu] us [%12llu]\n",mean_tsc, mean_tsc*1000/clk_per_msec); |
printf(" Max Exec dTSC [%12llu] us [%12llu]\n\n",max_tsc, max_tsc*1000/clk_per_msec); |
|
gnuplot_clear(); |
plot_exec_demand_function(num,pidstr); |
|
max_limit = total_dtsc*1000/clk_per_msec; |
|
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[num].ctx) { |
int h1,h2,h3; |
|
h1 = ((exec_list[i].start-log_start_tsc)*1000/clk_per_msec) * DRAW_NUM / max_limit; |
h2 = ((exec_list[i].start+exec_list[i].dtsc-log_start_tsc)*1000/clk_per_msec) * DRAW_NUM / max_limit; |
for (h3=h1;h3<h2;h3++) |
if (h3 <= DRAW_NUM) draw_data[h3] += (exec_list[i].dtsc*1000/clk_per_msec)*(h3-h1)/(h2-h1); |
for (h3=h2;h3<=DRAW_NUM;h3++) |
if (h3 <= DRAW_NUM) draw_data[h3] += (exec_list[i].dtsc*1000/clk_per_msec); |
|
} |
|
sprintf(tmpstr,"Ctx [%d:%s] Demand-Function",context_list[num].ctx,pidstr); |
gnuplot_draw(tmpstr,max_limit,1); |
|
} |
|
if (task_type == INTERRUPT) { |
|
printf("Interrupts\n"); |
|
temp_tsc = 0; |
max_tsc = 0; |
min_tsc = 0xFFFFFFFF; |
first_exec = 0; |
k = 0; |
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[num].ctx) { |
if (first_exec == 0) first_exec = exec_list[i].start - log_start_tsc; |
if (exec_list[i].dtsc > max_tsc) max_tsc = exec_list[i].dtsc; |
if (exec_list[i].dtsc < min_tsc) min_tsc = exec_list[i].dtsc; |
temp_tsc += exec_list[i].dtsc; |
k++; |
} |
stats_from_execs(num,&tot_tsc,&min_tsc,&mean_tsc,&max_tsc,&first_tsc,&number); |
|
printf(" Total Execution dTSC [%12llu] us [%12llu]\n",temp_tsc,temp_tsc*1000/clk_per_msec); |
printf(" Mean CPU Bandwidth [%11f%c]\n",(double)(temp_tsc)/(double)(total_dtsc)*100.0,'%'); |
printf(" after first int [%11f%c]\n",(double)(temp_tsc)/(double)(total_dtsc-first_exec)*100.0,'%'); |
printf(" Interrupts Number [%12d]\n",k); |
printf(" Total Execution dTSC [%12llu] us [%12llu]\n",tot_tsc,tot_tsc*1000/clk_per_msec); |
printf(" Mean CPU Bandwidth [%11f%c]\n",(double)(tot_tsc)/(double)(total_dtsc)*100.0,'%'); |
printf(" after first int [%11f%c]\n",(double)(tot_tsc)/(double)(total_dtsc-first_tsc)*100.0,'%'); |
printf(" Interrupts Number [%12d]\n",number); |
printf(" Min Interrupt dTSC [%12llu] us [%12llu]\n",min_tsc,min_tsc*1000/clk_per_msec); |
printf(" Mean Interrupt dTSC [%12llu] us [%12llu]\n",temp_tsc / k,temp_tsc / k*1000/clk_per_msec); |
printf(" Mean Interrupt dTSC [%12llu] us [%12llu]\n",mean_tsc,mean_tsc*1000/clk_per_msec); |
printf(" Max Interrupt dTSC [%12llu] us [%12llu]\n\n",max_tsc,max_tsc*1000/clk_per_msec); |
|
gnuplot_clear(); |
plot_exec_c_distrib(num,max_tsc,pidstr); |
|
max_limit = max_tsc*1000/clk_per_msec; |
arr_stats_from_execs(num,&min_tsc,&mean_tsc,&max_tsc); |
|
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[num].ctx) { |
h = (exec_list[i].dtsc*1000/clk_per_msec) * DRAW_NUM / max_limit; |
if (h <= DRAW_NUM) draw_data[h]++; |
} |
|
sprintf(tmpstr,"Int C-dist"); |
gnuplot_draw(tmpstr,max_limit,0); |
|
gnuplot_clear(); |
|
max_limit = total_dtsc*1000/clk_per_msec; |
|
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[num].ctx) { |
int h1,h2,h3; |
|
h1 = ((exec_list[i].start-log_start_tsc)*1000/clk_per_msec) * DRAW_NUM / max_limit; |
h2 = ((exec_list[i].start+exec_list[i].dtsc-log_start_tsc)*1000/clk_per_msec) * DRAW_NUM / max_limit; |
for (h3=h1;h3<h2;h3++) |
if (h3 <= DRAW_NUM) draw_data[h3] += (exec_list[i].dtsc*1000/clk_per_msec)*(h3-h1)/(h2-h1); |
for (h3=h2;h3<=DRAW_NUM;h3++) |
if (h3 <= DRAW_NUM) draw_data[h3] += (exec_list[i].dtsc*1000/clk_per_msec); |
|
} |
|
sprintf(tmpstr,"Int Demand-Function"); |
gnuplot_draw(tmpstr,max_limit,1); |
|
last_start = 0; |
temp_tsc = 0; |
max_tsc = 0; |
min_tsc = 0xFFFFFFFF; |
k = 0; |
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[num].ctx) { |
if (last_start == 0) { |
last_start = exec_list[i].start; |
} else { |
delta_start = exec_list[i].start - last_start; |
if (delta_start > max_tsc) max_tsc = delta_start; |
if (delta_start < min_tsc) min_tsc = delta_start; |
temp_tsc += delta_start; |
k++; |
last_start = exec_list[i].start; |
} |
} |
|
printf(" Min Arr. Delta dTSC [%12llu] us [%12llu]\n",min_tsc,min_tsc*1000/clk_per_msec); |
printf(" Mean Arr. Delta dTSC [%12llu] us [%12llu]\n",temp_tsc / k,temp_tsc / k*1000/clk_per_msec); |
printf(" Mean Arr. Delta dTSC [%12llu] us [%12llu]\n",mean_tsc,mean_tsc*1000/clk_per_msec); |
printf(" Max Arr. Delta dTSC [%12llu] us [%12llu]\n\n",max_tsc,max_tsc*1000/clk_per_msec); |
|
gnuplot_clear(); |
plot_exec_arr_distrib(num,max_tsc,pidstr); |
|
max_limit = max_tsc*1000/clk_per_msec; |
|
last_start = 0; |
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[num].ctx) { |
if (last_start == 0) { |
last_start = exec_list[i].start; |
} else { |
delta_start = exec_list[i].start - last_start; |
|
h = (delta_start*1000/clk_per_msec) * DRAW_NUM / max_limit; |
if (h <= DRAW_NUM) draw_data[h]++; |
|
last_start = exec_list[i].start; |
} |
} |
|
sprintf(tmpstr,"Int Arr.Delta"); |
gnuplot_draw(tmpstr,max_limit,0); |
|
} |
|
if (task_type == PERIODICAL) { |
|
printf("Periodical Task CTX [%5d] PID [%s]\n",context_list[num].ctx,pidstr); |
|
temp_tsc = 0; |
max_tsc = 0; |
min_tsc = 0xFFFFFFFF; |
first_exec = 0; |
k = 0; |
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[num].ctx) { |
if (first_exec == 0) first_exec = exec_list[i].start - log_start_tsc; |
if (exec_list[i].dtsc > max_tsc) max_tsc = exec_list[i].dtsc; |
if (exec_list[i].dtsc < min_tsc) min_tsc = exec_list[i].dtsc; |
temp_tsc += exec_list[i].dtsc; |
k++; |
} |
printf(" Total Execution dTSC [%12llu] us [%12llu]\n",temp_tsc,temp_tsc*1000/clk_per_msec); |
printf(" Mean CPU Bandwidth [%11f%c]\n",(double)(temp_tsc)/(double)(total_dtsc)*100.0,'%'); |
printf(" after first int [%11f%c]\n",(double)(temp_tsc)/(double)(total_dtsc-first_exec)*100.0,'%'); |
printf(" Execs Number [%12d]\n",k); |
stats_from_execs(num,&tot_tsc,&min_tsc,&mean_tsc,&max_tsc,&first_tsc,&number); |
|
printf(" Total Execution dTSC [%12llu] us [%12llu]\n",tot_tsc,tot_tsc*1000/clk_per_msec); |
printf(" Mean CPU Bandwidth [%11f%c]\n",(double)(tot_tsc)/(double)(total_dtsc)*100.0,'%'); |
printf(" after first exec [%11f%c]\n",(double)(tot_tsc)/(double)(total_dtsc-first_tsc)*100.0,'%'); |
printf(" Execs Number [%12d]\n",number); |
printf(" Min Exec dTSC [%12llu] us [%12llu]\n",min_tsc,min_tsc*1000/clk_per_msec); |
printf(" Mean Exec dTSC [%12llu] us [%12llu]\n",temp_tsc / k,temp_tsc / k*1000/clk_per_msec); |
printf(" Mean Exec dTSC [%12llu] us [%12llu]\n",mean_tsc,mean_tsc*1000/clk_per_msec); |
printf(" Max Exec dTSC [%12llu] us [%12llu]\n\n",max_tsc,max_tsc*1000/clk_per_msec); |
|
gnuplot_clear(); |
plot_exec_demand_function(num,pidstr); |
|
max_limit = total_dtsc*1000/clk_per_msec; |
stats_from_jobs(num,&tot_tsc,&min_tsc,&mean_tsc,&max_tsc,&first_tsc,&number); |
|
for (i=0;i<exec_total;i++) |
if (exec_list[i].ctx == context_list[num].ctx) { |
int h1,h2,h3; |
|
h1 = ((exec_list[i].start-log_start_tsc)*1000/clk_per_msec) * DRAW_NUM / max_limit; |
h2 = ((exec_list[i].start+exec_list[i].dtsc-log_start_tsc)*1000/clk_per_msec) * DRAW_NUM / max_limit; |
for (h3=h1;h3<h2;h3++) |
if (h3 <= DRAW_NUM) draw_data[h3] += (exec_list[i].dtsc*1000/clk_per_msec)*(h3-h1)/(h2-h1); |
for (h3=h2;h3<=DRAW_NUM;h3++) |
if (h3 <= DRAW_NUM) draw_data[h3] += (exec_list[i].dtsc*1000/clk_per_msec); |
|
} |
|
sprintf(tmpstr,"Ctx [%d:%s] Demand-Function",context_list[num].ctx,pidstr); |
gnuplot_draw(tmpstr,max_limit,1); |
|
temp_tsc = 0; |
max_tsc = 0; |
min_tsc = 0xFFFFFFFF; |
k = 0; |
for (i=0;i<job_total;i++) |
if (job_list[i].ctx == context_list[num].ctx) { |
if (job_list[i].dtsc > max_tsc) max_tsc = job_list[i].dtsc; |
if (job_list[i].dtsc < min_tsc) min_tsc = job_list[i].dtsc; |
temp_tsc += job_list[i].dtsc; |
k++; |
} |
printf(" Total Job Exec dTSC [%12llu] us [%12llu]\n",temp_tsc,temp_tsc*1000/clk_per_msec); |
printf(" Jobs Number [%12d]\n",k); |
printf(" Total Job Exec dTSC [%12llu] us [%12llu]\n",tot_tsc,tot_tsc*1000/clk_per_msec); |
printf(" Jobs Number [%12d]\n",number); |
printf(" Min Job dTSC [%12llu] us [%12llu]\n",min_tsc,min_tsc*1000/clk_per_msec); |
printf(" Mean Job dTSC [%12llu] us [%12llu]\n",temp_tsc / k,temp_tsc / k*1000/clk_per_msec); |
printf(" Mean Job dTSC [%12llu] us [%12llu]\n",mean_tsc,mean_tsc*1000/clk_per_msec); |
printf(" Max Job dTSC [%12llu] us [%12llu]\n\n",max_tsc,max_tsc*1000/clk_per_msec); |
|
gnuplot_clear(); |
plot_job_c_distrib(num,max_tsc,pidstr); |
|
max_limit = max_tsc*1000/clk_per_msec; |
arr_stats_from_jobs(num,&min_tsc,&mean_tsc,&max_tsc); |
|
for (i=0;i<job_total;i++) |
if (job_list[i].ctx == context_list[num].ctx) { |
h = (job_list[i].dtsc*1000/clk_per_msec) * DRAW_NUM / max_limit; |
if (h <= DRAW_NUM) draw_data[h]++; |
} |
|
sprintf(tmpstr,"[%d:%s] jobs C-dist",context_list[num].ctx,pidstr); |
gnuplot_draw(tmpstr,max_limit,0); |
|
last_start = 0; |
temp_tsc = 0; |
max_tsc = 0; |
min_tsc = 0xFFFFFFFF; |
k = 0; |
for (i=0;i<job_total;i++) |
if (job_list[i].ctx == context_list[num].ctx) { |
if (last_start == 0) { |
last_start = job_list[i].start; |
} else { |
delta_start = job_list[i].start - last_start; |
if (delta_start > max_tsc) max_tsc = delta_start; |
if (delta_start < min_tsc) min_tsc = delta_start; |
temp_tsc += delta_start; |
k++; |
last_start = job_list[i].start; |
} |
} |
|
printf(" Min Arr. Delta dTSC [%12llu] us [%12llu]\n",min_tsc,min_tsc*1000/clk_per_msec); |
printf(" Mean Arr. Delta dTSC [%12llu] us [%12llu]\n",temp_tsc / k,temp_tsc / k*1000/clk_per_msec); |
printf(" Mean Arr. Delta dTSC [%12llu] us [%12llu]\n",mean_tsc,mean_tsc*1000/clk_per_msec); |
printf(" Max Arr. Delta dTSC [%12llu] us [%12llu]\n\n",max_tsc,max_tsc*1000/clk_per_msec); |
|
gnuplot_clear(); |
plot_job_arr_distrib(num,max_tsc,pidstr); |
|
max_limit = max_tsc*1000/clk_per_msec; |
|
last_start = 0; |
for (i=0;i<job_total;i++) |
if (job_list[i].ctx == context_list[num].ctx) { |
if (last_start == 0) { |
last_start = job_list[i].start; |
} else { |
delta_start = job_list[i].start - last_start; |
|
h = (delta_start*1000/clk_per_msec) * DRAW_NUM / max_limit; |
if (h <= DRAW_NUM) draw_data[h]++; |
|
last_start = job_list[i].start; |
} |
} |
|
sprintf(tmpstr,"[%d:%s] jobs Arr.Delta",context_list[num].ctx,pidstr); |
gnuplot_draw(tmpstr,max_limit,0); |
|
} |
|
return 0; |
|
} |