Browse Source

Show disk path in bus stats

Samuel Thibault 8 years ago
parent
commit
6ed25eab11

+ 1 - 1
include/starpu_disk.h

@@ -27,7 +27,7 @@ struct starpu_disk_ops
 	 void *  (*plug)   (void *parameter, starpu_ssize_t size);
 	 void    (*unplug) (void *base);
 
-	 int    (*bandwidth)    (unsigned node);
+	 int    (*bandwidth)    (unsigned node, void *base);
 
 	 void *  (*alloc)  (void *base, size_t size);
 	 void    (*free)   (void *base, void *obj, size_t size);

+ 1 - 1
src/core/disk.c

@@ -125,7 +125,7 @@ int starpu_disk_register(struct starpu_disk_ops *func, void *parameter, starpu_s
 	_starpu_simgrid_memory_node_set_host(disk_memnode, host);
 #endif
 
-	int ret = func->bandwidth(disk_memnode);
+	int ret = func->bandwidth(disk_memnode, base);
 	/* have a problem with the disk */
 	if (ret == 0)
 		return -ENOENT;

+ 3 - 2
src/core/disk_ops/disk_hdf5.c

@@ -725,13 +725,14 @@ static void starpu_hdf5_free_request(void * event)
         free(event);
 }
 
-static int get_hdf5_bandwidth_between_disk_and_main_ram(unsigned node)
+static int get_hdf5_bandwidth_between_disk_and_main_ram(unsigned node, void *base)
 {
 	unsigned iter;
 	double timing_slowness, timing_latency;
 	double start;
 	double end;
 	char *buf;
+        struct starpu_hdf5_base * fileBase = (struct starpu_hdf5_base *) base;
 
 	srand(time(NULL));
 	starpu_malloc_flags((void **) &buf, STARPU_DISK_SIZE_MIN, 0);
@@ -776,7 +777,7 @@ static int get_hdf5_bandwidth_between_disk_and_main_ram(unsigned node)
 	starpu_free_flags(buf, sizeof(char), 0);
 
 	_starpu_save_bandwidth_and_latency_disk((NITER/timing_slowness)*STARPU_DISK_SIZE_MIN, (NITER/timing_slowness)*STARPU_DISK_SIZE_MIN,
-					       timing_latency/NITER, timing_latency/NITER, node);
+			timing_latency/NITER, timing_latency/NITER, node, fileBase->path);
 	return 1;
 }
 

+ 6 - 2
src/core/disk_ops/disk_leveldb.cpp

@@ -41,6 +41,7 @@ struct starpu_leveldb_obj
 
 struct starpu_leveldb_base
 {
+	char *path;
 	leveldb::DB* db;
 	/* if StarPU creates the leveldb */
 	bool created;
@@ -249,6 +250,7 @@ static void *starpu_leveldb_plug(void *parameter, starpu_ssize_t size STARPU_ATT
 	}
 
 	tmp->db = db;
+	tmp->path = strdup(parameter);
 	STARPU_ASSERT(status.ok());
 	return (void *) tmp;
 }
@@ -259,15 +261,17 @@ static void starpu_leveldb_unplug(void *base)
 	struct starpu_leveldb_base *base_tmp = (struct starpu_leveldb_base *) base;
 	if(base_tmp->created)
 		delete base_tmp->db;
+	free(base->path);
 	free(base);
 }
 
-static int get_leveldb_bandwidth_between_disk_and_main_ram(unsigned node)
+static int get_leveldb_bandwidth_between_disk_and_main_ram(unsigned node, void *base)
 {
 	unsigned iter;
 	double timing_slowness, timing_latency;
 	double start;
 	double end;
+        struct starpu_leveldb_base *base_tmp = (struct starpu_leveldb_base *) base;
 
 	srand(time (NULL));
 	char *buf = (char *)malloc(STARPU_DISK_SIZE_MIN*sizeof(char));
@@ -311,7 +315,7 @@ static int get_leveldb_bandwidth_between_disk_and_main_ram(unsigned node)
 	free(buf);
 
 	_starpu_save_bandwidth_and_latency_disk((NITER/timing_slowness)*STARPU_DISK_SIZE_MIN, (NITER/timing_slowness)*STARPU_DISK_SIZE_MIN,
-					       timing_latency/NITER, timing_latency/NITER, node);
+			timing_latency/NITER, timing_latency/NITER, node, base_tmp->path);
 	return 1;
 }
 

+ 3 - 2
src/core/disk_ops/disk_stdio.c

@@ -352,13 +352,14 @@ static void starpu_stdio_unplug(void *base)
 	free(fileBase);
 }
 
