Re: pg_test_fsync performance
Marko Kreen <markokr@gmail.com>
From: Marko Kreen <markokr@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Bruce Momjian <bruce@momjian.us>, Robert Haas <robertmhaas@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2012-02-14T23:35:05Z
Lists: pgsql-hackers
On Tue, Feb 14, 2012 at 05:59:06PM -0500, Tom Lane wrote: > Bruce Momjian <bruce@momjian.us> writes: > > On Mon, Feb 13, 2012 at 08:28:03PM -0500, Tom Lane wrote: > >> +1, I was about to suggest the same thing. Running any of these tests > >> for a fixed number of iterations will result in drastic degradation of > >> accuracy as soon as the machine's behavior changes noticeably from what > >> you were expecting. Run them for a fixed time period instead. Or maybe > >> do a few, then check elapsed time and estimate a number of iterations to > >> use, if you're worried about the cost of doing gettimeofday after each > >> write. > > > Good idea, and it worked out very well. I changed the -o loops > > parameter to -s seconds which calls alarm() after (default) 2 seconds, > > and then once the operation completes, computes a duration per > > operation. > > I was kind of wondering how portable alarm() is, and the answer > according to the buildfarm is that it isn't. I'm using following simplistic alarm() implementation for win32: https://github.com/markokr/libusual/blob/master/usual/signal.c#L21 this works with fake sigaction()/SIGALARM hack below - to remember function to call. Good enough for simple stats printing, and avoids win32-specific code spreading around. -- marko