Среда, 15 Июнь 2011

временной интервал в linux

Задали вопрос: как понять, сколько прошло времени в linux?

Первый ответ, который приходит на ум это взять:

gettimeofday(&time1, NULL)
sleep(5);
gettimeofday(&time2, NULL)

и вычесть time1 из time2. Плох этот вариант тем, что время будет не предсказуемое ибо оно может смениться в следствии ntpdate, которая резко переводит время. Есть еще ntpd, который просто корректирует длину секунды.

Второй вариант это:

clock_gettime(CLOCK_MONOTONIC, &time1);
sleep(5);
clock_gettime(CLOCK_MONOTONIC, &time2);

лучше. ntpdate уже не страшен, время привязано к uptime, но от ntpd не спасет. Опять же, на точность влияет kernel.vsyscall64.

И самый верный вариант (но доступный с ядер 2.6.28) это:

clock_gettime(CLOCK_MONOTONIC_RAW, &time1);
sleep(5);
clock_gettime(CLOCK_MONOTONIC_RAW, &time2);

Написано в: 0:13 | 0 комментариев | | теги: , , , , , | постоянная ссылка |
Добавить пост в:   Delicious Reddit Slashdot Digg Technorati Google


Последние комментарии

Пингбэки

Статьи за неделю не попавшие в ленту новостей (выпуск 150) @blog.adamix.ru 8.07.2011 14:51
«Замер временного интервала в linux»

Комментарии

К этой публикации комментариев нет

Форма комментирования для «временной интервал в linux»

Обязательное поле. Не больше 30 символов.

Обязательное поле