| // Copyright 2021 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ml/time_metrics.h" |
| |
| #include <metrics/metrics_library.h> |
| |
| namespace ml { |
| |
| namespace { |
| // UMA histogram range for wall time metrics. |
| constexpr int kWallTimeMinMicrosec = 1; // 1 μs |
| constexpr int kWallTimeMaxMicrosec = 1800000000; // 30 min |
| constexpr int kWallTimeBuckets = 100; |
| } // namespace |
| |
| WallTimeMetric::WallTimeMetric(const std::string& name) |
| : metric_name_(name), start_time_(base::Time::Now()) {} |
| |
| WallTimeMetric::~WallTimeMetric() { |
| MetricsLibrary().SendToUMA( |
| metric_name_, (base::Time::Now() - start_time_).InMicroseconds(), |
| kWallTimeMinMicrosec, kWallTimeMaxMicrosec, kWallTimeBuckets); |
| } |
| |
| void RecordReapWorkerProcessWallTime(base::Time begin_time, |
| base::Time end_time) { |
| DCHECK_GE(end_time, begin_time); |
| MetricsLibrary().SendToUMA("MachineLearningService.WorkerProcessCleanUpTime", |
| (end_time - begin_time).InMicroseconds(), |
| kWallTimeMinMicrosec, kWallTimeMaxMicrosec, |
| kWallTimeBuckets); |
| } |
| |
| } // namespace ml |