Как узнать текущее время процессора в Linux? - PullRequest
2 голосов
/ 24 июня 2010

Я использую язык C и Linux в качестве платформы программирования во встроенном устройстве.

У меня вопрос, как правильно получить текущее время процессора (отметьте галочкой). Я использую функцию clock () в time.h и, похоже, получаю несогласованное значение.

Спасибо.

Ответы [ 3 ]

6 голосов
/ 24 июня 2010

Функция clock() измеряет время процессора, затрачиваемое вашим процессом.Он не увеличивается, когда ваш процесс находится в спящем режиме или заблокирован.

Если вы хотите, чтобы часы с высоким разрешением непрерывно увеличивались, используйте clock_gettime(CLOCK_MONOTONIC, ..).

1 голос
/ 24 июня 2010

Вас может заинтересовать статья LWN "Проблемы с TSC" и прилагаемые комментарии.В то время как gettimeofday и clock_gettime кажутся правильными, есть над чем подумать: производительность может отличаться, могут быть проблемы согласованности между разными процессорами в многопоточных или многопроцессорных программах, и, например, наличие NTP может изменятьзначение часов (CLOCK_MONOTONIC не будет зависеть от NTP, но другие могут).

Будьте внимательны и убедитесь, что вы читаете все, что хотите, чтобы убедиться, что оно соответствует вашим требованиям.Если вам повезло, вы работаете на стационарной аппаратной и библиотечной платформе или можете позволить себе некоторые неточности или неточности.

1 голос
/ 24 июня 2010

Мне не совсем понятно, о чем конкретно вы спрашиваете. Если вы хотите, чтобы другой метод получал время, используемое вашим процессом, я часто использую getitimer () / setitimer () с ITIMER_PROF и ITIMER_REAL. Однако я нахожу это немного странным.

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