Re: gettimeofday is at the end of its usefulness?
Benedikt Grundmann <bgrundmann@janestreet.com>
From: Benedikt Grundmann <bgrundmann@janestreet.com>
To: Greg Stark <stark@mit.edu>
Cc: Robert Haas <robertmhaas@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>,
PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2014-05-15T11:04:25Z
Lists: pgsql-hackers
On Thu, May 15, 2014 at 11:31 AM, Greg Stark <stark@mit.edu> wrote: > On Thu, May 15, 2014 at 8:19 AM, Benedikt Grundmann > <bgrundmann@janestreet.com> wrote: > > I posted this on this mailing list before at Jane Street we have > developed > > very fast code to get timing information based on TSC if available. It's > > all ocaml but well documented and mostly just calls to c functions so > should > > be easy to port to C and we release it under a very liberal license so it > > should be no problem to take the ideas: > > What OS do you run it on though? How fast is your implementation > compared to the kernel implementation of clock_gettime()? > > Are you sure your implementation is actually faster? And are you sure > you're protected against clocks going backwards? I think you should > put some i/o in the loop in the test and start several threads running > it to make it more likely the thread is rescheduled to a different > processor during the test. It suspect you'll find the rdtsc goes > backwards sometimes or produces crazy results when switching > processors. > > There are benchmarks in the link I posted (obtained by a micro benchmarking library we developed / use internally which takes great care to obtain reliable numbers) . We use posix threads extensively. We internally spend a lot of time setting up ntp and monitoring systems so that clock backwards never happens (so with other words I wouldn't be surprised if the library does NOT work correctly when it does -- our protection is outside). I do not believe we have seen the tdtsc going backwards on thread context switch you mention (and as said we use lots of threads). OS? Centos 6.5 primarily. -- > greg >
Commits
-
Use clock_gettime(), if available, in instr_time measurements.
- 1d63f7d2d180 10.0 landed