aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2012-08-31 11:19:00 -0400
committerJonathan Herman <hermanjl@cs.unc.edu>2012-08-31 11:19:00 -0400
commit096d4a1070fd067ab6e36f272c812616f266bb5e (patch)
tree09d4c2a6d77f550ac893e7aa8dfb06884aaf3a78
parentbd785a74d55010269548cb1d05740643e96a321d (diff)
Avoid unnecessary record parsing
-rw-r--r--rt-plot-cpu.c18
-rw-r--r--rt-plot-task.c15
-rw-r--r--trace-graph.c6
-rw-r--r--trace-graph.h2
4 files changed, 26 insertions, 15 deletions
diff --git a/rt-plot-cpu.c b/rt-plot-cpu.c
index 9a609e0..aa7b611 100644
--- a/rt-plot-cpu.c
+++ b/rt-plot-cpu.c
@@ -345,21 +345,25 @@ static int rt_cpu_plot_event(struct graph_info *ginfo, struct graph_plot *plot,
345 345
346 match = try_switch_away(ginfo, rtc_info, record, info) || 346 match = try_switch_away(ginfo, rtc_info, record, info) ||
347 try_switch_to(ginfo, rtc_info, record, info) || 347 try_switch_to(ginfo, rtc_info, record, info) ||
348 try_completion(ginfo, rtc_info, record, info) ||
349 try_sched_switch(ginfo, rtc_info, record, info); 348 try_sched_switch(ginfo, rtc_info, record, info);
350 349
350 if (is_high_res(ginfo)) {
351 match = match || try_completion(ginfo, rtc_info, record, info);
352
353 }
354
351 if (!match) { 355 if (!match) {
352 /* TODO: this should not be necessary! 356 /* TODO: this should not be necessary!
353 * Have to call checks to ensure ids are loaded. Otherwise, 357 * Have to call checks to ensure ids are loaded. Otherwise,
354 * is_displayed will not work here or in any other methods. 358 * is_displayed will not work here or in any other methods.
355 */ 359 */
356#define ARG ginfo,record, &pid 360#define ARG ginfo,record, &pid
357 rt_graph_check_task_param(ARG, &dull, &dull); 361 rt_graph_check_task_param(ARG, &dull, &dull) ||
358 rt_graph_check_container_param(ARG, &dchar); 362 rt_graph_check_container_param(ARG, &dchar) ||
359 rt_graph_check_server_param(ARG, &dint, &dull, &dull); 363 rt_graph_check_server_param(ARG, &dint, &dull, &dull) ||
360 rt_graph_check_task_release(ARG, &dint, &dull, &dull); 364 rt_graph_check_task_release(ARG, &dint, &dull, &dull) ||
361 rt_graph_check_task_block(ARG, &dint, &dull); 365 rt_graph_check_task_block(ARG, &dint, &dull) ||
362 rt_graph_check_task_resume(ARG, &dint, &dull); 366 rt_graph_check_task_resume(ARG, &dint, &dull) ||
363 rt_graph_check_any(ARG, &eid, &ts); 367 rt_graph_check_any(ARG, &eid, &ts);
364#undef ARG 368#undef ARG
365 369
diff --git a/rt-plot-task.c b/rt-plot-task.c
index afb2bef..ec13313 100644
--- a/rt-plot-task.c
+++ b/rt-plot-task.c
@@ -473,12 +473,15 @@ rt_task_plot_record_matches(struct rt_plot_common *rt,
473 */ 473 */
474#define ARG ginfo, record, &pid 474#define ARG ginfo, record, &pid
475 match = rt_graph_check_switch_to(ARG, &dint, &dull) || 475 match = rt_graph_check_switch_to(ARG, &dint, &dull) ||
476 rt_graph_check_switch_away(ARG, &dint, &dull) || 476 rt_graph_check_switch_away(ARG, &dint, &dull);
477 rt_graph_check_task_release(ARG, &dint, &dull, &dull) || 477 if (is_high_res(ginfo)) {
478 rt_graph_check_task_completion(ARG, &dint, &dull) || 478 match = match ||
479 rt_graph_check_task_block(ARG, &dint, &dull) || 479 rt_graph_check_task_release(ARG, &dint, &dull, &dull) ||
480 rt_graph_check_task_resume(ARG, &dint, &dull) || 480 rt_graph_check_task_completion(ARG, &dint, &dull) ||
481 rt_graph_check_any(ARG, &dint, &dull); 481 rt_graph_check_task_block(ARG, &dint, &dull) ||
482 rt_graph_check_task_resume(ARG, &dint, &dull) ||
483 rt_graph_check_any(ARG, &dint, &dull);
484 }
482#undef ARG 485#undef ARG
483 return pid == match_pid; 486 return pid == match_pid;
484} 487}
diff --git a/trace-graph.c b/trace-graph.c
index 2ad32a8..66c2722 100644
--- a/trace-graph.c
+++ b/trace-graph.c
@@ -92,7 +92,7 @@ static int convert_dist_to_time(struct graph_info *ginfo, int dist)
92 return convert_x_to_time(ginfo, dist) - convert_x_to_time(ginfo, 0); 92 return convert_x_to_time(ginfo, dist) - convert_x_to_time(ginfo, 0);
93} 93}
94 94
95static int is_high_res(struct graph_info *ginfo) 95int is_high_res(struct graph_info *ginfo)
96{ 96{
97 return convert_dist_to_time(ginfo, PLOT_TRI_SIZE) < MAX_TRI_TIME; 97 return convert_dist_to_time(ginfo, PLOT_TRI_SIZE) < MAX_TRI_TIME;
98} 98}
@@ -1867,6 +1867,7 @@ static void draw_hashed_plots(struct graph_info *ginfo)
1867 struct record *record; 1867 struct record *record;
1868 struct plot_hash *hash; 1868 struct plot_hash *hash;
1869 struct plot_list *list; 1869 struct plot_list *list;
1870 unsigned long long old_start;
1870 1871
1871 set_cpus_to_rts(ginfo, ginfo->view_start_time); 1872 set_cpus_to_rts(ginfo, ginfo->view_start_time);
1872 1873
@@ -1899,8 +1900,9 @@ static void draw_hashed_plots(struct graph_info *ginfo)
1899 rt_graph_check_server_param(ARG, &dint, &dull, &dull); 1900 rt_graph_check_server_param(ARG, &dint, &dull, &dull);
1900#undef ARG 1901#undef ARG
1901 if (rt_graph_check_sys_release(ginfo, record, &rel)) { 1902 if (rt_graph_check_sys_release(ginfo, record, &rel)) {
1902 dull = rel - .1 * (ginfo->view_end_time - rel);; 1903 dull = rel - .1 * (ginfo->view_end_time - rel);
1903 ginfo->rtg_info.start_time = get_rts(ginfo, record); 1904 ginfo->rtg_info.start_time = get_rts(ginfo, record);
1905 //ginfo->view_end_time -= get_rts(ginfo, record) - ginfo->view_start_time;
1904 ginfo->view_start_time = get_rts(ginfo, record); 1906 ginfo->view_start_time = get_rts(ginfo, record);
1905 if (first) 1907 if (first)
1906 return; 1908 return;
diff --git a/trace-graph.h b/trace-graph.h
index 67a8f35..b3eff57 100644
--- a/trace-graph.h
+++ b/trace-graph.h
@@ -427,6 +427,8 @@ void graph_plot_cpus_update_callback(gboolean accept,
427 guint64 *selected_cpu_mask, 427 guint64 *selected_cpu_mask,
428 gpointer data); 428 gpointer data);
429 429
430int is_high_res(struct graph_info *ginfo);
431
430static inline void convert_nano(unsigned long long time, unsigned long *sec, 432static inline void convert_nano(unsigned long long time, unsigned long *sec,
431 unsigned long *usec) 433 unsigned long *usec)
432{ 434{