17 Base(iceMemory,
"LightweightSystemMonitor",
"CPUUsage", nullptr, nullptr, 1000)
23 const std::string& prefix)
25 defs->optional(pollFrequencyHz, prefix +
"pollFrequencyHz",
"The poll frequency in Hz");
33 pollFrequencyHz =
std::clamp(pollFrequencyHz, 0.1f, 100.f);
34 cpuMonitoring->initCpuUsage();
36 float sleepTime = (1000.f / pollFrequencyHz);
39 this, &LightweightCpuMonitorProviderSegment::loop, sleepTime);
44 LightweightCpuMonitorProviderSegment::loop()
50 double usage = cpuMonitoring->getCurrentCpuUsage();
51 std::string model = cpuMonitoring->getCPUName();
52 std::vector<double> cores = cpuMonitoring->getCurrentMultiCoreUsage();
54 auto data = std::make_shared<aron::data::Dict>();
55 data->addElement(
"model",
56 std::make_shared<aron::data::String>(model));
57 data->addElement(
"load", std::make_shared<aron::data::Double>(usage));
59 auto list = std::make_shared<aron::data::List>();
60 for (
const auto core : cores)
62 list->addElement(std::make_shared<aron::data::Double>(core));
66 ARMARX_DEBUG <<
"Current CPU load: " << usage <<
" (of model: " << model <<
")";