Add Idle view in Nanos6
This commit is contained in:
parent
f848ddb37f
commit
a4ce0e2a1e
42
cfg/cpu/nanos6/idle.cfg
Normal file
42
cfg/cpu/nanos6/idle.cfg
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#ParaverCFG
|
||||||
|
ConfigFile.Version: 3.4
|
||||||
|
ConfigFile.NumWindows: 1
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
< NEW DISPLAYING WINDOW CPU: Nanos6 idle state of the RUNNING thread >
|
||||||
|
################################################################################
|
||||||
|
window_name CPU: Nanos6 idle state of the RUNNING thread
|
||||||
|
window_type single
|
||||||
|
window_id 1
|
||||||
|
window_position_x 0
|
||||||
|
window_position_y 0
|
||||||
|
window_width 600
|
||||||
|
window_height 150
|
||||||
|
window_comm_lines_enabled false
|
||||||
|
window_flags_enabled false
|
||||||
|
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 1000.0
|
||||||
|
window_minimum_y 1.0
|
||||||
|
window_compute_y_max true
|
||||||
|
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_randnotzero
|
||||||
|
window_drawmode_rows draw_randnotzero
|
||||||
|
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 40
|
||||||
|
window_filter_module evt_type_label 1 "CPU: Nanos6 idle state of the RUNNING thread"
|
||||||
|
|
42
cfg/thread/nanos6/idle.cfg
Normal file
42
cfg/thread/nanos6/idle.cfg
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#ParaverCFG
|
||||||
|
ConfigFile.Version: 3.4
|
||||||
|
ConfigFile.NumWindows: 1
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
< NEW DISPLAYING WINDOW Thread: Nanos6 idle state >
|
||||||
|
################################################################################
|
||||||
|
window_name Thread: Nanos6 idle state
|
||||||
|
window_type single
|
||||||
|
window_id 1
|
||||||
|
window_position_x 0
|
||||||
|
window_position_y 0
|
||||||
|
window_width 600
|
||||||
|
window_height 150
|
||||||
|
window_comm_lines_enabled false
|
||||||
|
window_flags_enabled false
|
||||||
|
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 1000.0
|
||||||
|
window_minimum_y 1.0
|
||||||
|
window_compute_y_max true
|
||||||
|
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_randnotzero
|
||||||
|
window_drawmode_rows draw_randnotzero
|
||||||
|
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 40
|
||||||
|
window_filter_module evt_type_label 1 "Thread: Nanos6 idle state"
|
||||||
|
|
@ -76,6 +76,13 @@ This view shows the type of each thread:
|
|||||||
- External: used for external threads that attach to Nanos6 (currently
|
- External: used for external threads that attach to Nanos6 (currently
|
||||||
there are not in use).
|
there are not in use).
|
||||||
|
|
||||||
|
## Idle view
|
||||||
|
|
||||||
|
This view shows the idle state of the worker thread. A worker becomes idle when
|
||||||
|
it has nothing to do. In particular, when attempting to get a task in the
|
||||||
|
DelegationLock, after the first iteration the worker is considered idle.
|
||||||
|
Similarly, when a worker serves tasks, all the time is not moving tasks from the
|
||||||
|
queues is considered idle too.
|
||||||
|
|
||||||
## Subsystem view
|
## Subsystem view
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ enum emu_prv_types {
|
|||||||
PRV_NANOS6_SUBSYSTEM = 37,
|
PRV_NANOS6_SUBSYSTEM = 37,
|
||||||
PRV_NANOS6_RANK = 38,
|
PRV_NANOS6_RANK = 38,
|
||||||
PRV_NANOS6_THREAD = 39,
|
PRV_NANOS6_THREAD = 39,
|
||||||
|
PRV_NANOS6_IDLE = 40,
|
||||||
PRV_KERNEL_CS = 45,
|
PRV_KERNEL_CS = 45,
|
||||||
PRV_RESERVED = 100,
|
PRV_RESERVED = 100,
|
||||||
};
|
};
|
||||||
|
@ -36,6 +36,8 @@ static const int ss_table[256][256][3] = {
|
|||||||
['r'] = { CHSS, PUSH, ST_RESUME },
|
['r'] = { CHSS, PUSH, ST_RESUME },
|
||||||
['R'] = { CHSS, POP, ST_RESUME },
|
['R'] = { CHSS, POP, ST_RESUME },
|
||||||
['*'] = { CHSS, IGN, -1 },
|
['*'] = { CHSS, IGN, -1 },
|
||||||
|
['i'] = { CH_IDLE, PUSH, ST_WORKER_IDLE },
|
||||||
|
['I'] = { CH_IDLE, POP, ST_WORKER_IDLE },
|
||||||
},
|
},
|
||||||
['P'] = { /* TODO: Ignore progress events for now */
|
['P'] = { /* TODO: Ignore progress events for now */
|
||||||
['r'] = { CHSS, IGN, -1 },
|
['r'] = { CHSS, IGN, -1 },
|
||||||
|
@ -17,6 +17,7 @@ enum nanos6_chan {
|
|||||||
CH_SUBSYSTEM,
|
CH_SUBSYSTEM,
|
||||||
CH_RANK,
|
CH_RANK,
|
||||||
CH_THREAD,
|
CH_THREAD,
|
||||||
|
CH_IDLE,
|
||||||
CH_MAX,
|
CH_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -60,6 +61,10 @@ enum nanos6_thread_type {
|
|||||||
ST_TH_EXTERNAL = 4,
|
ST_TH_EXTERNAL = 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum nanos6_worker_idle {
|
||||||
|
ST_WORKER_IDLE = 1,
|
||||||
|
};
|
||||||
|
|
||||||
struct nanos6_thread {
|
struct nanos6_thread {
|
||||||
struct model_thread m;
|
struct model_thread m;
|
||||||
struct task_stack task_stack;
|
struct task_stack task_stack;
|
||||||
|
@ -47,11 +47,13 @@ static const char *chan_name[CH_MAX] = {
|
|||||||
[CH_SUBSYSTEM] = "subsystem",
|
[CH_SUBSYSTEM] = "subsystem",
|
||||||
[CH_RANK] = "rank",
|
[CH_RANK] = "rank",
|
||||||
[CH_THREAD] = "thread_type",
|
[CH_THREAD] = "thread_type",
|
||||||
|
[CH_IDLE] = "idle",
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int chan_stack[CH_MAX] = {
|
static const int chan_stack[CH_MAX] = {
|
||||||
[CH_SUBSYSTEM] = 1,
|
[CH_SUBSYSTEM] = 1,
|
||||||
[CH_THREAD] = 1,
|
[CH_THREAD] = 1,
|
||||||
|
[CH_IDLE] = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int chan_dup[CH_MAX] = {
|
static const int chan_dup[CH_MAX] = {
|
||||||
@ -68,6 +70,7 @@ static const int pvt_type[] = {
|
|||||||
[CH_SUBSYSTEM] = PRV_NANOS6_SUBSYSTEM,
|
[CH_SUBSYSTEM] = PRV_NANOS6_SUBSYSTEM,
|
||||||
[CH_RANK] = PRV_NANOS6_RANK,
|
[CH_RANK] = PRV_NANOS6_RANK,
|
||||||
[CH_THREAD] = PRV_NANOS6_THREAD,
|
[CH_THREAD] = PRV_NANOS6_THREAD,
|
||||||
|
[CH_IDLE] = PRV_NANOS6_IDLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *pcf_prefix[CH_MAX] = {
|
static const char *pcf_prefix[CH_MAX] = {
|
||||||
@ -76,6 +79,7 @@ static const char *pcf_prefix[CH_MAX] = {
|
|||||||
[CH_SUBSYSTEM] = "Nanos6 subsystem",
|
[CH_SUBSYSTEM] = "Nanos6 subsystem",
|
||||||
[CH_RANK] = "Nanos6 task MPI rank",
|
[CH_RANK] = "Nanos6 task MPI rank",
|
||||||
[CH_THREAD] = "Nanos6 thread type",
|
[CH_THREAD] = "Nanos6 thread type",
|
||||||
|
[CH_IDLE] = "Nanos6 idle state",
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct pcf_value_label nanos6_ss_values[] = {
|
static const struct pcf_value_label nanos6_ss_values[] = {
|
||||||
@ -119,9 +123,15 @@ static const struct pcf_value_label nanos6_thread_type[] = {
|
|||||||
{ -1, NULL },
|
{ -1, NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct pcf_value_label *pcf_labels[CH_MAX] = {
|
static const struct pcf_value_label nanos6_worker_idle[] = {
|
||||||
[CH_SUBSYSTEM] = nanos6_ss_values,
|
{ ST_WORKER_IDLE, "Idle" },
|
||||||
[CH_THREAD] = nanos6_thread_type,
|
{ -1, NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct pcf_value_label (*pcf_labels[CH_MAX])[] = {
|
||||||
|
[CH_SUBSYSTEM] = &nanos6_ss_values,
|
||||||
|
[CH_THREAD] = &nanos6_thread_type,
|
||||||
|
[CH_IDLE] = &nanos6_worker_idle,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const long prv_flags[CH_MAX] = {
|
static const long prv_flags[CH_MAX] = {
|
||||||
@ -130,6 +140,7 @@ static const long prv_flags[CH_MAX] = {
|
|||||||
[CH_SUBSYSTEM] = PRV_SKIPDUP,
|
[CH_SUBSYSTEM] = PRV_SKIPDUP,
|
||||||
[CH_RANK] = PRV_EMITDUP, /* Switch to task of same rank */
|
[CH_RANK] = PRV_EMITDUP, /* Switch to task of same rank */
|
||||||
[CH_THREAD] = PRV_SKIPDUP,
|
[CH_THREAD] = PRV_SKIPDUP,
|
||||||
|
[CH_IDLE] = PRV_SKIPDUP,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct model_pvt_spec pvt_spec = {
|
static const struct model_pvt_spec pvt_spec = {
|
||||||
@ -147,6 +158,7 @@ static const int th_track[CH_MAX] = {
|
|||||||
[CH_SUBSYSTEM] = TRACK_TH_ACT,
|
[CH_SUBSYSTEM] = TRACK_TH_ACT,
|
||||||
[CH_RANK] = TRACK_TH_RUN,
|
[CH_RANK] = TRACK_TH_RUN,
|
||||||
[CH_THREAD] = TRACK_TH_ANY,
|
[CH_THREAD] = TRACK_TH_ANY,
|
||||||
|
[CH_IDLE] = TRACK_TH_ANY,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int cpu_track[CH_MAX] = {
|
static const int cpu_track[CH_MAX] = {
|
||||||
@ -155,6 +167,7 @@ static const int cpu_track[CH_MAX] = {
|
|||||||
[CH_SUBSYSTEM] = TRACK_TH_RUN,
|
[CH_SUBSYSTEM] = TRACK_TH_RUN,
|
||||||
[CH_RANK] = TRACK_TH_RUN,
|
[CH_RANK] = TRACK_TH_RUN,
|
||||||
[CH_THREAD] = TRACK_TH_RUN,
|
[CH_THREAD] = TRACK_TH_RUN,
|
||||||
|
[CH_IDLE] = TRACK_TH_RUN,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* ----------------- chan_spec ------------------ */
|
/* ----------------- chan_spec ------------------ */
|
||||||
|
Loading…
Reference in New Issue
Block a user