[PVFS2-CVS] commit by neill in pvfs2/src/io/trove/trove-dbpf: dbpf-dspace.c dbpf-keyval.c dbpf.h

CVS commit program cvs at parl.clemson.edu
Tue Feb 3 19:35:28 EST 2004


Update of /projects/cvsroot/pvfs2/src/io/trove/trove-dbpf
In directory acid:/tmp/cvs-serv16267/src/io/trove/trove-dbpf

Modified Files:
	dbpf-dspace.c dbpf-keyval.c dbpf.h 
Log Message:
- update perf interface to record the number of metadata read and
  metadata write operations completed in trove
- update pvfs2-perf-mon-example program to dump the metadata statistics
  in addition to the i/o statistics
- the metadata ops are tracked differently than the perf statistics in that
  we're not interested in computing bandwidth at a given timestep, but rather
  the total number of ops at a given timestamp.  so instead of resetting the
  number of ops with each recorded rollover, we use the highest recorded value.
  this allows a meaningful value to be returned in timesteps where no activity
  took place


Index: dbpf-dspace.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/io/trove/trove-dbpf/dbpf-dspace.c,v
diff -p -u -r1.84 -r1.85
--- dbpf-dspace.c	3 Feb 2004 20:12:14 -0000	1.84
+++ dbpf-dspace.c	4 Feb 2004 00:35:27 -0000	1.85
@@ -14,8 +14,8 @@
 #include <assert.h>
 
 #include "gossip.h"
+#include "pint-perf-counter.h"
 #include "pint-event.h"
-#include "trove.h"
 #include "trove-internal.h"
 #include "trove-ledger.h"
 #include "trove-handle-mgmt.h"
@@ -41,6 +41,43 @@ extern gen_mutex_t dbpf_op_queue_mutex;
 
 #define DBPF_FSTAT fstat
 
+static int64_t s_dbpf_metadata_writes = 0, s_dbpf_metadata_reads = 0;
+
+static inline void organize_post_op_statistics(
+    enum dbpf_op_type op_type, TROVE_op_id op_id)
+{
+    switch(op_type)
+    {
+        case KEYVAL_WRITE:
+        case KEYVAL_REMOVE_KEY:
+        case KEYVAL_WRITE_LIST:
+        case KEYVAL_FLUSH:
+        case DSPACE_CREATE:
+        case DSPACE_REMOVE:
+        case DSPACE_SETATTR:
+            UPDATE_PERF_METADATA_WRITE();
+            break;
+        case KEYVAL_READ:
+        case KEYVAL_READ_LIST:
+        case KEYVAL_VALIDATE:
+        case KEYVAL_ITERATE:
+        case KEYVAL_ITERATE_KEYS:
+        case DSPACE_ITERATE_HANDLES:
+        case DSPACE_VERIFY:
+        case DSPACE_GETATTR:
+            UPDATE_PERF_METADATA_READ();
+            break;
+        case BSTREAM_READ_LIST:
+            DBPF_EVENT_END(PVFS_EVENT_TROVE_READ_LIST, op_id); 
+            break;
+        case BSTREAM_WRITE_LIST:
+            DBPF_EVENT_END(PVFS_EVENT_TROVE_WRITE_LIST, op_id); 
+            break;
+        default:
+            break;
+    }
+}
+
 static int dbpf_dspace_iterate_handles_op_svc(struct dbpf_op *op_p);
 static int dbpf_dspace_create_op_svc(struct dbpf_op *op_p);
 static int dbpf_dspace_remove_op_svc(struct dbpf_op *op_p);
@@ -715,6 +752,7 @@ static int dbpf_dspace_getattr(TROVE_col
                      "(dfile_count=%d | dist_size=%d)\n", Lu(handle),
                      ds_attr_p->dfile_count, ds_attr_p->dist_size);
 #endif
+        UPDATE_PERF_METADATA_READ();
         return 1;
     }
 
@@ -1243,20 +1281,8 @@ static int dbpf_dspace_test(
 	    *returned_user_ptr_p = cur_op->op.user_ptr;
 	}
 
-	/* catch ops that we log */
-	switch(cur_op->op.type)
-	{
-	    case BSTREAM_READ_LIST:
-		DBPF_EVENT_END(PVFS_EVENT_TROVE_READ_LIST, cur_op->op.id); 
-	        break;
-	    case BSTREAM_WRITE_LIST:
-		DBPF_EVENT_END(PVFS_EVENT_TROVE_WRITE_LIST, cur_op->op.id); 
-		break;
-	    default:
-		break;
-	}
+        organize_post_op_statistics(cur_op->op.type, cur_op->op.id);
 	dbpf_queued_op_free(cur_op);
-
         return 1;
     }
 
