From d587fe37052fa03c44a262e82fe95658971eb4c2 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Tue, 7 Feb 2023 10:25:20 +0000 Subject: Use steady_time for statusmetricconsumer. --- .../vespa/storage/common/statusmetricconsumer.cpp | 36 +++++++--------------- .../vespa/storage/common/statusmetricconsumer.h | 16 ++-------- 2 files changed, 13 insertions(+), 39 deletions(-) (limited to 'storage/src') diff --git a/storage/src/vespa/storage/common/statusmetricconsumer.cpp b/storage/src/vespa/storage/common/statusmetricconsumer.cpp index 9ffb044b0a5..e9360c35f3c 100644 --- a/storage/src/vespa/storage/common/statusmetricconsumer.cpp +++ b/storage/src/vespa/storage/common/statusmetricconsumer.cpp @@ -15,32 +15,20 @@ LOG_SETUP(".status.metricreporter"); namespace storage { -StatusMetricConsumer::StatusMetricConsumer( - StorageComponentRegister& compReg, metrics::MetricManager& manager, - const std::string& name) +StatusMetricConsumer::StatusMetricConsumer(StorageComponentRegister& compReg, metrics::MetricManager& manager, const std::string& name) : framework::StatusReporter("metrics", "Performance metrics"), _manager(manager), _component(compReg, "statusmetricsconsumer"), _name(name), - _lock(), - _startTime(_component.getClock().getTimeInSeconds()), - _processedTime(0) + _lock() { LOG(debug, "Started metrics consumer"); setlocale(LC_NUMERIC, ""); - _component.registerMetricUpdateHook(*this, 3600s); _component.registerStatusPage(*this); } StatusMetricConsumer::~StatusMetricConsumer() = default; -void -StatusMetricConsumer::updateMetrics(const MetricLockGuard & guard) -{ - metrics::MemoryConsumption::UP mc(_manager.getMemoryConsumption(guard)); - // TODO is this hook needed anymore? -} - vespalib::string StatusMetricConsumer::getReportContentType(const framework::HttpUrlPath& path) const { @@ -77,7 +65,7 @@ StatusMetricConsumer::reportStatus(std::ostream& out, } else { LOG(debug, "Not calling update hooks as dontcallupdatehooks option has been given"); } - framework::SecondTime currentTime(_component.getClock().getTimeInSeconds()); + int64_t currentTimeS(vespalib::count_s(_component.getClock().getMonotonicTime().time_since_epoch())); bool xml = (path.getAttribute("format") == "xml"); bool json = (path.getAttribute("format") == "json"); @@ -89,7 +77,7 @@ StatusMetricConsumer::reportStatus(std::ostream& out, if (path.hasAttribute("task") && path.getAttribute("task") == "reset") { std::lock_guard guard(_lock); - _manager.reset(currentTime.getTime()); + _manager.reset(currentTimeS); } if (path.hasAttribute("interval")) { @@ -100,7 +88,7 @@ StatusMetricConsumer::reportStatus(std::ostream& out, const metrics::MetricSnapshot* snapshot; if (interval == -2) { snapshot = &_manager.getActiveMetrics(metricLock); - _manager.getActiveMetrics(metricLock).setToTime(currentTime.getTime()); + _manager.getActiveMetrics(metricLock).setToTime(currentTimeS); } else if (interval == -1) { // "Prime" the metric structure by first fetching the set of active // metrics (complete with structure) and resetting these. This @@ -112,19 +100,17 @@ StatusMetricConsumer::reportStatus(std::ostream& out, _manager.getActiveMetrics(metricLock).getMetrics(), copyUnset); generated->reset(0); - _manager.getTotalMetricSnapshot(metricLock).addToSnapshot(*generated, currentTime.getTime()); - _manager.getActiveMetrics(metricLock).addToSnapshot(*generated, currentTime.getTime()); + _manager.getTotalMetricSnapshot(metricLock).addToSnapshot(*generated, currentTimeS); + _manager.getActiveMetrics(metricLock).addToSnapshot(*generated, currentTimeS); generated->setFromTime(_manager.getTotalMetricSnapshot(metricLock).getFromTime()); snapshot = generated.get(); } else if (interval == 0) { if (copyUnset) { generated = std::make_unique( - _manager.getTotalMetricSnapshot(metricLock).getName(), - 0, - _manager.getActiveMetrics(metricLock).getMetrics(), - true); + _manager.getTotalMetricSnapshot(metricLock).getName(), 0, + _manager.getActiveMetrics(metricLock).getMetrics(), true); generated->reset(0); - _manager.getTotalMetricSnapshot(metricLock).addToSnapshot(*generated, currentTime.getTime()); + _manager.getTotalMetricSnapshot(metricLock).addToSnapshot(*generated, currentTimeS); snapshot = generated.get(); } else { snapshot = &_manager.getTotalMetricSnapshot(metricLock); @@ -136,7 +122,7 @@ StatusMetricConsumer::reportStatus(std::ostream& out, _manager.getActiveMetrics(metricLock).getMetrics(), true); generated->reset(0); _manager.getMetricSnapshot(metricLock, interval, temporarySnap) - .addToSnapshot(*generated, currentTime.getTime()); + .addToSnapshot(*generated, currentTimeS); snapshot = generated.get(); } else { snapshot = &_manager.getMetricSnapshot(metricLock, interval, temporarySnap); diff --git a/storage/src/vespa/storage/common/statusmetricconsumer.h b/storage/src/vespa/storage/common/statusmetricconsumer.h index 337c3ea7ff0..b25c2d5db48 100644 --- a/storage/src/vespa/storage/common/statusmetricconsumer.h +++ b/storage/src/vespa/storage/common/statusmetricconsumer.h @@ -11,27 +11,18 @@ #include "storagecomponent.h" #include -#include -#include -#include -#include +#include namespace vespalib { class StringTokenizer; } namespace metrics { class MetricManager; } namespace storage { -namespace framework { class MemoryToken; } - class StatusMetricConsumer : public framework::StatusReporter, - private framework::MetricUpdateHook, private vespalib::JsonStreamTypes { public: - StatusMetricConsumer( - StorageComponentRegister&, - metrics::MetricManager&, - const std::string& name = "status"); + StatusMetricConsumer(StorageComponentRegister&, metrics::MetricManager&, const std::string& name = "status"); ~StatusMetricConsumer() override; // Metric reporting requires the "vespa.content.metrics_api" capability @@ -40,14 +31,11 @@ public: } vespalib::string getReportContentType(const framework::HttpUrlPath&) const override; bool reportStatus(std::ostream& out, const framework::HttpUrlPath&) const override; - void updateMetrics(const MetricLockGuard & guard) override; private: metrics::MetricManager& _manager; StorageComponent _component; std::string _name; mutable std::mutex _lock; - framework::SecondTime _startTime; - framework::SecondTime _processedTime; }; } // storage -- cgit v1.2.3