Xorg vs gettimeofday() and clock_gettime()

Coleman Kane cokane at FreeBSD.org
Tue Feb 26 19:04:56 UTC 2008


Xin LI wrote:
> John E Hein wrote:
> > Peter Jeremy wrote at 21:07 +1100 on Feb 26, 2008:
> >  > My guess is pointer acceleration and/or 3-button emulation.  Out of
> >  > interest, I just ktrace'd my X server for 5 seconds (doing nothing in
> >  > particular) and got 318 syscalls, including 106 gettimeofday() calls.
> >  > By waving the mouse around inside a window, I get 4015 syscalls,
> >  > including 844 gettimeofday() and 1136 sigprocmask() calls in 5
> >  > secinds.  In some cases, there are consecutive gettimeofday() calls
> >  > with no other syscalls intervening.  These numbers do seem somewhat
> >  > excessive.
>
> > Interesting.  
>
> > I tried a ktrace session for about 10 seconds _without_ moving the
> > mouse and got 71332 gettimeofday calls out of 142707 total calls and
> > signals (all SIGALRM - 2051).
>
> > After about 7 minutes with mouse movement (and typing this message), I
> > saw 193356 gettimeofdays vs 502875 total.
>
> > I (obviously) haven't looked at the code.  But perhaps this is an area
> > that could possibly be improved by more judicious use of select or
> > kqueue and more independence of interval timing.
>
> I think it was some delay call, gettimeofday()s is mostly happen when
> there is some animations, in the single Xorg process.
>
> I will try to make a patch this weekend.  Last weekend I tried to modify
> only xproto and rebuild dbus and xorg-server, but it seems that it does
> not like it - with mixed gettimeofday() and clock_gettime(), the display
> will blank from time to time.
>
> Cheers,
You'll want to remember that clock_gettime returns timspec.tv_nsec
(nanoseconds), while gettimeofday returns timeval.tv_usec
(microseconds). In order to perform the conversion, you'll want to make
sure you convert nanoseconds to microseconds (*1000).

--
Coleman Kane



More information about the freebsd-x11 mailing list