提交 e102bdda 编写于 作者: H Heisenberg

MS-601 Docker logs error caused by get CPUTemperature error


Former-commit-id: 4611939ce3c9b66313aef12991b3477c43813ce7
上级 5e64d845
...@@ -46,7 +46,7 @@ PrometheusMetrics::Init() { ...@@ -46,7 +46,7 @@ PrometheusMetrics::Init() {
return s.code(); 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; const std::size_t num_threads = 2;
// Init Exposer // Init Exposer
......
...@@ -24,6 +24,9 @@ ...@@ -24,6 +24,9 @@
#include <iostream> #include <iostream>
#include <string> #include <string>
#include <utility> #include <utility>
#include<stdlib.h>
#include<dirent.h>
#include<stdio.h>
namespace milvus { namespace milvus {
namespace server { namespace server {
...@@ -237,18 +240,39 @@ SystemInfo::GPUTemperature() { ...@@ -237,18 +240,39 @@ SystemInfo::GPUTemperature() {
std::vector<float> std::vector<float>
SystemInfo::CPUTemperature() { SystemInfo::CPUTemperature() {
std::vector<float> result; std::vector<float> result;
for (int i = 0; i <= num_physical_processors_; ++i) { std::string path = "/sys/class/hwmon/";
std::string path = "/sys/class/thermal/thermal_zone" + std::to_string(i) + "/temp";
FILE* file = fopen(path.data(), "r"); DIR *dir = NULL;
if (file == nullptr) { dir = opendir(path.c_str());
perror("Could not open thermal file"); if (!dir) {
return result; 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> std::vector<uint64_t>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册