WIP
This commit is contained in:
parent
c594c36387
commit
4e23d7d435
@ -38,7 +38,7 @@ window_pixel_size 1
|
|||||||
window_labels_to_draw 1
|
window_labels_to_draw 1
|
||||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||||
window_filter_module evt_type 1 400
|
window_filter_module evt_type 1 10
|
||||||
window_filter_module evt_type_label 1 "Unknown"
|
window_filter_module evt_type_label 1 "Unknown"
|
||||||
window_synchronize 1
|
window_synchronize 1
|
||||||
|
|
||||||
@ -77,7 +77,7 @@ window_pixel_size 1
|
|||||||
window_labels_to_draw 1
|
window_labels_to_draw 1
|
||||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||||
window_filter_module evt_type 1 200
|
window_filter_module evt_type 1 20
|
||||||
window_filter_module evt_type_label 1 "Unknown"
|
window_filter_module evt_type_label 1 "Unknown"
|
||||||
window_synchronize 1
|
window_synchronize 1
|
||||||
|
|
||||||
@ -116,7 +116,7 @@ window_pixel_size 1
|
|||||||
window_labels_to_draw 1
|
window_labels_to_draw 1
|
||||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||||
window_filter_module evt_type 1 300
|
window_filter_module evt_type 1 21
|
||||||
window_filter_module evt_type_label 1 "Unknown"
|
window_filter_module evt_type_label 1 "Unknown"
|
||||||
window_synchronize 1
|
window_synchronize 1
|
||||||
|
|
||||||
|
283
cfg/all.cfg
Normal file
283
cfg/all.cfg
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
#ParaverCFG
|
||||||
|
ConfigFile.Version: 3.4
|
||||||
|
ConfigFile.NumWindows: 7
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
< NEW DISPLAYING WINDOW Active PID >
|
||||||
|
################################################################################
|
||||||
|
window_name Active PID
|
||||||
|
window_type single
|
||||||
|
window_id 1
|
||||||
|
window_position_x 0
|
||||||
|
window_position_y 231
|
||||||
|
window_width 956
|
||||||
|
window_height 189
|
||||||
|
window_comm_lines_enabled true
|
||||||
|
window_flags_enabled true
|
||||||
|
window_noncolor_mode true
|
||||||
|
window_logical_filtered true
|
||||||
|
window_physical_filtered false
|
||||||
|
window_comm_fromto true
|
||||||
|
window_comm_tagsize true
|
||||||
|
window_comm_typeval true
|
||||||
|
window_units Microseconds
|
||||||
|
window_maximum_y 7088.000000000000
|
||||||
|
window_minimum_y 1.000000000000
|
||||||
|
window_compute_y_max false
|
||||||
|
window_level thread
|
||||||
|
window_scale_relative 1.000000000000
|
||||||
|
window_end_time_relative 1.000000000000
|
||||||
|
window_object appl { 1, { All } }
|
||||||
|
window_object task { 0, 1, { All } }
|
||||||
|
window_object thread { 0, 0, 19, { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
window_begin_time_relative 0.000000000000
|
||||||
|
window_open true
|
||||||
|
window_drawmode draw_maximum
|
||||||
|
window_drawmode_rows draw_maximum
|
||||||
|
window_pixel_size 1
|
||||||
|
window_labels_to_draw 1
|
||||||
|
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||||
|
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||||
|
window_filter_module evt_type 1 10
|
||||||
|
window_filter_module evt_type_label 1 "Unknown"
|
||||||
|
window_synchronize 1
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
< NEW DISPLAYING WINDOW Active Task ID >
|
||||||
|
################################################################################
|
||||||
|
window_name Active Task ID
|
||||||
|
window_type single
|
||||||
|
window_id 2
|
||||||
|
window_position_x 0
|
||||||
|
window_position_y 442
|
||||||
|
window_width 956
|
||||||
|
window_height 190
|
||||||
|
window_comm_lines_enabled true
|
||||||
|
window_flags_enabled true
|
||||||
|
window_noncolor_mode true
|
||||||
|
window_logical_filtered true
|
||||||
|
window_physical_filtered false
|
||||||
|
window_comm_fromto true
|
||||||
|
window_comm_tagsize true
|
||||||
|
window_comm_typeval true
|
||||||
|
window_units Microseconds
|
||||||
|
window_maximum_y 21.000000000000
|
||||||
|
window_minimum_y 2.000000000000
|
||||||
|
window_compute_y_max false
|
||||||
|
window_level thread
|
||||||
|
window_scale_relative 1.000000000000
|
||||||
|
window_end_time_relative 1.000000000000
|
||||||
|
window_object appl { 1, { All } }
|
||||||
|
window_object task { 0, 1, { All } }
|
||||||
|
window_object thread { 0, 0, 19, { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
window_begin_time_relative 0.000000000000
|
||||||
|
window_open true
|
||||||
|
window_drawmode draw_maximum
|
||||||
|
window_drawmode_rows draw_maximum
|
||||||
|
window_pixel_size 1
|
||||||
|
window_labels_to_draw 1
|
||||||
|
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||||
|
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||||
|
window_filter_module evt_type 1 20
|
||||||
|
window_filter_module evt_type_label 1 "Unknown"
|
||||||
|
window_synchronize 1
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
< NEW DISPLAYING WINDOW Active Task Type ID >
|
||||||
|
################################################################################
|
||||||
|
window_name Active Task Type ID
|
||||||
|
window_type single
|
||||||
|
window_id 3
|
||||||
|
window_position_x 0
|
||||||
|
window_position_y 654
|
||||||
|
window_width 956
|
||||||
|
window_height 190
|
||||||
|
window_comm_lines_enabled true
|
||||||
|
window_flags_enabled true
|
||||||
|
window_noncolor_mode true
|
||||||
|
window_color_mode window_in_null_gradient_mode
|
||||||
|
window_logical_filtered true
|
||||||
|
window_physical_filtered false
|
||||||
|
window_comm_fromto true
|
||||||
|
window_comm_tagsize true
|
||||||
|
window_comm_typeval true
|
||||||
|
window_units Microseconds
|
||||||
|
window_maximum_y 21.000000000000
|
||||||
|
window_minimum_y 2.000000000000
|
||||||
|
window_compute_y_max false
|
||||||
|
window_level thread
|
||||||
|
window_scale_relative 1.000000000000
|
||||||
|
window_end_time_relative 1.000000000000
|
||||||
|
window_object appl { 1, { All } }
|
||||||
|
window_object task { 0, 1, { All } }
|
||||||
|
window_object thread { 0, 0, 19, { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
window_begin_time_relative 0.000000000000
|
||||||
|
window_open true
|
||||||
|
window_drawmode draw_maximum
|
||||||
|
window_drawmode_rows draw_maximum
|
||||||
|
window_pixel_size 1
|
||||||
|
window_labels_to_draw 1
|
||||||
|
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||||
|
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||||
|
window_filter_module evt_type 1 21
|
||||||
|
window_filter_module evt_type_label 1 "Unknown"
|
||||||
|
window_synchronize 1
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
< NEW DISPLAYING WINDOW Number of threads running per CPU >
|
||||||
|
################################################################################
|
||||||
|
window_name Number of threads running per CPU
|
||||||
|
window_type single
|
||||||
|
window_id 4
|
||||||
|
window_position_x 0
|
||||||
|
window_position_y 866
|
||||||
|
window_width 956
|
||||||
|
window_height 190
|
||||||
|
window_comm_lines_enabled true
|
||||||
|
window_flags_enabled true
|
||||||
|
window_noncolor_mode true
|
||||||
|
window_color_mode window_in_null_gradient_mode
|
||||||
|
window_logical_filtered true
|
||||||
|
window_physical_filtered false
|
||||||
|
window_comm_fromto true
|
||||||
|
window_comm_tagsize true
|
||||||
|
window_comm_typeval true
|
||||||
|
window_units Microseconds
|
||||||
|
window_maximum_y 5.000000000000
|
||||||
|
window_minimum_y 1.000000000000
|
||||||
|
window_compute_y_max false
|
||||||
|
window_level thread
|
||||||
|
window_scale_relative 1.000000000000
|
||||||
|
window_end_time_relative 1.000000000000
|
||||||
|
window_object appl { 1, { All } }
|
||||||
|
window_object task { 0, 1, { All } }
|
||||||
|
window_object thread { 0, 0, 19, { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
window_begin_time_relative 0.000000000000
|
||||||
|
window_open true
|
||||||
|
window_drawmode draw_maximum
|
||||||
|
window_drawmode_rows draw_maximum
|
||||||
|
window_pixel_size 1
|
||||||
|
window_labels_to_draw 1
|
||||||
|
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||||
|
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||||
|
window_filter_module evt_type 1 12
|
||||||
|
window_filter_module evt_type_label 1 "Unknown"
|
||||||
|
window_synchronize 1
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
< NEW DISPLAYING WINDOW T:Thread State >
|
||||||
|
################################################################################
|
||||||
|
window_name T:Thread State
|
||||||
|
window_type single
|
||||||
|
window_id 5
|
||||||
|
window_position_x 960
|
||||||
|
window_position_y 559
|
||||||
|
window_width 956
|
||||||
|
window_height 497
|
||||||
|
window_comm_lines_enabled true
|
||||||
|
window_flags_enabled true
|
||||||
|
window_noncolor_mode true
|
||||||
|
window_logical_filtered true
|
||||||
|
window_physical_filtered false
|
||||||
|
window_comm_fromto true
|
||||||
|
window_comm_tagsize true
|
||||||
|
window_comm_typeval true
|
||||||
|
window_units Microseconds
|
||||||
|
window_maximum_y 5.000000000000
|
||||||
|
window_minimum_y 1.000000000000
|
||||||
|
window_compute_y_max false
|
||||||
|
window_level thread
|
||||||
|
window_scale_relative 1.000000000000
|
||||||
|
window_end_time_relative 1.000000000000
|
||||||
|
window_object appl { 1, { All } }
|
||||||
|
window_begin_time_relative 0.000000000000
|
||||||
|
window_open true
|
||||||
|
window_drawmode draw_maximum
|
||||||
|
window_drawmode_rows draw_maximum
|
||||||
|
window_pixel_size 1
|
||||||
|
window_labels_to_draw 1
|
||||||
|
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||||
|
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||||
|
window_filter_module evt_type 1 60
|
||||||
|
window_filter_module evt_type_label 1 "Unknown"
|
||||||
|
window_synchronize 1
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
< NEW DISPLAYING WINDOW T:Active TID >
|
||||||
|
################################################################################
|
||||||
|
window_name T:Active TID
|
||||||
|
window_type single
|
||||||
|
window_id 6
|
||||||
|
window_position_x 960
|
||||||
|
window_position_y 40
|
||||||
|
window_width 956
|
||||||
|
window_height 497
|
||||||
|
window_comm_lines_enabled true
|
||||||
|
window_flags_enabled true
|
||||||
|
window_noncolor_mode true
|
||||||
|
window_logical_filtered true
|
||||||
|
window_physical_filtered false
|
||||||
|
window_comm_fromto true
|
||||||
|
window_comm_tagsize true
|
||||||
|
window_comm_typeval true
|
||||||
|
window_units Microseconds
|
||||||
|
window_maximum_y 7103.000000000000
|
||||||
|
window_minimum_y 7086.000000000000
|
||||||
|
window_compute_y_max false
|
||||||
|
window_level thread
|
||||||
|
window_scale_relative 1.000000000000
|
||||||
|
window_end_time_relative 1.000000000000
|
||||||
|
window_object appl { 1, { All } }
|
||||||
|
window_begin_time_relative 0.000000000000
|
||||||
|
window_open true
|
||||||
|
window_drawmode draw_maximum
|
||||||
|
window_drawmode_rows draw_maximum
|
||||||
|
window_pixel_size 1
|
||||||
|
window_labels_to_draw 1
|
||||||
|
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||||
|
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||||
|
window_filter_module evt_type 1 61
|
||||||
|
window_filter_module evt_type_label 1 "Unknown"
|
||||||
|
window_synchronize 1
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
< NEW DISPLAYING WINDOW C:Thread TID >
|
||||||
|
################################################################################
|
||||||
|
window_name C:Thread TID
|
||||||
|
window_type single
|
||||||
|
window_id 7
|
||||||
|
window_position_x 0
|
||||||
|
window_position_y 20
|
||||||
|
window_width 956
|
||||||
|
window_height 189
|
||||||
|
window_comm_lines_enabled true
|
||||||
|
window_flags_enabled true
|
||||||
|
window_noncolor_mode true
|
||||||
|
window_logical_filtered true
|
||||||
|
window_physical_filtered false
|
||||||
|
window_comm_fromto true
|
||||||
|
window_comm_tagsize true
|
||||||
|
window_comm_typeval true
|
||||||
|
window_units Microseconds
|
||||||
|
window_maximum_y 7102.000000000000
|
||||||
|
window_minimum_y 1.000000000000
|
||||||
|
window_compute_y_max false
|
||||||
|
window_level thread
|
||||||
|
window_scale_relative 1.000000000000
|
||||||
|
window_end_time_relative 1.000000000000
|
||||||
|
window_object appl { 1, { All } }
|
||||||
|
window_object task { 0, 1, { All } }
|
||||||
|
window_object thread { 0, 0, 19, { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
window_begin_time_relative 0.000000000000
|
||||||
|
window_open true
|
||||||
|
window_drawmode draw_maximum
|
||||||
|
window_drawmode_rows draw_maximum
|
||||||
|
window_pixel_size 1
|
||||||
|
window_labels_to_draw 1
|
||||||
|
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||||
|
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||||
|
window_filter_module evt_type 1 11
|
||||||
|
window_filter_module evt_type_label 1 "Unknown"
|
||||||
|
window_synchronize 1
|
||||||
|
|
8
emu.c
8
emu.c
@ -237,14 +237,6 @@ emu_get_thread(struct ovni_emu *emu, int tid)
|
|||||||
return thread;
|
return thread;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
emu_emit_prv(struct ovni_emu *emu, int type, int val)
|
|
||||||
{
|
|
||||||
printf("2:0:1:1:%d:%ld:%d:%d\n",
|
|
||||||
emu->cur_thread->cpu->cpu_id + 2,
|
|
||||||
emu->delta_time,
|
|
||||||
type, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
|
15
emu.h
15
emu.h
@ -33,6 +33,7 @@ enum nosv_task_state {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct ovni_ethread;
|
struct ovni_ethread;
|
||||||
|
struct ovni_eproc;
|
||||||
|
|
||||||
struct nosv_task {
|
struct nosv_task {
|
||||||
int id;
|
int id;
|
||||||
@ -53,6 +54,12 @@ struct ovni_ethread {
|
|||||||
/* Emulated thread tid */
|
/* Emulated thread tid */
|
||||||
pid_t tid;
|
pid_t tid;
|
||||||
|
|
||||||
|
int index;
|
||||||
|
int gindex;
|
||||||
|
|
||||||
|
/* The process associated with this thread */
|
||||||
|
struct ovni_eproc *proc;
|
||||||
|
|
||||||
/* Stream fd */
|
/* Stream fd */
|
||||||
int stream_fd;
|
int stream_fd;
|
||||||
|
|
||||||
@ -74,6 +81,8 @@ struct ovni_ethread {
|
|||||||
/* State of each emulated process */
|
/* State of each emulated process */
|
||||||
struct ovni_eproc {
|
struct ovni_eproc {
|
||||||
int pid;
|
int pid;
|
||||||
|
int index;
|
||||||
|
int gindex;
|
||||||
|
|
||||||
/* Path of the process tracedir */
|
/* Path of the process tracedir */
|
||||||
char dir[PATH_MAX];
|
char dir[PATH_MAX];
|
||||||
@ -140,7 +149,7 @@ struct ovni_cpu {
|
|||||||
int index;
|
int index;
|
||||||
|
|
||||||
enum ovni_cpu_state state;
|
enum ovni_cpu_state state;
|
||||||
enum ovni_cpu_type type;
|
//enum ovni_cpu_type type;
|
||||||
|
|
||||||
size_t last_nthreads;
|
size_t last_nthreads;
|
||||||
|
|
||||||
@ -171,6 +180,10 @@ struct ovni_emu {
|
|||||||
uint64_t lastclock;
|
uint64_t lastclock;
|
||||||
int64_t delta_time;
|
int64_t delta_time;
|
||||||
|
|
||||||
|
/* Total counters */
|
||||||
|
int total_thread;
|
||||||
|
int total_proc;
|
||||||
|
|
||||||
struct nosv_task *cur_task;
|
struct nosv_task *cur_task;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
57
emu_nosv.c
57
emu_nosv.c
@ -1,8 +1,10 @@
|
|||||||
|
#include <assert.h>
|
||||||
|
#include "uthash.h"
|
||||||
|
|
||||||
#include "ovni.h"
|
#include "ovni.h"
|
||||||
#include "ovni_trace.h"
|
#include "ovni_trace.h"
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "uthash.h"
|
#include "prv.h"
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
enum nosv_prv_type {
|
enum nosv_prv_type {
|
||||||
PRV_TYPE_PROCID
|
PRV_TYPE_PROCID
|
||||||
@ -235,50 +237,37 @@ hook_pre_nosv(struct ovni_emu *emu)
|
|||||||
/* --------------------------- emit ------------------------------- */
|
/* --------------------------- emit ------------------------------- */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
emit_task_create(struct ovni_emu *emu)
|
emit_task_running(struct ovni_emu *emu, struct nosv_task *task)
|
||||||
{
|
{
|
||||||
//emu_emit_prv(emu, 200, emu->cur_task->id);
|
prv_ev_autocpu(emu, PTC_TASK_ID, task->id + 1);
|
||||||
|
prv_ev_autocpu(emu, PTC_TASK_TYPE_ID, task->type_id + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
emit_task_execute(struct ovni_emu *emu)
|
emit_task_not_running(struct ovni_emu *emu, struct nosv_task *task)
|
||||||
{
|
{
|
||||||
emu_emit_prv(emu, 200, emu->cur_task->id + 1);
|
prv_ev_autocpu(emu, PTC_TASK_ID, 0);
|
||||||
emu_emit_prv(emu, 300, emu->cur_task->type_id + 1);
|
prv_ev_autocpu(emu, PTC_TASK_TYPE_ID, 0);
|
||||||
emu_emit_prv(emu, 300, emu->cur_task->type_id + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
emit_task_pause(struct ovni_emu *emu)
|
|
||||||
{
|
|
||||||
emu_emit_prv(emu, 200, 0);
|
|
||||||
emu_emit_prv(emu, 300, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
emit_task_resume(struct ovni_emu *emu)
|
|
||||||
{
|
|
||||||
emu_emit_prv(emu, 200, emu->cur_task->id + 1);
|
|
||||||
emu_emit_prv(emu, 300, emu->cur_task->type_id + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
emit_task_end(struct ovni_emu *emu)
|
|
||||||
{
|
|
||||||
emu_emit_prv(emu, 200, 0);
|
|
||||||
emu_emit_prv(emu, 300, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
emit_task(struct ovni_emu *emu)
|
emit_task(struct ovni_emu *emu)
|
||||||
{
|
{
|
||||||
|
struct nosv_task *task;
|
||||||
|
|
||||||
|
task = emu->cur_task;
|
||||||
|
|
||||||
switch(emu->cur_ev->header.value)
|
switch(emu->cur_ev->header.value)
|
||||||
{
|
{
|
||||||
case 'c': emit_task_create(emu); break;
|
case 'x':
|
||||||
case 'x': emit_task_execute(emu); break;
|
case 'r':
|
||||||
case 'p': emit_task_pause(emu); break;
|
emit_task_running(emu, task);
|
||||||
case 'r': emit_task_resume(emu); break;
|
break;
|
||||||
case 'e': emit_task_end(emu); break;
|
case 'p':
|
||||||
|
case 'e':
|
||||||
|
emit_task_not_running(emu, task);
|
||||||
|
break;
|
||||||
|
case 'c':
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
62
emu_ovni.c
62
emu_ovni.c
@ -1,5 +1,6 @@
|
|||||||
#include "ovni.h"
|
#include "ovni.h"
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
|
#include "prv.h"
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
@ -325,43 +326,60 @@ hook_pre_ovni(struct ovni_emu *emu)
|
|||||||
//print_threads_state(emu);
|
//print_threads_state(emu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
emit_thread_state(struct ovni_emu *emu)
|
||||||
|
{
|
||||||
|
int row, st, tid;
|
||||||
|
|
||||||
|
st = emu->cur_thread->state;
|
||||||
|
row = emu->cur_thread->gindex + 1;
|
||||||
|
tid = emu->cur_thread->tid;
|
||||||
|
|
||||||
|
prv_ev_row(emu, row, PTT_THREAD_STATE, st);
|
||||||
|
|
||||||
|
if(st == TH_ST_RUNNING)
|
||||||
|
prv_ev_row(emu, row, PTT_THREAD_TID, tid);
|
||||||
|
else
|
||||||
|
prv_ev_row(emu, row, PTT_THREAD_TID, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
emit_thread_count(struct ovni_emu *emu)
|
emit_thread_count(struct ovni_emu *emu)
|
||||||
{
|
{
|
||||||
int i, n, cpu = -1;
|
int i, n, row, pid, tid;
|
||||||
int64_t delta_time;
|
|
||||||
static int64_t t0 = -1;
|
|
||||||
|
|
||||||
if(t0 < 0)
|
|
||||||
t0 = ovni_ev_get_clock(emu->cur_ev);
|
|
||||||
|
|
||||||
delta_time = ovni_ev_get_clock(emu->cur_ev) - t0;
|
|
||||||
|
|
||||||
/* Check every CPU looking for a change in nthreads */
|
/* Check every CPU looking for a change in nthreads */
|
||||||
for(i=0; i<emu->ncpus; i++)
|
for(i=0; i<emu->ncpus; i++)
|
||||||
{
|
{
|
||||||
if(emu->cpu[i].last_nthreads != emu->cpu[i].nthreads)
|
if(emu->cpu[i].last_nthreads != emu->cpu[i].nthreads)
|
||||||
{
|
{
|
||||||
cpu = i + 1;
|
/* Start at 1 */
|
||||||
|
row = i + 1;
|
||||||
n = emu->cpu[i].nthreads;
|
n = emu->cpu[i].nthreads;
|
||||||
goto emit;
|
prv_ev_row(emu, row, PTC_NTHREADS, n);
|
||||||
|
|
||||||
|
pid = n == 1 ? emu->cpu[i].thread[0]->proc->pid : 1;
|
||||||
|
prv_ev_row(emu, row, PTC_PROC_PID, pid);
|
||||||
|
|
||||||
|
tid = n == 1 ? emu->cpu[i].thread[0]->tid : 1;
|
||||||
|
prv_ev_row(emu, row, PTC_THREAD_TID, tid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Same with the virtual CPU */
|
/* Same with the virtual CPU */
|
||||||
if(emu->vcpu.last_nthreads != emu->vcpu.nthreads)
|
if(emu->vcpu.last_nthreads != emu->vcpu.nthreads)
|
||||||
{
|
{
|
||||||
cpu = 0;
|
/* Place the virtual CPU after the physical CPUs */
|
||||||
|
row = emu->ncpus + 1;
|
||||||
n = emu->vcpu.nthreads;
|
n = emu->vcpu.nthreads;
|
||||||
goto emit;
|
prv_ev_row(emu, row, PTC_NTHREADS, n);
|
||||||
|
|
||||||
|
pid = n == 1 ? emu->vcpu.thread[0]->proc->pid : 1;
|
||||||
|
prv_ev_row(emu, row, PTC_PROC_PID, pid);
|
||||||
|
|
||||||
|
tid = n == 1 ? emu->vcpu.thread[0]->tid : 1;
|
||||||
|
prv_ev_row(emu, row, PTC_THREAD_TID, tid);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
emit:
|
|
||||||
|
|
||||||
printf("2:0:1:1:%d:%ld:100:%d\n",
|
|
||||||
cpu+1, delta_time, n);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -370,7 +388,7 @@ emit_current_pid(struct ovni_emu *emu)
|
|||||||
if(emu->cur_thread->cpu == NULL)
|
if(emu->cur_thread->cpu == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
emu_emit_prv(emu, 400, emu->cur_proc->pid);
|
prv_ev_autocpu(emu, PTC_PROC_PID, emu->cur_proc->pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -379,10 +397,12 @@ hook_emit_ovni(struct ovni_emu *emu)
|
|||||||
switch(emu->cur_ev->header.class)
|
switch(emu->cur_ev->header.class)
|
||||||
{
|
{
|
||||||
case 'H':
|
case 'H':
|
||||||
|
emit_thread_state(emu);
|
||||||
|
/* falltrough */
|
||||||
case 'A':
|
case 'A':
|
||||||
case 'C':
|
case 'C':
|
||||||
emit_thread_count(emu);
|
emit_thread_count(emu);
|
||||||
emit_current_pid(emu);
|
//emit_current_pid(emu);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
28
ovni.c
28
ovni.c
@ -470,9 +470,15 @@ find_dir_prefix(struct dirent *dirent, const char *prefix, int *num)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
load_thread(struct ovni_ethread *thread, int tid, char *filepath)
|
load_thread(struct ovni_ethread *thread, struct ovni_eproc *proc, int index, int tid, char *filepath)
|
||||||
{
|
{
|
||||||
|
static int total_threads = 0;
|
||||||
|
|
||||||
thread->tid = tid;
|
thread->tid = tid;
|
||||||
|
thread->index = index;
|
||||||
|
thread->gindex = total_threads++;
|
||||||
|
thread->state = TH_ST_UNKNOWN;
|
||||||
|
thread->proc = proc;
|
||||||
thread->stream_fd = open(filepath, O_RDONLY);
|
thread->stream_fd = open(filepath, O_RDONLY);
|
||||||
|
|
||||||
if(thread->stream_fd == -1)
|
if(thread->stream_fd == -1)
|
||||||
@ -480,14 +486,14 @@ load_thread(struct ovni_ethread *thread, int tid, char *filepath)
|
|||||||
perror("open");
|
perror("open");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
thread->state = TH_ST_UNKNOWN;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
load_proc(struct ovni_eproc *proc, int pid, char *procdir)
|
load_proc(struct ovni_eproc *proc, int index, int pid, char *procdir)
|
||||||
{
|
{
|
||||||
|
static int total_procs = 0;
|
||||||
|
|
||||||
struct dirent *dirent;
|
struct dirent *dirent;
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
char path[PATH_MAX];
|
char path[PATH_MAX];
|
||||||
@ -495,6 +501,8 @@ load_proc(struct ovni_eproc *proc, int pid, char *procdir)
|
|||||||
int tid;
|
int tid;
|
||||||
|
|
||||||
proc->pid = pid;
|
proc->pid = pid;
|
||||||
|
proc->index = index;
|
||||||
|
proc->gindex = total_procs++;
|
||||||
|
|
||||||
if((dir = opendir(procdir)) == NULL)
|
if((dir = opendir(procdir)) == NULL)
|
||||||
{
|
{
|
||||||
@ -520,10 +528,12 @@ load_proc(struct ovni_eproc *proc, int pid, char *procdir)
|
|||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
thread = &proc->thread[proc->nthreads++];
|
thread = &proc->thread[proc->nthreads];
|
||||||
|
|
||||||
if(load_thread(thread, tid, path) != 0)
|
if(load_thread(thread, proc, proc->nthreads, tid, path) != 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
proc->nthreads++;
|
||||||
}
|
}
|
||||||
|
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
@ -566,10 +576,12 @@ load_loom(struct ovni_loom *loom, int loomid, char *loomdir)
|
|||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
proc = &loom->proc[loom->nprocs++];
|
proc = &loom->proc[loom->nprocs];
|
||||||
|
|
||||||
if(load_proc(proc, pid, path) != 0)
|
if(load_proc(proc, loom->nprocs, pid, path) != 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
loom->nprocs++;
|
||||||
}
|
}
|
||||||
|
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
|
4
ovni.h
4
ovni.h
@ -13,8 +13,8 @@
|
|||||||
#define OVNI_MAX_LOOM 4
|
#define OVNI_MAX_LOOM 4
|
||||||
#define OVNI_TRACEDIR "ovni"
|
#define OVNI_TRACEDIR "ovni"
|
||||||
|
|
||||||
/* Reserved buffer for event allocation */
|
/* Reserved buffer for event allocation per thread */
|
||||||
#define OVNI_MAX_EV_BUF (16 * 1024LL * 1024LL * 1024LL)
|
#define OVNI_MAX_EV_BUF (2 * 1024LL * 1024LL) /* 2 MiB */
|
||||||
|
|
||||||
/* ----------------------- common ------------------------ */
|
/* ----------------------- common ------------------------ */
|
||||||
|
|
||||||
|
32
prv.c
Normal file
32
prv.c
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
#include "ovni.h"
|
||||||
|
#include "emu.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
prv_ev_row(struct ovni_emu *emu, int row, int type, int val)
|
||||||
|
{
|
||||||
|
printf("2:0:1:1:%d:%ld:%d:%d\n",
|
||||||
|
row, emu->delta_time, type, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
prv_ev_autocpu(struct ovni_emu *emu, int type, int val)
|
||||||
|
{
|
||||||
|
int row;
|
||||||
|
struct ovni_cpu *cpu;
|
||||||
|
|
||||||
|
assert(emu->cur_thread);
|
||||||
|
|
||||||
|
cpu = emu->cur_thread->cpu;
|
||||||
|
|
||||||
|
assert(cpu);
|
||||||
|
assert(cpu->index >= 0);
|
||||||
|
assert(cpu->cpu_id >= 0);
|
||||||
|
|
||||||
|
/* Begin at 1 */
|
||||||
|
row = cpu->index + 1;
|
||||||
|
|
||||||
|
prv_ev_row(emu, row, type, val);
|
||||||
|
}
|
24
prv.h
Normal file
24
prv.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#ifndef OVNI_PRV_H
|
||||||
|
#define OVNI_PRV_H
|
||||||
|
|
||||||
|
/* All PRV event types */
|
||||||
|
enum prv_type {
|
||||||
|
/* Rows are CPUs */
|
||||||
|
PTC_PROC_PID = 10,
|
||||||
|
PTC_THREAD_TID = 11,
|
||||||
|
PTC_NTHREADS = 12,
|
||||||
|
PTC_TASK_ID = 20,
|
||||||
|
PTC_TASK_TYPE_ID = 21,
|
||||||
|
|
||||||
|
/* Rows are threads */
|
||||||
|
PTT_THREAD_STATE = 60,
|
||||||
|
PTT_THREAD_TID = 61,
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
prv_ev_autocpu(struct ovni_emu *emu, int type, int val);
|
||||||
|
|
||||||
|
void
|
||||||
|
prv_ev_row(struct ovni_emu *emu, int row, int type, int val);
|
||||||
|
|
||||||
|
#endif /* OVNI_PRV_H */
|
Loading…
Reference in New Issue
Block a user