Re: Could we replace SysV semaphores with latches?

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: Could we replace SysV semaphores with latches?
Дата
Msg-id 4FD05759.5060900@enterprisedb.com
обсуждение исходный текст
Ответ на Could we replace SysV semaphores with latches?  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: Could we replace SysV semaphores with latches?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
On 07.06.2012 07:09, Tom Lane wrote:
> There has been regular griping in this list about our dependence on SysV
> shared memory, but not so much about SysV semaphores, even though the
> latter cause their fair share of issues; as seen for example in
> buildfarm member spoonbill's recent string of failures:
>
> creating template1 database in /home/pgbuild/pgbuildfarm/HEAD/pgsql.25563/src/test/regress/./tmp_check/data/base/1
...FATAL:  could not create semaphores: No space left on device
 
> DETAIL:  Failed system call was semget(1, 17, 03600).
> HINT:  This error does *not* mean that you have run out of disk space.  It occurs when either the system limit for
themaximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be
exceeded. You need to raise the respective kernel parameter.  Alternatively, reduce PostgreSQL's consumption of
semaphoresby reducing its max_connections parameter.
 
>     The PostgreSQL documentation contains more information about configuring your system for PostgreSQL.
> child process exited with exit code 1
>
> It strikes me that we have recently put together an independent but just
> about equivalent waiting mechanism in the form of latches.  And not only
> that, but there's already a latch for each process.  Could we replace
> our usages of SysV semaphores with WaitLatch on the procLatch?  Unlike
> the situation with shared memory where we need some secondary features
> (mumble shm_nattch mumble), I think we aren't really using anything
> interesting about SysV semaphores except for the raw ability to wait for
> somebody to signal us.

Would have to performance test that carefully. We use semaphores in 
lwlocks, so it's performance critical. A latch might well be slower, 
especially on platforms where a signal does not interrupt sleep, and we 
rely on the signal handler and self-pipe to wake up.

Although perhaps we could improve the latch implementation. pselect() 
might perform better than the self-pipe trick, on platforms where it works.

--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Could we replace SysV semaphores with latches?
Следующее
От: Sandro Santilli
Дата:
Сообщение: Re: Interrupting long external library calls