]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: add scrub perf counters support 38683/head
authorXiubo Li <xiubli@redhat.com>
Tue, 22 Dec 2020 02:14:25 +0000 (10:14 +0800)
committerXiubo Li <xiubli@redhat.com>
Wed, 6 Jan 2021 23:53:39 +0000 (07:53 +0800)
Signed-off-by: Xiubo Li <xiubli@redhat.com>
src/mds/CInode.cc
src/mds/MDSRank.cc
src/mds/MDSRank.h

index 3992224452badf4dbeb4a489e20a0d2d5e66979a..9dd18943cc328f5b83cb280b2ae0419bf09075ac 100644 (file)
@@ -4619,8 +4619,10 @@ void CInode::validate_disk_state(CInode::validated_data *results,
       fetch.getxattr("parent", bt, bt_r);
       in->mdcache->mds->objecter->read(oid, object_locator_t(pool), fetch, CEPH_NOSNAP,
                                       NULL, 0, fin);
-      if (in->mdcache->mds->logger)
+      if (in->mdcache->mds->logger) {
         in->mdcache->mds->logger->inc(l_mds_openino_backtrace_fetch);
+        in->mdcache->mds->logger->inc(l_mds_scrub_backtrace_fetch);
+      }
 
       using ceph::encode;
       if (!is_internal) {
@@ -4632,6 +4634,8 @@ void CInode::validate_disk_state(CInode::validated_data *results,
         in->mdcache->mds->objecter->mutate(oid, object_locator_t(pool), scrub_tag, snapc,
                                           ceph::real_clock::now(),
                                           0, NULL);
+        if (in->mdcache->mds->logger)
+          in->mdcache->mds->logger->inc(l_mds_scrub_set_tag);
       }
     }
 
@@ -4732,6 +4736,8 @@ next:
                            false);
         // Flag that we repaired this BT so that it won't go into damagetable
         results->backtrace.repaired = true;
+        if (in->mdcache->mds->logger)
+          in->mdcache->mds->logger->inc(l_mds_scrub_backtrace_repaired);
       }
 
       // If the inode's number was free in the InoTable, fix that
@@ -4753,6 +4759,8 @@ next:
               clog->error() << "inode table repaired for inode: " << in->ino();
 
               inotable->save();
+              if (in->mdcache->mds->logger)
+                in->mdcache->mds->logger->inc(l_mds_scrub_inotable_repaired);
             } else {
               clog->error() << "Cannot repair inotable while other operations"
                 " are in progress";
@@ -4763,8 +4771,12 @@ next:
 
 
       if (in->is_dir()) {
+        if (in->mdcache->mds->logger)
+          in->mdcache->mds->logger->inc(l_mds_scrub_dir_inodes);
        return validate_directory_data();
       } else {
+        if (in->mdcache->mds->logger)
+          in->mdcache->mds->logger->inc(l_mds_scrub_file_inodes);
        // TODO: validate on-disk inode for normal files
        return true;
       }
@@ -4780,9 +4792,13 @@ next:
          in->mdcache->num_shadow_inodes++;
        }
         shadow_in->fetch(get_internal_callback(INODE));
+        if (in->mdcache->mds->logger)
+          in->mdcache->mds->logger->inc(l_mds_scrub_dir_base_inodes);
         return false;
       } else {
        // TODO: validate on-disk inode for non-base directories
+        if (in->mdcache->mds->logger)
+          in->mdcache->mds->logger->inc(l_mds_scrub_dirfrag_rstats);
        results->inode.passed = true;
        return check_dirfrag_rstats();
       }
index 2f903a19bab9f7d2e612d95ad25c31eaeff737d0..11a07d68c4e39c9b48075a73e2e0b9dd03c43d05 100644 (file)
@@ -3353,6 +3353,24 @@ void MDSRank::create_logger()
     mds_plb.add_u64_counter(l_mds_openino_peer_discover, "openino_peer_discover",
                             "OpenIno peer inode discovers");
 
+    // scrub stats
+    mds_plb.add_u64(l_mds_scrub_backtrace_fetch, "scrub_backtrace_fetch",
+                    "Scrub backtrace fetchings");
+    mds_plb.add_u64(l_mds_scrub_set_tag, "scrub_set_tag",
+                    "Scrub set tags");
+    mds_plb.add_u64(l_mds_scrub_backtrace_repaired, "scrub_backtrace_repaired",
+                    "Scrub backtraces repaired");
+    mds_plb.add_u64(l_mds_scrub_inotable_repaired, "scrub_inotable_repaired",
+                    "Scrub inotable repaired");
+    mds_plb.add_u64(l_mds_scrub_dir_inodes, "scrub_dir_inodes",
+                    "Scrub directory inodes");
+    mds_plb.add_u64(l_mds_scrub_dir_base_inodes, "scrub_dir_base_inodes",
+                    "Scrub directory base inodes");
+    mds_plb.add_u64(l_mds_scrub_dirfrag_rstats, "scrub_dirfrag_rstats",
+                    "Scrub dirfrags rstates");
+    mds_plb.add_u64(l_mds_scrub_file_inodes, "scrub_file_inodes",
+                    "Scrub file inodes");
+
     logger = mds_plb.create_perf_counters();
     g_ceph_context->get_perfcounters_collection()->add(logger);
   }
index 8cbd41ae330790517854fb7f31285ef6d2ff4221..8d0027820f4ce9eac7c439b8b94dd7f465456439 100644 (file)
@@ -84,6 +84,14 @@ enum {
   l_mds_root_rfiles,
   l_mds_root_rbytes,
   l_mds_root_rsnaps,
+  l_mds_scrub_backtrace_fetch,
+  l_mds_scrub_set_tag,
+  l_mds_scrub_backtrace_repaired,
+  l_mds_scrub_inotable_repaired,
+  l_mds_scrub_dir_inodes,
+  l_mds_scrub_dir_base_inodes,
+  l_mds_scrub_dirfrag_rstats,
+  l_mds_scrub_file_inodes,
   l_mdss_handle_inode_file_caps,
   l_mdss_ceph_cap_op_revoke,
   l_mdss_ceph_cap_op_grant,