summaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-02-07 12:04:42 +0100
committerGitHub <noreply@github.com>2023-02-07 12:04:42 +0100
commit18a5576a8e1b295f9bdbec55270ebdcb7e0ca05e (patch)
tree2715a05d27c2c2df3df312c9bef1191ac48166fd /storage
parent1999e26b9d31f24dc08b6ed675d2f0cc15ca846b (diff)
parentd587fe37052fa03c44a262e82fe95658971eb4c2 (diff)
Merge pull request #25908 from vespa-engine/balder/use-steady_time-for-status-metric-consumer
Use steady_time for statusmetricconsumer.
Diffstat (limited to 'storage')
-rw-r--r--storage/src/vespa/storage/common/statusmetricconsumer.cpp36
-rw-r--r--storage/src/vespa/storage/common/statusmetricconsumer.h16
2 files changed, 13 insertions, 39 deletions
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<metrics::MetricSnapshot>(
- _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 <vespa/storageframework/generic/status/statusreporter.h>
-#include <vespa/storageframework/generic/metric/metricupdatehook.h>
-#include <vespa/vespalib/util/document_runnable.h>
-#include <vespa/metrics/metricmanager.h>
-#include <map>
+#include <vespa/vespalib/util/jsonstream.h>
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