@@ -1309,18 +1335,8 @@ static int dbpf_dspace_test(
         {
 	    *returned_user_ptr_p = cur_op->op.user_ptr;
 	}
-	/* catch ops that we log */
-	switch(cur_op->op.type)
-	{
-	    case BSTREAM_READ_LIST:
-		DBPF_EVENT_END(PVFS_EVENT_TROVE_READ_LIST, cur_op->op.id); 
-	        break;
-	    case BSTREAM_WRITE_LIST:
-		DBPF_EVENT_END(PVFS_EVENT_TROVE_WRITE_LIST, cur_op->op.id); 
-		break;
-	    default:
-		break;
-	}
+
+        organize_post_op_statistics(cur_op->op.type, cur_op->op.id);
 	dbpf_queued_op_put_and_dequeue(cur_op);
 	dbpf_queued_op_free(cur_op);
 	return 1;
@@ -1419,19 +1435,8 @@ int dbpf_dspace_testcontext(
         {
             *user_ptr_p = cur_op->op.user_ptr;
         }
-	/* catch ops that we log */
-	switch(cur_op->op.type)
-	{
-	    case BSTREAM_READ_LIST:
-		DBPF_EVENT_END(PVFS_EVENT_TROVE_READ_LIST, cur_op->op.id); 
-		break;
-	    case BSTREAM_WRITE_LIST:
-		DBPF_EVENT_END(PVFS_EVENT_TROVE_WRITE_LIST, cur_op->op.id); 
-		break;
-	    default:
-		break;
-	}
 
+        organize_post_op_statistics(cur_op->op.type, cur_op->op.id);
         dbpf_queued_op_free(cur_op);
 
 	out_count++;
@@ -1537,18 +1542,7 @@ static int dbpf_dspace_testsome(
             {
                 *returned_user_ptr_p = cur_op->op.user_ptr;
             }
-	    /* catch ops that we log */
-	    switch(cur_op->op.type)
-	    {
-		case BSTREAM_READ_LIST:
-		    DBPF_EVENT_END(PVFS_EVENT_TROVE_READ_LIST, cur_op->op.id); 
-		    break;
-		case BSTREAM_WRITE_LIST:
-		    DBPF_EVENT_END(PVFS_EVENT_TROVE_WRITE_LIST, cur_op->op.id); 
-		    break;
-		default:
-		    break;
-	    }
+            organize_post_op_statistics(cur_op->op.type, cur_op->op.id);
             dbpf_queued_op_free(cur_op);
         }
         ret = (((state == OP_COMPLETED) ||

Index: dbpf-keyval.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/io/trove/trove-dbpf/dbpf-keyval.c,v
diff -p -u -r1.29 -r1.30
--- dbpf-keyval.c	30 Jan 2004 20:12:13 -0000	1.29
+++ dbpf-keyval.c	4 Feb 2004 00:35:27 -0000	1.30
@@ -319,10 +319,7 @@ static int dbpf_keyval_write_op_svc(stru
     return error;
 }
 
-/* dbpf_keyval_remove()
- */
-static int dbpf_keyval_remove(
-			      TROVE_coll_id coll_id,
+static int dbpf_keyval_remove(TROVE_coll_id coll_id,
 			      TROVE_handle handle,
 			      TROVE_keyval_s *key_p,
 			      TROVE_ds_flags flags,
@@ -346,7 +343,7 @@ static int dbpf_keyval_remove(
         return -TROVE_ENOMEM;
     }
 
-    /* initialaze common members */
+    /* initialize common members */
     dbpf_queued_op_init(q_op_p,
 			KEYVAL_REMOVE_KEY,
 			handle,

Index: dbpf.h
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/io/trove/trove-dbpf/dbpf.h,v
diff -p -u -r1.33 -r1.34
--- dbpf.h	2 Feb 2004 22:50:25 -0000	1.33
+++ dbpf.h	4 Feb 2004 00:35:27 -0000	1.34
@@ -370,6 +370,19 @@ void dbpf_error_report(const char *errpf
 
 extern struct dbpf_storage *my_storage_p;
 
+extern int64_t s_dbpf_metadata_writes, s_dbpf_metadata_reads;
+#define UPDATE_PERF_METADATA_READ()                         \
+do {                                                        \
+    PINT_perf_count(PINT_PERF_METADATA_READ,                \
+                    ++s_dbpf_metadata_reads, PINT_PERF_SET);\
+} while(0)
+
+#define UPDATE_PERF_METADATA_WRITE()                         \
+do {                                                         \
+    PINT_perf_count(PINT_PERF_METADATA_WRITE,                \
+                    ++s_dbpf_metadata_writes, PINT_PERF_SET);\
+} while(0)
+
 #if defined(__cplusplus)
 }
 #endif



More information about the PVFS2-CVS mailing list