[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