sysctl with KERN_BOOTTIME option vs. gettimeofday()

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

sysctl with KERN_BOOTTIME option vs. gettimeofday()

mkotlov
Hi everyone,
I am doing a port of C++ code from Windows to FreeBSD and need to
replace function GetTickCount(), which is used mostly for the purposes
of obtaining elapsed time (e.g. as a millisecond timer). As I
understand it, there are two ways to do that: 1) via sysctl() function
with CTL_KERN&KERN_BOOTTIME options and 2) via gettimeofday(). In both
case, struct timeval is returned, so I can compute the difference
between the two times and get the elapsed time.

I am wondering if anyone could tell me performance implications of
using sysctl() function call to obtain system boot time vs.
gettimeofday(). Is one better than the other? More efficient? Are
there advantages or disadvantages to using either of these two
methods? Any insight would be appreciated.

Thanks very much in advance,
Mari.
_______________________________________________
[hidden email] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "[hidden email]"
Reply | Threaded
Open this post in threaded view
|

Re: sysctl with KERN_BOOTTIME option vs. gettimeofday()

Pieter de Goeje
On Tuesday 17 March 2009 16:17:55 Mari Kotlov wrote:

> Hi everyone,
> I am doing a port of C++ code from Windows to FreeBSD and need to
> replace function GetTickCount(), which is used mostly for the purposes
> of obtaining elapsed time (e.g. as a millisecond timer). As I
> understand it, there are two ways to do that: 1) via sysctl() function
> with CTL_KERN&KERN_BOOTTIME options and 2) via gettimeofday(). In both
> case, struct timeval is returned, so I can compute the difference
> between the two times and get the elapsed time.
>
> I am wondering if anyone could tell me performance implications of
> using sysctl() function call to obtain system boot time vs.
> gettimeofday(). Is one better than the other? More efficient? Are
> there advantages or disadvantages to using either of these two
> methods? Any insight would be appreciated.
>
> Thanks very much in advance,
> Mari.

For the purpose of determining the elapsed time between two measurements, I
can recommend clock_gettime(2) w/ CLOCK_MONOTONIC as clock_id.

Sysctl is definately not meant to be used for this, as it is not portable and
has probably more overhead than clock_gettime() or gettimeofday().

- Pieter
_______________________________________________
[hidden email] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "[hidden email]"