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 | ||||
|   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 | ||||
| 
 | ||||
|  | ||||
| @ -24,6 +24,7 @@ enum emu_prv_types { | ||||
| 	PRV_NANOS6_SUBSYSTEM = 37, | ||||
| 	PRV_NANOS6_RANK      = 38, | ||||
| 	PRV_NANOS6_THREAD    = 39, | ||||
| 	PRV_NANOS6_IDLE      = 40, | ||||
| 	PRV_KERNEL_CS        = 45, | ||||
| 	PRV_RESERVED         = 100, | ||||
| }; | ||||
|  | ||||
| @ -36,6 +36,8 @@ static const int ss_table[256][256][3] = { | ||||
| 		['r'] = { CHSS, PUSH, ST_RESUME }, | ||||
| 		['R'] = { CHSS, POP,  ST_RESUME }, | ||||
| 		['*'] = { CHSS, IGN,  -1 }, | ||||
| 		['i'] = { CH_IDLE, PUSH, ST_WORKER_IDLE }, | ||||
| 		['I'] = { CH_IDLE, POP,  ST_WORKER_IDLE }, | ||||
| 	}, | ||||
| 	['P'] = { /* TODO: Ignore progress events for now */ | ||||
| 		['r'] = { CHSS, IGN,  -1 }, | ||||
|  | ||||
| @ -17,6 +17,7 @@ enum nanos6_chan { | ||||
| 	CH_SUBSYSTEM, | ||||
| 	CH_RANK, | ||||
| 	CH_THREAD, | ||||
| 	CH_IDLE, | ||||
| 	CH_MAX, | ||||
| }; | ||||
| 
 | ||||
| @ -60,6 +61,10 @@ enum nanos6_thread_type { | ||||
| 	ST_TH_EXTERNAL = 4, | ||||
| }; | ||||
| 
 | ||||
| enum nanos6_worker_idle { | ||||
| 	ST_WORKER_IDLE = 1, | ||||
| }; | ||||
| 
 | ||||
| struct nanos6_thread { | ||||
| 	struct model_thread m; | ||||
| 	struct task_stack task_stack; | ||||
|  | ||||
| @ -47,11 +47,13 @@ static const char *chan_name[CH_MAX] = { | ||||
| 	[CH_SUBSYSTEM] = "subsystem", | ||||
| 	[CH_RANK]      = "rank", | ||||
| 	[CH_THREAD]    = "thread_type", | ||||
| 	[CH_IDLE]      = "idle", | ||||
| }; | ||||
| 
 | ||||
| static const int chan_stack[CH_MAX] = { | ||||
| 	[CH_SUBSYSTEM] = 1, | ||||
| 	[CH_THREAD] = 1, | ||||
| 	[CH_IDLE] = 1, | ||||
| }; | ||||
| 
 | ||||
| static const int chan_dup[CH_MAX] = { | ||||
| @ -68,6 +70,7 @@ static const int pvt_type[] = { | ||||
| 	[CH_SUBSYSTEM] = PRV_NANOS6_SUBSYSTEM, | ||||
| 	[CH_RANK]      = PRV_NANOS6_RANK, | ||||
| 	[CH_THREAD]    = PRV_NANOS6_THREAD, | ||||
| 	[CH_IDLE]      = PRV_NANOS6_IDLE, | ||||
| }; | ||||
| 
 | ||||
| static const char *pcf_prefix[CH_MAX] = { | ||||
| @ -76,6 +79,7 @@ static const char *pcf_prefix[CH_MAX] = { | ||||
| 	[CH_SUBSYSTEM] = "Nanos6 subsystem", | ||||
| 	[CH_RANK]      = "Nanos6 task MPI rank", | ||||
| 	[CH_THREAD]    = "Nanos6 thread type", | ||||
| 	[CH_IDLE]      = "Nanos6 idle state", | ||||
| }; | ||||
| 
 | ||||
| static const struct pcf_value_label nanos6_ss_values[] = { | ||||
| @ -119,9 +123,15 @@ static const struct pcf_value_label 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, | ||||
| static const struct pcf_value_label nanos6_worker_idle[] = { | ||||
| 	{ ST_WORKER_IDLE,   "Idle" }, | ||||
| 	{ -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] = { | ||||
| @ -130,6 +140,7 @@ static const long prv_flags[CH_MAX] = { | ||||
| 	[CH_SUBSYSTEM] = PRV_SKIPDUP, | ||||
| 	[CH_RANK]      = PRV_EMITDUP, /* Switch to task of same rank */ | ||||
| 	[CH_THREAD]    = PRV_SKIPDUP, | ||||
| 	[CH_IDLE]      = PRV_SKIPDUP, | ||||
| }; | ||||
| 
 | ||||
| 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_RANK]      = TRACK_TH_RUN, | ||||
| 	[CH_THREAD]    = TRACK_TH_ANY, | ||||
| 	[CH_IDLE]      = TRACK_TH_ANY, | ||||
| }; | ||||
| 
 | ||||
| static const int cpu_track[CH_MAX] = { | ||||
| @ -155,6 +167,7 @@ static const int cpu_track[CH_MAX] = { | ||||
| 	[CH_SUBSYSTEM] = TRACK_TH_RUN, | ||||
| 	[CH_RANK]      = TRACK_TH_RUN, | ||||
| 	[CH_THREAD]    = TRACK_TH_RUN, | ||||
| 	[CH_IDLE]      = TRACK_TH_RUN, | ||||
| }; | ||||
| 
 | ||||
| /* ----------------- chan_spec ------------------ */ | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user