获取系统时间和用户时间

时间:2010-09-21 01:41:59

标签: c++ linux performance

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

在fedora下,看起来进程用户时间jiffies的计数器在一段时间后就停止了,即使进程正在拉动大量的cpu使用。我的怀疑是,也许有些价值观已被转移,但很难确认。

我正在寻找的是一种从命令行获取系统时间/用户时间细分的方法。无需借助于读取/ proc // stat文件(因为它不可信任)。我一直在尝试使用ps,但我唯一能看到这个选项的地方就是'过时的bsd排序方法',我无法开始工作。

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

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

3 个答案:

答案 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