Re: BUG #14206: Switch to using POSIX semaphores on FreeBSD

Поиск
Список
Период
Сортировка
От Konstantin Belousov
Тема Re: BUG #14206: Switch to using POSIX semaphores on FreeBSD
Дата
Msg-id 20160622100014.GL38613@kib.kiev.ua
обсуждение исходный текст
Ответ на Re: BUG #14206: Switch to using POSIX semaphores on FreeBSD  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: BUG #14206: Switch to using POSIX semaphores on FreeBSD  (Maxim Sobolev <sobomax@freebsd.org>)
Re: BUG #14206: Switch to using POSIX semaphores on FreeBSD  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
On Tue, Jun 21, 2016 at 04:36:02PM -0400, Tom Lane wrote:
> Maxim Sobolev <sobomax@freebsd.org> writes:
> > Tom, thanks for looking at it so promptly. I am adding kib@ into the
> > discussion. Perhaps he would comment on the SYSV vs. POSIX in FreeBSD and
> > named vs. unnamed.
>
> BTW, I trawled our archives and found this thread concerning the switch
> from POSIX to SYSV on OS X:
>
> https://www.postgresql.org/message-id/flat/3830CBEB-F8CE-4EBC-BE16-A415E78A4CBC%40apple.com
>
> I'm not sure what you were using to decide that POSIX semaphores were
> okay, but the points in that thread about pgbench not being a very
> good test case remain relevant.
>
> > As far as I can tell, the sem_init(3) interface is present in the FreeBSD
> > 10.3, so maybe we can use those instead?
>
> If that seems like a competitive alternative for you, it'd be nice to have
> a platform where we use unnamed POSIX semaphores by default.  I'm a little
> worried about whether that code has suffered bit-rot, since it's been
> sitting there basically unused for so long.

On FreeBSD, there is no practical difference in the resource consumption
for named vs. unnamed semaphore. I mean that after sem_open(3) call, an
open file descriptor is not kept in the process fd table. The semaphore
is represented by the mmaped page, libc+kernel operate solely on the
page content and use umtx(2) to implement counted semaphore.

In other words, no, there is no additional overhead of starting
connection when using either named or unnamed (sem_init(3)) POSIX
semaphores on FreeBSD, and there is no any open files overhead.

That said, the problem with the SysV semaphores is that API allows
operations on arbitrary sets of the semaphores. Unless some unordinary
and complex measures are taken, implementation has to use global
internal lock to synchronize semop(2). This is what I noted in the
paper.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Stephen Frost
Дата:
Сообщение: Re: pg_dump doesn't dump new objects created in schemas from extensions
Следующее
От: Tom Lane
Дата:
Сообщение: Re: pg_dump doesn't dump new objects created in schemas from extensions