Add all core temperatures

This commit is contained in:
2025-12-29 16:59:57 +00:00
parent 0f4cb0eaaf
commit cdee678a02
5 changed files with 48 additions and 13 deletions
+24 -8
View File
@@ -101,10 +101,10 @@ namespace metrics
return out;
}
std::vector<float> Collector::readCpuCoreTemps()
std::vector<CpuTemperature> Collector::readCpuCoreTemps()
{
std::vector<float> physTemps;
std::vector<float> logicTemps(logicalToPhysical.size());
std::vector<CpuTemperature> physical;
std::vector<CpuTemperature> logical(logicalToPhysical.size());
for (const auto &hwmon : std::filesystem::directory_iterator("/sys/class/hwmon"))
{
@@ -121,25 +121,41 @@ namespace metrics
for (const auto &f : std::filesystem::directory_iterator(hwmon))
{
std::string fname = f.path().filename();
CpuTemperature temperature;
if (fname.find("temp") == 0 && fname.find("_input") != std::string::npos)
{
int millideg = 0;
std::ifstream tempFile(f.path());
tempFile >> millideg;
physTemps.push_back(millideg / 1000.0f); // °C
temperature.current = millideg / 1000.0f; // °C
}
if (fname.find("temp") == 0 && fname.find("_max") != std::string::npos)
{
int millideg = 0;
std::ifstream tempFile(f.path());
tempFile >> millideg;
temperature.max = millideg / 1000.0f; // °C
}
if (fname.find("temp") == 0 && fname.find("_crit") != std::string::npos)
{
int millideg = 0;
std::ifstream tempFile(f.path());
tempFile >> millideg;
temperature.critical = millideg / 1000.0f; // °C
}
physical.push_back(temperature);
}
for (size_t i = 0; i < logicalToPhysical.size(); ++i)
{
int phys = logicalToPhysical[i];
if (phys >= static_cast<int>(physTemps.size()))
phys = physTemps.size() - 1; // safety
logicTemps[i] = physTemps[phys];
if (phys >= static_cast<int>(physical.size()))
phys = physical.size() - 1; // safety
logical[i] = physical[phys];
}
}
return logicTemps;
return logical;
}
float Collector::cpuLoad(const Collector::CpuTimes &prev,