From: Xiubo Li Date: Tue, 22 Dec 2020 02:14:25 +0000 (+0800) Subject: mds: add scrub perf counters support X-Git-Tag: v16.1.0~102^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c87392ccb0a8d8c01d2c2e67891cbd0c5c191af1;p=ceph.git mds: add scrub perf counters support Signed-off-by: Xiubo Li --- diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index 3992224452b..9dd18943cc3 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -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(); } diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 2f903a19bab..11a07d68c4e 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -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); } diff --git a/src/mds/MDSRank.h b/src/mds/MDSRank.h index 8cbd41ae330..8d0027820f4 100644 --- a/src/mds/MDSRank.h +++ b/src/mds/MDSRank.h @@ -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,