我正在使用linux并使用/ proc // stat中的值来记录性能数据。我目前正在记录进程用户时间和进程系统时间。我遇到的问题是代码在ubuntu 10.04上输出了正确的值,但在fedora 13下似乎是错误的。
在fedora下,看起来进程用户时间jiffies的计数器在一段时间后就停止了,即使进程正在拉动大量的cpu使用。我的怀疑是,也许有些价值观已被转移,但很难确认。
我正在寻找的是一种从命令行获取系统时间/用户时间细分的方法。无需借助于读取/ proc // stat文件(因为它不可信任)。我一直在尝试使用ps
,但我唯一能看到这个选项的地方就是'过时的bsd排序方法',我无法开始工作。
有没有办法从命令行获取进程用户时间和进程系统时间的值?
或者是否有更好的方法通过我不知道的API函数在C ++中提取性能值?
答案 0 :(得分:2)
如果您想知道进程本身(或父进程)的CPU时间,可以使用times()
:
clock_t times(struct tms *buf);
struct tms {
clock_t tms_utime; /* user time */
clock_t tms_stime; /* system time */
clock_t tms_cutime; /* user time of children */
clock_t tms_cstime; /* system time of children */
};
有关用法的详细信息,请参见手册页。
答案 1 :(得分:0)
怎么样
time ./program
答案 2 :(得分:0)
除了时间(),如caf的建议,你可以从getrusage()获得更详细的信息。
http://www.kernel.org/doc/man-pages/online/pages/man2/getrusage.2.html