I had 36 hours of uptime reported by my ubuntu system and only 7 hours of 
uptime reported by node, which seemed about accurate for this weekend.  I 
likely only had 7 hours of use on my laptop and 29 hours in standby.

If you dive into the source, os.uptime refers to uv_uptime which is defined 
in libuv for linux here: 
https://github.com/indutny/libuv/blob/master/src/unix/linux.c


uv_err_t uv_uptime(double* uptime) {
#ifdef CLOCK_MONOTONIC
  struct timespec now;
  if (0 == clock_gettime(CLOCK_MONOTONIC, &now)) {
    *uptime = now.tv_sec;
    *uptime += (double)now.tv_nsec / 1000000000.0;
    return uv_ok_;
  }
  return uv__new_sys_error(errno);
#else
  struct sysinfo info;
  if (sysinfo(&info) < 0) {
    return uv__new_sys_error(errno);
  }
  *uptime = (double)info.uptime;
  return uv_ok_;
#endif
}

Following a question and multiple answers on stack overflow: 
http://stackoverflow.com/questions/3523442/difference-between-clock-realtime-and-clock-monotonic
 it appears that the use of CLOCK_MONOTONIC ends up ignoring all standby time 
and thus only reports time that the system was actually up and running.

The following perl code reports the exact same number as node code:
perl -w -MTime::HiRes=clock_gettime,CLOCK_MONOTONIC -E 'say 
clock_gettime(CLOCK_MONOTONIC)'
same as
node -e "console.log(require('os').uptime())"

<>Darin

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to