From 5452e25942bc1601bf6a05937aafdc3a9b681ab6 Mon Sep 17 00:00:00 2001 From: Dhairya Parmar Date: Thu, 2 Mar 2023 18:37:14 +0530 Subject: [PATCH] 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) --- src/mds/Beacon.cc | 18 ++++++++++++++++++ src/messages/MMDSBeacon.h | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/src/mds/Beacon.cc b/src/mds/Beacon.cc index 36ed489a31509..76e71f2fe6e55 100644 --- a/src/mds/Beacon.cc +++ b/src/mds/Beacon.cc @@ -478,6 +478,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 bd46926e485a1..1a60a129c1b17 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 "???"; } -- 2.39.5