CLOCK_MONOTONIC_FAST, like CLOCK_MONOTONIC_COARSE, has low accuracy. It
shows noticeable timing variation for short intervals, which is visible
in metrics like $upstream_response_time for fast upstream responses.
This change complements the work started in commit
f29d7ade5.
In addition to the reasons described in
f29d7ade5, the performance of
CLOCK_MONOTONIC is good enough on modern hardware when using a TSC
timecounter. This is especially true when it is accessed through a
shared page, as implemented in FreeBSD 10.0 (see git commits
869fd80fd449 and
aea810386d8e for details).
Co-authored-by: Sergey Kandaurov <pluknet@nginx.com>
#if (NGX_HAVE_CLOCK_MONOTONIC)
struct timespec ts;
-#if defined(CLOCK_MONOTONIC_FAST)
- clock_gettime(CLOCK_MONOTONIC_FAST, &ts);
-#else
clock_gettime(CLOCK_MONOTONIC, &ts);
-#endif
sec = ts.tv_sec;
msec = ts.tv_nsec / 1000000;