void CPUMetricCollector::CollectCpuUsage()

in health_metric_collector/src/cpu_metric_collector.cpp [42:62]


void CPUMetricCollector::CollectCpuUsage(const std::vector<CPUData> & entries1,
                                         const std::vector<CPUData> & entries2)
{
  const size_t num_of_entries = std::min(entries1.size(), entries2.size());

  for (size_t i = 0; i < num_of_entries; ++i) {
    const CPUData & e1 = entries1[i];
    const CPUData & e2 = entries2[i];

    const auto active_time = static_cast<float>(e2.GetActiveTime() - e1.GetActiveTime());
    const auto idle_time = static_cast<float>(e2.GetIdleTime() - e1.GetIdleTime());
    const float total_time = active_time + idle_time;
    const float usage = 100.f * active_time / total_time;

    MetricData md = mgr_->CreateMetric();
    md.metric_name = BASE_METRIC_NAME + entries1[i].cpu;
    md.unit = MetricData::UNIT_PERCENTAGE;
    md.value = usage;
    mgr_->AddMetric(md);
  }
}