Jetson Nano 温度 C
Jetson Nano Temperature C
我对这段代码有几个问题,运行 在 jetson nano 上:
#include "stdio.h"
#include "unistd.h"
#include "stdlib.h"
float gputemp = 0;
float cputemp = 0;
int count = 0;
int main() {
char* cpu;
char* gpu;
cpu = (char*)malloc(sizeof(char)*6);
gpu = (char*)malloc(sizeof(char)*6);
while (1) {
FILE* fcputemp = fopen("/sys/devices/virtual/thermal/thermal_zone1/temp", "r");
FILE* fgputemp = fopen("/sys/devices/virtual/thermal/thermal_zone2/temp","r");
if (!fcputemp || !fgputemp ) {
printf("Something went wrong\n");
exit(EXIT_FAILURE);
}
cputemp = atoi(fgets(cpu, 6, fcputemp))/1000;
gputemp = atoi(fgets(gpu, 6, fgputemp))/1000;
printf("\rCpu : %.2f, Gpu : %.2f. Elapsed time : %d", cputemp, gputemp, count);
fflush(stdout);
fclose(fcputemp);
fclose(fgputemp);
count++;
sleep(1);
}
}
在这里,我必须打开文件,获取温度,然后在每次循环迭代时关闭文件,以获取有效数据(并且不要出现段错误)。
我在这里关心的是执行此操作所需的(昂贵的)内核开关的数量。
我知道过早的优化是有害的,但还有另一种方法(或者可能是正确的方法),只打开文件一次?
为什么传感器接口(文件)在我打开后无法自行更新?
P.S: 是的,我知道,我没有释放 cpu 和 gpu 变量,这只是“演示”代码(看看我如何测量经过的时间哈哈)
我不确定您是否可以只打开一次文件。您可以尝试倒带,但 sysfs
不是“真正的”文件系统,它们也不是真正的文件。如果倒带,您可能会一遍又一遍地获得相同的数据,尤其是在使用 fopen()
.
等缓冲调用时
打开操作是为读取数据做准备。因为这一切都由内核管理,所以它应该只有很少的开销,并且没有实际的磁盘 activity。考虑到像 top
这样的程序每秒读取数千个,这没什么大不了的。
我对这段代码有几个问题,运行 在 jetson nano 上:
#include "stdio.h"
#include "unistd.h"
#include "stdlib.h"
float gputemp = 0;
float cputemp = 0;
int count = 0;
int main() {
char* cpu;
char* gpu;
cpu = (char*)malloc(sizeof(char)*6);
gpu = (char*)malloc(sizeof(char)*6);
while (1) {
FILE* fcputemp = fopen("/sys/devices/virtual/thermal/thermal_zone1/temp", "r");
FILE* fgputemp = fopen("/sys/devices/virtual/thermal/thermal_zone2/temp","r");
if (!fcputemp || !fgputemp ) {
printf("Something went wrong\n");
exit(EXIT_FAILURE);
}
cputemp = atoi(fgets(cpu, 6, fcputemp))/1000;
gputemp = atoi(fgets(gpu, 6, fgputemp))/1000;
printf("\rCpu : %.2f, Gpu : %.2f. Elapsed time : %d", cputemp, gputemp, count);
fflush(stdout);
fclose(fcputemp);
fclose(fgputemp);
count++;
sleep(1);
}
}
在这里,我必须打开文件,获取温度,然后在每次循环迭代时关闭文件,以获取有效数据(并且不要出现段错误)。 我在这里关心的是执行此操作所需的(昂贵的)内核开关的数量。
我知道过早的优化是有害的,但还有另一种方法(或者可能是正确的方法),只打开文件一次?
为什么传感器接口(文件)在我打开后无法自行更新?
P.S: 是的,我知道,我没有释放 cpu 和 gpu 变量,这只是“演示”代码(看看我如何测量经过的时间哈哈)
我不确定您是否可以只打开一次文件。您可以尝试倒带,但 sysfs
不是“真正的”文件系统,它们也不是真正的文件。如果倒带,您可能会一遍又一遍地获得相同的数据,尤其是在使用 fopen()
.
打开操作是为读取数据做准备。因为这一切都由内核管理,所以它应该只有很少的开销,并且没有实际的磁盘 activity。考虑到像 top
这样的程序每秒读取数千个,这没什么大不了的。