-static int get_stdio_bandwidth_between_disk_and_main_ram(unsigned node)
+static int get_stdio_bandwidth_between_disk_and_main_ram(unsigned node, void *base)
 {
 	unsigned iter;
 	double timing_slowness, timing_latency;
 	double start;
 	double end;
 	char *buf;
+	struct starpu_stdio_base * fileBase = (struct starpu_stdio_base *) base;
 
 	srand(time(NULL));
 	starpu_malloc_flags((void **) &buf, STARPU_DISK_SIZE_MIN, 0);
@@ -440,7 +441,7 @@ static int get_stdio_bandwidth_between_disk_and_main_ram(unsigned node)
 	starpu_free_flags(buf, sizeof(char), 0);
 
 	_starpu_save_bandwidth_and_latency_disk((NITER/timing_slowness)*STARPU_DISK_SIZE_MIN, (NITER/timing_slowness)*STARPU_DISK_SIZE_MIN,
-					       timing_latency/NITER, timing_latency/NITER, node);
+			timing_latency/NITER, timing_latency/NITER, node, fileBase->path);
 	return 1;
 }
 

+ 3 - 2
src/core/disk_ops/unistd/disk_unistd_global.c

@@ -509,13 +509,14 @@ void starpu_unistd_global_unplug(void *base)
 	free(fileBase);
 }
 
-int get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node)
+int get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node, void *base)
 {
 	int res;
 	unsigned iter;
 	double timing_slowness, timing_latency;
 	double start;
 	double end;
+	struct starpu_unistd_base * fileBase = (struct starpu_unistd_base *) base;
 
 	srand(time(NULL));
 	char *buf;
@@ -589,7 +590,7 @@ int get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node)
 	starpu_free_flags(buf, MEM_SIZE, 0);
 
 	_starpu_save_bandwidth_and_latency_disk((NITER/timing_slowness)*STARPU_DISK_SIZE_MIN, (NITER/timing_slowness)*STARPU_DISK_SIZE_MIN,
-					       timing_latency/NITER, timing_latency/NITER, node);
+			timing_latency/NITER, timing_latency/NITER, node, fileBase->path);
 	return 1;
 }
 

+ 1 - 1
src/core/disk_ops/unistd/disk_unistd_global.h

@@ -40,7 +40,7 @@ int starpu_unistd_global_read (void *base, void *obj, void *buf, off_t offset, s
 int starpu_unistd_global_write (void *base, void *obj, const void *buf, off_t offset, size_t size);
 void * starpu_unistd_global_plug (void *parameter, starpu_ssize_t size);
 void starpu_unistd_global_unplug (void *base);
-int get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node);
+int get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node, void *base);
 void* starpu_unistd_global_async_read (void *base, void *obj, void *buf, off_t offset, size_t size);
 void* starpu_unistd_global_async_write (void *base, void *obj, void *buf, off_t offset, size_t size);
 void starpu_unistd_global_wait_request(void * async_channel);

+ 1 - 1
src/core/perfmodel/perfmodel.h

@@ -96,7 +96,7 @@ int *_starpu_get_opencl_affinity_vector(unsigned gpuid);
 #endif
 
 void _starpu_save_bandwidth_and_latency_disk(double bandwidth_write, double bandwidth_read,
-					    double latency_write, double latency_read, unsigned node);
+					     double latency_write, double latency_read, unsigned node, const char *name);
 
 void _starpu_write_double(FILE *f, char *format, double val);
 int _starpu_read_double(FILE *f, char *format, double *val);

+ 2 - 2
src/core/perfmodel/perfmodel_bus.c

@@ -2998,7 +2998,7 @@ double starpu_transfer_predict(unsigned src_node, unsigned dst_node, size_t size
 
 /* calculate save bandwidth and latency */
 /* bandwidth in MB/s - latency in µs */
-void _starpu_save_bandwidth_and_latency_disk(double bandwidth_write, double bandwidth_read, double latency_write, double latency_read, unsigned node)
+void _starpu_save_bandwidth_and_latency_disk(double bandwidth_write, double bandwidth_read, double latency_write, double latency_read, unsigned node, const char *name)
 {
 	unsigned int i, j;
 	double slowness_disk_between_main_ram, slowness_main_ram_between_node;
@@ -3007,7 +3007,7 @@ void _starpu_save_bandwidth_and_latency_disk(double bandwidth_write, double band
 	if (print_stats)
 	{
 		fprintf(stderr, "\n#---------------------\n");
-		fprintf(stderr, "Data transfer speed for %u:\n", node);
+		fprintf(stderr, "Data transfer speed for %s (node %d):\n", name, node);
 	}
 
 	/* save bandwith */