Получить системное время и пользовательское время - PullRequest
1 голос
/ 21 сентября 2010

Я работаю над Linux и использую значения в / proc // stat для записи данных о производительности.В настоящее время я регистрирую пользовательское время процесса и системное время процесса.Проблема, с которой я столкнулся, состоит в том, что код выводит правильные значения в Ubuntu 10.04, но кажется, что он неверен в Fedora 13.

В Fedora он выглядит так, как если счетчик времени ожидания пользовательских процессов просто останавливается послев то время как процесс тянет изрядное использование процессора.Я подозреваю, что, возможно, некоторые ценности были перемещены, но это трудно подтвердить.

Я ищу метод получения системного времени / пользовательского времени из командной строки.Не прибегая к чтению файла / proc // stat (так как ему нельзя доверять).Я пытался использовать ps, но единственное место, где я могу увидеть опцию для этого, это «устаревший метод сортировки bsd», который я не могу заставить работать.

Есть ли способ получения значенийдля пользовательского времени процесса и системного времени процесса из командной строки?

Или есть ли лучший способ извлечения значений производительности в C ++ с помощью функций API, о которых я не знаю?

Ответы [ 3 ]

2 голосов
/ 21 сентября 2010

Если вы хотите узнать время процессора из самого процесса (или из родительского процесса), вы можете использовать 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 голосов
/ 21 сентября 2010

В дополнение к times (), как рекомендует caf, вы можете получить более подробную информацию из getrusage ().

0 голосов
/ 21 сентября 2010

а как же

time ./program
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...