gpu fan sanity check

This commit is contained in:
Drath
2025-08-28 16:01:11 +02:00
parent 6e3815ca05
commit 23bbb306a9

View File

@@ -120,13 +120,14 @@ auto getGpuMetrics(GpuMetricsHeader_t h, std::string path) {
// clean abstraction of gpu_metrics + extra metrics from fs, works with rx7800xt
gpu_t getGpu(GpuMetricsHeader_t header, std::string hw) {
gpu_t gpu;
uint8_t hwmon = 3;
// these are always read from fs
gpu.fan_speed = std::stol(readFile(hw + "/hwmon/hwmon2/fan1_input"));
gpu.vcore = std::stod(readFile(hw + "/hwmon/hwmon2/in0_input")) / 1000.0;
gpu.power_cap = std::stol(readFile(hw + "/hwmon/hwmon2/power1_cap", 6));
gpu.power_max = std::stol(readFile(hw + "/hwmon/hwmon2/power1_cap_max", 6));
// gpu.fan_pwm = std::stoi(readFile(hw + "/hwmon/hwmon2/pwm1")); // not super useful
gpu.fan_speed = std::stol(readFile(hw + "/hwmon/hwmon" + std::to_string(hwmon)+ "/fan1_input"));
gpu.vcore = std::stod(readFile(hw + "/hwmon/hwmon" + std::to_string(hwmon)+ "/in0_input")) / 1000.0;
gpu.power_cap = std::stol(readFile(hw + "/hwmon/hwmon" + std::to_string(hwmon)+ "/power1_cap", 6));
gpu.power_max = std::stol(readFile(hw + "/hwmon/hwmon" + std::to_string(hwmon)+ "/power1_cap_max", 6));
// gpu.fan_pwm = std::stoi(readFile(hw + "/hwmon/hwmon" + std::to_string(hwmon)+ "/pwm1")); // not super useful
gpu.vram_used = std::stoul(readFile(hw + "/mem_info_vram_used"));
gpu.vram_total = std::stoul(readFile(hw + "/mem_info_vram_total"));
@@ -147,13 +148,16 @@ gpu_t getGpu(GpuMetricsHeader_t header, std::string hw) {
gpu.mem_vrm_temp = metrics.temperature_vrmem;
gpu.power_avg = metrics.average_socket_power;
} else {
gpu.core_clock = std::stol(readFile(hw + "/hwmon/hwmon2/freq1_input", 6));
gpu.mem_clock = std::stol(readFile(hw + "/hwmon/hwmon2/freq2_input", 6));
gpu.vcore = std::stod(readFile(hw + "/hwmon/hwmon2/in0_input")) / 1000.0;
gpu.power_avg = std::stol(readFile(hw + "/hwmon/hwmon2/power1_input", 6));
gpu.edge_temp = std::stol(readFile(hw + "/hwmon/hwmon2/temp1_input", 3));
gpu.core_clock = std::stol(readFile(hw + "/hwmon/hwmon" + std::to_string(hwmon)+ "/freq1_input", 6));
gpu.mem_clock = std::stol(readFile(hw + "/hwmon/hwmon" + std::to_string(hwmon)+ "/freq2_input", 6));
gpu.vcore = std::stod(readFile(hw + "/hwmon/hwmon" + std::to_string(hwmon)+ "/in0_input")) / 1000.0;
gpu.power_avg = std::stol(readFile(hw + "/hwmon/hwmon" + std::to_string(hwmon)+ "/power1_input", 6));
gpu.edge_temp = std::stol(readFile(hw + "/hwmon/hwmon" + std::to_string(hwmon)+ "/temp1_input", 3));
gpu.core_usage = std::stoi(readFile(hw + "/gpu_busy_percent"));
}
if(gpu.fan_speed > 9999)
gpu.fan_speed = 9999;
return gpu;
}