From: Dhairya Parmar Date: Thu, 2 Mar 2023 13:07:14 +0000 (+0530) Subject: mds,messages: enable beacon to report clients lagginess X-Git-Tag: v18.2.4~418^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3a2b86236544d4cb9d44e8931c20cd939406e200;p=ceph.git mds,messages: enable beacon to report clients lagginess using new MDS health metric Fixes: https://tracker.ceph.com/issues/58023 Signed-off-by: Dhairya Parmar (cherry picked from commit 5a0e8a7e703495e958ae7aac79bd9a40d86b19d0) --- diff --git a/src/mds/Beacon.cc b/src/mds/Beacon.cc index 35f0f79427d6..4c232707ce32 100644 --- a/src/mds/Beacon.cc +++ b/src/mds/Beacon.cc @@ -495,6 +495,24 @@ void Beacon::notify_health(MDSRank const *mds) MDSHealthMetric m(MDS_HEALTH_CACHE_OVERSIZED, HEALTH_WARN, css->strv()); health.metrics.push_back(m); } + + // Report laggy client(s) due to laggy OSDs + { + auto&& laggy_clients = mds->server->get_laggy_clients(); + if (!laggy_clients.empty()) { + std::vector laggy_clients_metrics; + for (const auto& laggy_client: laggy_clients) { + CachedStackStringStream css; + *css << "Client " << laggy_client << " is laggy; not evicted" + << " because some OSD(s) is/are laggy"; + MDSHealthMetric m(MDS_HEALTH_CLIENTS_LAGGY, HEALTH_WARN, css->strv()); + laggy_clients_metrics.emplace_back(std::move(m)); + } + auto&& m = laggy_clients_metrics; + health.metrics.insert(std::end(health.metrics), std::cbegin(m), + std::cend(m)); + } + } } MDSMap::DaemonState Beacon::get_want_state() const diff --git a/src/messages/MMDSBeacon.h b/src/messages/MMDSBeacon.h index f2fa150bee31..d843b0e76610 100644 --- a/src/messages/MMDSBeacon.h +++ b/src/messages/MMDSBeacon.h @@ -45,6 +45,7 @@ enum mds_metric_t { MDS_HEALTH_SLOW_REQUEST, MDS_HEALTH_CACHE_OVERSIZED, MDS_HEALTH_SLOW_METADATA_IO, + MDS_HEALTH_CLIENTS_LAGGY, MDS_HEALTH_DUMMY, // not a real health warning, for testing }; @@ -63,6 +64,7 @@ inline const char *mds_metric_name(mds_metric_t m) case MDS_HEALTH_SLOW_REQUEST: return "MDS_SLOW_REQUEST"; case MDS_HEALTH_CACHE_OVERSIZED: return "MDS_CACHE_OVERSIZED"; case MDS_HEALTH_SLOW_METADATA_IO: return "MDS_SLOW_METADATA_IO"; + case MDS_HEALTH_CLIENTS_LAGGY: return "MDS_CLIENTS_LAGGY"; case MDS_HEALTH_DUMMY: return "MDS_DUMMY"; default: return "???"; @@ -97,6 +99,8 @@ inline const char *mds_metric_summary(mds_metric_t m) return "%num% MDSs report oversized cache"; case MDS_HEALTH_SLOW_METADATA_IO: return "%num% MDSs report slow metadata IOs"; + case MDS_HEALTH_CLIENTS_LAGGY: + return "%num% client(s) laggy due to laggy OSDs"; default: return "???"; }