2010-09-21 24 views
1

我正在使用linux,并使用/ proc/stat中的值记录性能数据。我目前正在记录过程用户时间和过程系统时间。我遇到的问题是,代码在ubuntu 10.04上输出正确的值,但在fedora 13下似乎是错误的。获取系统时间和用户时间

在fedora下它看起来像处理用户时间的计数器jiffies在一段时间后刚刚停止,即使这个过程是拉大量的CPU使用率。我的怀疑是,也许一些价值观已被感动,但很难确认。

我在寻找的是从命令行获取系统时间/用户时间细分的方法。不诉诸阅读/ proc // stat文件(因为它不可信)。我一直在尝试使用ps,但我唯一可以看到的选项是'过时的bsd排序方法',我无法工作。

有没有办法从命令行获取过程用户时间和处理系统时间的值?

或者有没有更好的方法来提取性能值的C++通过我不知道的API函数?

+0

http://stackoverflow.com/questions/2533774/measuring-execution-time-of-a-call-to-system-in-c/2533778#2533778 – karlphillip 2010-09-21 01:44:39

+0

这不是特别相关,因为我正在查看cpu使用情况,而不是计时行动。 – radman 2010-09-21 01:50:09

回答

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 */ 
}; 

的进一步详情,请参阅手册页用法。

+0

这个技巧,那就太好了,谢谢! – radman 2010-09-21 04:38:55

0

怎么样

time ./program 
+0

这是一个好的解决方案,但是如果有什么东西可以给我瞬间的(比例在最后一秒,或者类似的) – radman 2010-09-21 02:03:17