From: tappro Date: Fri, 10 Nov 2006 09:52:42 +0000 (+0000) Subject: - add more stats in mdd X-Git-Tag: v1_8_0_110~486^2~193 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=d840303e21ce25ebe6f351d4240871c462d281ca;p=fs%2Flustre-release.git - add more stats in mdd --- diff --git a/lustre/cmm/cmm_object.c b/lustre/cmm/cmm_object.c index 4d999d6..22fa8c0 100644 --- a/lustre/cmm/cmm_object.c +++ b/lustre/cmm/cmm_object.c @@ -155,7 +155,7 @@ static int cml_object_init(const struct lu_env *env, struct lu_object *lo) ENTRY; #ifdef HAVE_SPLIT_SUPPORT - if(cd->cmm_tgt_count == 0) + if (cd->cmm_tgt_count == 0) lu2cml_obj(lo)->clo_split = CMM_SPLIT_DENIED; else lu2cml_obj(lo)->clo_split = CMM_SPLIT_UNKNOWN; diff --git a/lustre/mdd/mdd_internal.h b/lustre/mdd/mdd_internal.h index fa97b18..cfcaf24 100644 --- a/lustre/mdd/mdd_internal.h +++ b/lustre/mdd/mdd_internal.h @@ -415,6 +415,7 @@ static inline struct lustre_capa *mdd_object_capa(const struct lu_env *env, enum { LPROC_MDD_OPEN = 0, LPROC_MDD_CREATE, + LPROC_MDD_CREATE_OBJ, LPROC_MDD_INDEX_INSERT, LPROC_MDD_INDEX_DELETE, LPROC_MDD_SET_MD, @@ -423,6 +424,10 @@ enum { LPROC_MDD_UNLINK_LOG, LPROC_MDD_LOV_CREATE, LPROC_MDD_LOOKUP, + LPROC_MDD_TRANS_START, + LPROC_MDD_TRANS_STOP, + LPROC_MDD_ATTR_GET, + LPROC_MDD_ATTR_SET, LPROC_MDD_LAST }; diff --git a/lustre/mdd/mdd_lproc.c b/lustre/mdd/mdd_lproc.c index c01ce02..074fefc 100644 --- a/lustre/mdd/mdd_lproc.c +++ b/lustre/mdd/mdd_lproc.c @@ -61,6 +61,8 @@ static int mdd_procfs_init_stats(struct mdd_device *mdd, int num_stats) LPROCFS_CNTR_AVGMINMAX, "open", "time"); lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_CREATE, LPROCFS_CNTR_AVGMINMAX, "create", "time"); + lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_CREATE_OBJ, + LPROCFS_CNTR_AVGMINMAX, "create_obj", "time"); lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_INDEX_INSERT, LPROCFS_CNTR_AVGMINMAX, "index_insert", "time"); lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_INDEX_DELETE, @@ -77,7 +79,15 @@ static int mdd_procfs_init_stats(struct mdd_device *mdd, int num_stats) LPROCFS_CNTR_AVGMINMAX, "get_md", "time"); lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_LOOKUP, LPROCFS_CNTR_AVGMINMAX, "lookup", "time"); - EXIT; + lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_TRANS_START, + LPROCFS_CNTR_AVGMINMAX, "trans_start", "time"); + lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_TRANS_STOP, + LPROCFS_CNTR_AVGMINMAX, "trans_stop", "time"); + lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_ATTR_GET, + LPROCFS_CNTR_AVGMINMAX, "attr_get", "time"); + lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_ATTR_SET, + LPROCFS_CNTR_AVGMINMAX, "attr_set", "time"); + EXIT; cleanup: if (rc) { lprocfs_free_stats(stats); diff --git a/lustre/mdd/mdd_object.c b/lustre/mdd/mdd_object.c index 46f50fc..ad94a3b 100644 --- a/lustre/mdd/mdd_object.c +++ b/lustre/mdd/mdd_object.c @@ -327,9 +327,12 @@ static int mdd_attr_get_internal(const struct lu_env *env, struct mdd_object *mdd_obj, struct md_attr *ma) { + struct mdd_device *mdd = mdo2mdd(&mdd_obj->mod_obj); + struct timeval start; int rc = 0; ENTRY; - + + mdd_lprocfs_time_start(mdd, &start, LPROC_MDD_ATTR_GET); if (ma->ma_need & MA_INODE) rc = mdd_iattr_get(env, mdd_obj, ma); @@ -350,6 +353,7 @@ static int mdd_attr_get_internal(const struct lu_env *env, #endif CDEBUG(D_INODE, "after getattr rc = %d, ma_valid = "LPX64"\n", rc, ma->ma_valid); + mdd_lprocfs_time_end(mdd, &start, LPROC_MDD_ATTR_GET); RETURN(rc); } @@ -436,7 +440,6 @@ static int mdd_xattr_list(const struct lu_env *env, struct md_object *obj, int rc; ENTRY; - LASSERT(lu_object_exists(&obj->mo_lu)); next = mdd_object_child(mdd_obj); @@ -452,11 +455,15 @@ int mdd_object_create_internal(const struct lu_env *env, struct mdd_object *obj, struct md_attr *ma, struct thandle *handle) { + struct mdd_device *mdd = mdo2mdd(&obj->mod_obj); struct dt_object *next; struct lu_attr *attr = &ma->ma_attr; + struct timeval start; int rc; ENTRY; + mdd_lprocfs_time_start(mdd, &start, LPROC_MDD_CREATE_OBJ); + if (!lu_object_exists(mdd2lu_obj(obj))) { next = mdd_object_child(obj); rc = next->do_ops->do_create(env, next, attr, handle); @@ -464,7 +471,7 @@ int mdd_object_create_internal(const struct lu_env *env, rc = -EEXIST; LASSERT(ergo(rc == 0, lu_object_exists(mdd2lu_obj(obj)))); - + mdd_lprocfs_time_end(mdd, &start, LPROC_MDD_CREATE_OBJ); RETURN(rc); } @@ -473,9 +480,12 @@ int mdd_attr_set_internal(const struct lu_env *env, struct mdd_object *o, const struct lu_attr *attr, struct thandle *handle, const int needacl) { + struct mdd_device *mdd = mdo2mdd(&o->mod_obj); struct dt_object *next; + struct timeval start; int rc; + mdd_lprocfs_time_start(mdd, &start, LPROC_MDD_ATTR_SET); LASSERT(lu_object_exists(mdd2lu_obj(o))); next = mdd_object_child(o); rc = next->do_ops->do_attr_set(env, next, attr, handle, @@ -484,6 +494,7 @@ int mdd_attr_set_internal(const struct lu_env *env, struct mdd_object *o, if (!rc && (attr->la_valid & LA_MODE) && needacl) rc = mdd_acl_chmod(env, o, attr->la_mode, handle); #endif + mdd_lprocfs_time_end(mdd, &start, LPROC_MDD_ATTR_SET); return rc; } diff --git a/lustre/mdd/mdd_trans.c b/lustre/mdd/mdd_trans.c index a433460..30feddb 100644 --- a/lustre/mdd/mdd_trans.c +++ b/lustre/mdd/mdd_trans.c @@ -191,13 +191,21 @@ struct thandle* mdd_trans_start(const struct lu_env *env, struct mdd_device *mdd) { struct txn_param *p = &mdd_env_info(env)->mti_param; + struct timeval start; + struct thandle *th; - return mdd_child_ops(mdd)->dt_trans_start(env, mdd->mdd_child, p); + mdd_lprocfs_time_start(mdd, &start, LPROC_MDD_TRANS_START); + th = mdd_child_ops(mdd)->dt_trans_start(env, mdd->mdd_child, p); + mdd_lprocfs_time_end(mdd, &start, LPROC_MDD_TRANS_START); + return th; } void mdd_trans_stop(const struct lu_env *env, struct mdd_device *mdd, int result, struct thandle *handle) { + struct timeval start; handle->th_result = result; + mdd_lprocfs_time_start(mdd, &start, LPROC_MDD_TRANS_STOP); mdd_child_ops(mdd)->dt_trans_stop(env, handle); + mdd_lprocfs_time_end(mdd, &start, LPROC_MDD_TRANS_STOP); }