Whamcloud - gitweb
- add more stats in mdd
authortappro <tappro>
Fri, 10 Nov 2006 09:52:42 +0000 (09:52 +0000)
committertappro <tappro>
Fri, 10 Nov 2006 09:52:42 +0000 (09:52 +0000)
lustre/cmm/cmm_object.c
lustre/mdd/mdd_internal.h
lustre/mdd/mdd_lproc.c
lustre/mdd/mdd_object.c
lustre/mdd/mdd_trans.c

index 4d999d6..22fa8c0 100644 (file)
@@ -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;
index fa97b18..cfcaf24 100644 (file)
@@ -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
 };
 
index c01ce02..074fefc 100644 (file)
@@ -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);
index 46f50fc..ad94a3b 100644 (file)
@@ -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;
 }
 
index a433460..30feddb 100644 (file)
@@ -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);
 }