Re: Enabling Checksums
Florian Pflug <fgp@phlo.org>
From: Florian Pflug <fgp@phlo.org>
To: Jeff Davis <pgsql@j-davis.com>
Cc: Ants Aasma <ants@cybertec.at>, Robert Haas <robertmhaas@gmail.com>, Greg Smith <greg@2ndquadrant.com>, Tom Lane <tgl@sss.pgh.pa.us>, Andres Freund <andres@2ndquadrant.com>, Bruce Momjian <bruce@momjian.us>, Heikki Linnakangas <hlinnakangas@vmware.com>, Simon Riggs <simon@2ndquadrant.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2013-04-22T19:32:23Z
Lists: pgsql-hackers
On Apr22, 2013, at 21:14 , Jeff Davis <pgsql@j-davis.com> wrote: > On Mon, 2013-04-22 at 20:04 +0200, Florian Pflug wrote: >> The one downside of the fnv1+shift approach is that it's built around >> the assumption that processing 64-bytes at once is the sweet spot. That >> might be true for x86 and x86_64 today, but it won't stay that way for >> long, and quite surely isn't true for other architectures. That doesn't >> necessarily rule it out, but it certainly weakens the argument that >> slipping it into 9.3 avoids having the change the algorithm later... > > I think you are setting the bar way too high. Right now, we have a slow > algorithm. According to Ants's tests, FNV-1a is much, much faster. Do > you think that it will still be such a bottleneck that we will want to > change it again later for purely performance reasons? To clarify, it wasn't my intent to argue against shipping FNV1+SHIFT in 9.3 - in fact I'd like to see us do exactly that. I was merely trying to be unbiased, and hence stated not only arguments in favour or FNV1+SHIFT (the ones about CRCs theoretical advantages in error detection being not really relevant to us), but also the one downside of FNV1+SHIFT. Seems like I could have done a better job expressing myself though. > The biggest problem now is getting one of these faster algorithms (FNV > or even a faster CRC) into shape that is acceptable to > reviewers/committers. If we don't do that, we will be missing out on a > lot of potential checksum users for whom the existing CRC algorithm is > just too slow. Assuming that we only ship a plain C implementation with 9.3, what are we missing on that front? The C implementation of FNV1+SHIFT is only a few dozen lines or so. best regards, Florian Pflug