Received: from localhost (unknown [200.46.204.183]) by developer.postgresql.org (Postfix) with ESMTP id B6DA52E006B for ; Thu, 19 Jun 2008 08:12:44 -0300 (ADT) Received: from developer.postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 85079-04 for ; Thu, 19 Jun 2008 08:12:36 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mailrelay.edis.at (mailrelay.edis.at [81.223.48.5]) by developer.postgresql.org (Postfix) with ESMTP id 344B12E004B for ; Thu, 19 Jun 2008 08:12:38 -0300 (ADT) Received: from [91.83.8.169] (91.83.8.169.pool.invitel.hu [::ffff:91.83.8.169]) (AUTH: CRAM-MD5 zb@cybertec.at, TLS: TLSv1/SSLv3,256bits,AES256-SHA) by mailrelay.edis.at with esmtp; Thu, 19 Jun 2008 13:12:33 +0200 id 000F3E61.485A3F21.0000463D Message-ID: <485A3F20.1080907@cybertec.at> Date: Thu, 19 Jun 2008 13:12:32 +0200 From: Zoltan Boszormenyi User-Agent: Thunderbird 2.0.0.14 (X11/20080501) MIME-Version: 1.0 To: Greg Smith CC: Hans-Juergen Schoenig , pgsql-patches Subject: Re: posix advises ... References: <4826C200.8060807@cybertec.at> In-Reply-To: X-Enigmail-Version: 0.95.6 Content-Type: multipart/mixed; boundary="------------040806070609040503000707" X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200806/122 X-Sequence-Number: 6608 This is a multi-part message in MIME format. --------------040806070609040503000707 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Greg Smith írta: > On Sun, 11 May 2008, Hans-Juergen Schoenig wrote: > >> we also made some simple autoconf hack to check for broken >> posix_fadvise. > > Because of how you did that, your patch is extremely difficult to even > test. You really should at least scan the output from diff you're > about to send before submitting a patch to make sure it makes > sense--yours is over 30,000 lines long just to implement a small > improvement. The reason for that is that you regenerated "configure" > using a later version of Autoconf than the official distribution, and > the diff for the result is gigantic. You even turned off the check in > configure.in that specifically prevents you from making that mistake > so it's not like you weren't warned. Sorry, that old autoconf version was nowhere to be found for Fedora 8. Fortunately PostgreSQL 8.4 switched already to autoconf 2.61... :-) > You should just show the necessary modifications to configure.in in > your patch, certainly shouldn't submit a patch that subverts the > checks there, and leave out the resulting configure file if you didn't > use the same version of Autoconf. > > I find the concept behind this patch very useful and I'd like to see a > useful one re-submitted. I'm in the middle of setting up some new > hardware this month and was planning to test the existing fadvise > patches Greg Stark sent out as part of that. This patch (revisited and ported to current CVS HEAD) is indeed using Greg's original patch and also added another patch written by Mark Wong that helps evicting closed XLOGs from memory faster. Our additions are: - advise POSIX_FADV_SEQUENTIAL for seqscans - configure check - small documentation for Greg's patch and its GUC - adapt ginget.c that started using tbm_iterate() recently The configure check implicitely assumes segfaults (which are returned as exit code 139 here) can be handled. IIRC Tom Lane talked about unmatched glibc and Linux kernel versions may segfault when posix_fadvise() was called. (kernel lacked the feature, glibc erroneously assumed it can use it) > Having another one to test for accelerating multiple sequential > scans would be extremely helpful to add to that, because then I think > I can reuse some of the test cases Jeff Davis put together for the 8.3 > improvements in that area to see how well it works. It wasn't as > clear to me how to test the existing bitmap scan patch, yours seems a > more straightforward patch to use as a testing ground for fadvise > effectiveness. > > -- > * Greg Smith gsmith@gregsmith.com http://www.gregsmith.com Baltimore, MD > Best regards, Zoltán Böszörményi -- ---------------------------------- Zoltán Böszörményi Cybertec Schönig & Schönig GmbH http://www.postgresql.at/ --------------040806070609040503000707 Content-Type: application/x-tar; name="preread-seq-tunable-8.4-v4.diff.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="preread-seq-tunable-8.4-v4.diff.gz" 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 --------------040806070609040503000707--