Przeglądaj źródła

port r11533 from 1.1: Also explicitly show in traces the writing back time during reclaiming

Samuel Thibault 11 lat temu
rodzic
commit
098414fc11

+ 11 - 0
src/common/fxt.h

@@ -143,6 +143,9 @@
 #define	_STARPU_FUT_START_FREE		0x5156
 #define	_STARPU_FUT_END_FREE		0x5157
 
+#define	_STARPU_FUT_START_WRITEBACK	0x5158
+#define	_STARPU_FUT_END_WRITEBACK	0x5159
+
 #ifdef STARPU_USE_FXT
 #include <fxt/fxt.h>
 #include <fxt/fut.h>
@@ -403,6 +406,12 @@ do {										\
 #define _STARPU_TRACE_END_FREE(memnode)		\
 	FUT_DO_PROBE2(_STARPU_FUT_END_FREE, memnode, _starpu_gettid());
 
+#define _STARPU_TRACE_START_WRITEBACK(memnode)		\
+	FUT_DO_PROBE2(_STARPU_FUT_START_WRITEBACK, memnode, _starpu_gettid());
+	
+#define _STARPU_TRACE_END_WRITEBACK(memnode)		\
+	FUT_DO_PROBE2(_STARPU_FUT_END_WRITEBACK, memnode, _starpu_gettid());
+
 #define _STARPU_TRACE_START_MEMRECLAIM(memnode,is_prefetch)		\
 	FUT_DO_PROBE3(_STARPU_FUT_START_MEMRECLAIM, memnode, is_prefetch, _starpu_gettid());
 	
@@ -623,6 +632,8 @@ do {										\
 #define _STARPU_TRACE_END_ALLOC_REUSE(a)		do {} while(0)
 #define _STARPU_TRACE_START_FREE(memnode, size)	do {} while(0)
 #define _STARPU_TRACE_END_FREE(memnode)		do {} while(0)
+#define _STARPU_TRACE_START_WRITEBACK(memnode)	do {} while(0)
+#define _STARPU_TRACE_END_WRITEBACK(memnode)		do {} while(0)
 #define _STARPU_TRACE_START_MEMRECLAIM(memnode,is_prefetch)	do {} while(0)
 #define _STARPU_TRACE_END_MEMRECLAIM(memnode,is_prefetch)	do {} while(0)
 #define _STARPU_TRACE_START_PROGRESS(memnode)	do {} while(0)

+ 4 - 0
src/datawizard/memalloc.c

@@ -383,7 +383,9 @@ static size_t try_to_free_mem_chunk(struct _starpu_mem_chunk *mc, unsigned node)
 				if (handle->per_node[node].state == STARPU_OWNER)
 					_starpu_memory_handle_stats_invalidated(handle, node);
 #endif
+				_STARPU_TRACE_START_WRITEBACK(node);
 				transfer_subtree_to_node(handle, node, target);
+				_STARPU_TRACE_END_WRITEBACK(node);
 #ifdef STARPU_MEMORY_STATS
 				_starpu_memory_handle_stats_loaded_owner(handle, target);
 #endif
@@ -455,7 +457,9 @@ static unsigned try_to_reuse_mem_chunk(struct _starpu_mem_chunk *mc, unsigned no
 
 			/* in case there was nobody using that buffer, throw it
 			 * away after writing it back to main memory */
+			_STARPU_TRACE_START_WRITEBACK(node);
 			transfer_subtree_to_node(old_data, node, 0);
+			_STARPU_TRACE_END_WRITEBACK(node);
 
 			/* now replace the previous data */
 			reuse_mem_chunk(node, replicate, mc, is_already_in_mc_list);

+ 18 - 0
src/debug/traces/starpu_fxt.c

@@ -1491,6 +1491,24 @@ void starpu_fxt_parse_new_file(char *filename_in, struct starpu_fxt_options *opt
 				}
 				break;
 
+			case _STARPU_FUT_START_WRITEBACK:
+				if (!options->no_bus)
+				{
+					handle_memnode_event(&ev, options, "W");
+				}
+				break;
+
+			case _STARPU_FUT_END_WRITEBACK:
+				if (!options->no_bus)
+				{
+					unsigned memnode = ev.param[0];
+					if (reclaiming[memnode])
+						handle_memnode_event(&ev, options, "R");
+					else
+						handle_memnode_event(&ev, options, "No");
+				}
+				break;
+
 			case _STARPU_FUT_START_MEMRECLAIM:
 				if (!options->no_bus)
 				{

+ 4 - 2
src/debug/traces/starpu_paje.c

@@ -148,7 +148,8 @@ void _starpu_fxt_write_paje_header(FILE *file)
 	poti_DefineEntityValue("A", "MS", "Allocating", ".4 .1 .0");
 	poti_DefineEntityValue("Ar", "MS", "AllocatingReuse", ".1 .1 .8");
 	poti_DefineEntityValue("F", "MS", "Freeing", ".6 .3 .0");
-	poti_DefineEntityValue("R", "MS", "Reclaiming", ".0 .1 .4");
+	poti_DefineEntityValue("W", "MS", "WritingBack", ".0 .0 .4");
+	poti_DefineEntityValue("R", "MS", "Reclaiming", ".0 .1 .6");
 	poti_DefineEntityValue("Co", "MS", "DriverCopy", ".3 .5 .1");
 	poti_DefineEntityValue("CoA", "MS", "DriverCopyAsync", ".1 .3 .1");
 	poti_DefineEntityValue("No", "MS", "Nothing", ".0 .0 .0");
@@ -258,7 +259,8 @@ void _starpu_fxt_write_paje_header(FILE *file)
 6       A       MS      Allocating         \".4 .1 .0\"		\n\
 6       Ar       MS      AllocatingReuse       \".1 .1 .8\"		\n\
 6       F       MS      Freeing         \".6 .3 .0\"		\n\
-6       R       MS      Reclaiming         \".0 .1 .4\"		\n\
+6       W       MS      WritingBack         \".0 .0 .4\"		\n\
+6       R       MS      Reclaiming         \".0 .1 .6\"		\n\
 6       Co       MS     DriverCopy         \".3 .5 .1\"		\n\
 6       CoA      MS     DriverCopyAsync         \".1 .3 .1\"		\n\
 6       No       MS     Nothing         \".0 .0 .0\"		\n\