gpt4 book ai didi

C 中的 CPU 使用率(百分比)

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:44 25 4
gpt4 key购买 nike

如何使用 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。

谢谢! =)

最佳答案

您的函数应该按预期工作。来自 clock

The clock() function shall return the implementation's best approximation to the processor time used by the process since the beginning of an implementation-defined era related only to the process invocation.

这意味着,它返回此进程的 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;

关于C 中的 CPU 使用率(百分比),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23791796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com