提交 e102bdda 编写于 作者: H Heisenberg

MS-601 Docker logs error caused by get CPUTemperature error


Former-commit-id: 4611939ce3c9b66313aef12991b3477c43813ce7
上级 5e64d845
......@@ -46,7 +46,7 @@ PrometheusMetrics::Init() {
return s.code();
}
const std::string uri = std::string("/tmp/metrics");
const std::string uri = std::string("/metrics");
const std::size_t num_threads = 2;
// Init Exposer
......
......@@ -24,6 +24,9 @@
#include <iostream>
#include <string>
#include <utility>
#include<stdlib.h>
#include<dirent.h>
#include<stdio.h>
namespace milvus {
namespace server {
......@@ -237,18 +240,39 @@ SystemInfo::GPUTemperature() {
std::vector<float>
SystemInfo::CPUTemperature() {
std::vector<float> result;
for (int i = 0; i <= num_physical_processors_; ++i) {
std::string path = "/sys/class/thermal/thermal_zone" + std::to_string(i) + "/temp";
FILE* file = fopen(path.data(), "r");
if (file == nullptr) {
perror("Could not open thermal file");
return result;
std::string path = "/sys/class/hwmon/";
DIR *dir = NULL;
dir = opendir(path.c_str());
if (!dir) {
perror("opendir");
return result;
}
struct dirent *ptr = NULL;
while ((ptr = readdir(dir)) != NULL) {
std::string filename(path);
filename.append(ptr->d_name);
char buf[100];
if (readlink(filename.c_str(), buf, 100) != -1) {
std::string m(buf);
if (m.find("coretemp") != std::string::npos) {
std::string object = filename;
object += "/temp1_input";
FILE *file = fopen(object.c_str(), "r");
if (file == nullptr) {
perror("Could not open temperature file");
exit(1);
}
float temp;
fscanf(file, "%f", &temp);
result.push_back(temp / 1000);
}
}
float temp;
fscanf(file, "%f", &temp);
result.push_back(temp / 1000);
fclose(file);
}
closedir(dir);
return result;
}
std::vector<uint64_t>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册