Robert Haas <robertmh...@gmail.com> writes: > I guess the question boils down to: why are we keeping > --disable-spinlocks around? If we're expecting that people might > really use it for serious work, then it needs to remain and it needs > to work with dynamic shared memory. If we're expecting that people > might use it while porting PostgreSQL to a new platform but only as an > aid to get things up and running, then it needs to remain, but it's > probably OK for dynamic shared memory not to work when this option is > in use. If nobody uses it at all, then we can just forget the whole > thing.
I think we can eliminate the first of those. Semaphores for spinlocks were a performance disaster fifteen years ago, and the situation has surely only gotten worse since then. I do, however, believe that --disable-spinlocks has some use while porting to a new platform. (And I don't believe the argument advanced elsewhere in this thread that everybody uses gcc; much less that gcc's atomic intrinsics are of uniformly high quality even on oddball architectures.) Heikki's idea has some attraction for porting work whether or not you believe that DSM needs to work during initial porting. By default, PG will try to create upwards of ten thousand spinlocks just for buffer headers. It's likely that that will fail unless you whack around the kernel's SysV parameters. Being able to constrain the number of semaphores to something sane would probably be useful. Having said all that, I'm not personally going to take the time to implement it, and I don't think the DSM patch should be required to either. Somebody who actually needs it can go make it work. But I think Heikki's idea points the way forward, so I'm now against having the DSM code reject --disable-spinlocks. I think benign neglect is the way for now. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers