如何使用C?
将CPU使用率作为百分比我有这样的功能:
static int cpu_usage (lua_State *L) {
clock_t clock_now = clock();
double cpu_percentage = ((double) (clock_now - program_start)) / get_cpus() / CLOCKS_PER_SEC;
lua_pushnumber(L,cpu_percentage);
return 1;
}
“program_start”是我在程序启动时使用的clock_t。
另一次尝试:
static int cpu_usage(lua_State *L) {
struct rusage ru;
getrusage(RUSAGE_SELF, &ru);
lua_pushnumber(L,ru.ru_utime.tv_sec);
return 1;
}
有没有办法测量CPU?如果我不时地调用这个函数它会让我不断增加时间......但这不是我想要的。
PS:我正在使用Ubuntu。
谢谢! =)
答案 0 :(得分:1)
您的功能应该按预期工作。来自clock
clock()函数应返回实现对进程使用的处理器时间的最佳近似值,因为实现定义时代的开始仅与进程调用有关。
这意味着,它返回此进程的CPU时间。
如果要计算相对于挂钟时间的CPU时间,则必须对gettimeofday
执行相同操作。节目开始时节省时间
struct timeval wall_start;
gettimeofday(&wall_start, NULL);
以及何时想要计算百分比
struct timeval wall_now;
gettimeofday(&wall_now, NULL);
现在你可以计算挂钟时间的差异了,你得到了
double start = wall_start.tv_sec + wall_start.tv_usec / 1000000;
double stop = wall_now.tv_sec + wall_now.tv_usec / 1000000;
double wall_time = stop - start;
double cpu_time = ...;
double percentage = cpu_time / wall_time;