【发布时间】:2016-03-16 11:48:35
【问题描述】:
我正在尝试使用 rusage 计算某个线程的平均 cpu 时间。
但是,我发现“RUSAGE_THREAD”未在此范围内声明。
我正在使用
#include <sys/resource.h>
并使用 -D_GNU_SOURCE 进行编译
在我的代码开头,我的 Linux 版本很好。
这是我尝试进行计算的地方:
struct rusage l_rusage;
int retVal = getrusage(RUSAGE_THREAD, &l_rusage);
u64 userUSeconds = (static_cast<u64>(l_rusage.ru_utime.tv_sec)) * 1000000 +
(static_cast<u64>(l_rusage.ru_utime.tv_usec));
u64 systemUSeconds = (static_cast<u64>(l_rusage.ru_stime.tv_sec)) * 1000000 +
(static_cast<u64>(l_rusage.ru_stime.tv_usec));
return (userUSeconds + systemUSeconds) / ACE_OS::num_processors_online();
有什么想法吗?或者甚至是不同的解决方案?我也在使用 ACE 库,所以我有 ACE_OS,但是在尝试使用 ACE_OS::rusage 时我找不到 RUSAGE_THREAD 的等价物。
谢谢
编辑:另外一件事,我无法访问线程制作代码的实际位置,我只能使用线程内的代码。
【问题讨论】:
-
请尝试创建一个Minimal, Complete, and Verifiable Example 并向我们展示,查看代码总是有帮助的。