Incorrect formula for SysV IPC parameters

Поиск
Список
Период
Сортировка
От Kyotaro HORIGUCHI
Тема Incorrect formula for SysV IPC parameters
Дата
Msg-id 20160203.125119.66820697.horiguchi.kyotaro@lab.ntt.co.jp
обсуждение исходный текст
Ответы Re: Incorrect formula for SysV IPC parameters  (Fujii Masao <masao.fujii@gmail.com>)
Список pgsql-hackers
Hello, I found that the formulas to calculate SEMMNI and SEMMNS
are incorrect in 9.2 and later.

http://www.postgresql.org/docs/9.5/static/kernel-resources.html

All of them say that the same thing as following,

| SEMMNI  Maximum number of semaphore identifiers (i.e., sets)
| 
|   at least ceil((max_connections + autovacuum_max_workers + 4) / 16)
| 
| SEMMNS    Maximum number of semaphores system-wide
| 
|  ceil((max_connections + autovacuum_max_workers + 4) / 16) * 17
|    plus room for other applications

But actually the number of semaphores PostgreSQL needs is
calculated as following in 9.4 and later.
 numSemas = MaxConnections + NUM_AUXILIARY_PROCS(=4) MaxConnections = max_connections + autovacuum_max_workers + 1 +
             max_worker_processes
 

So, the formula for SEMMNI should be

ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16)

and SEMMNS should have the same fix.


In 9.3 and 9.2, the documentation says the same thing but
actually it is calculated as following,
 numSemas = MaxConnections + NUM_AUXILIARY_PROCS(=4) MaxConnections = max_connections + autovacuum_max_workers + 1 +
             GetNumShmemAttachedBgworkers()
 

Omitting GetNumShmemAttachedBgworkers, the actual formula is

ceil((max_connections + autovacuum_max_workers + 5) / 16)


In 9.1, NUM_AUXILIARY_PROCS is 3 so the documentations is correct.


I attached two patches for 9.2-9.3 and 9.4-9.6dev
respectively. patch command complains a bit on applying it on
9.2.

On the platforforms that doesn't have tas operation needs
additional 1024 + 64 semaphores but I understand it as out of
scope of the documentation.

One concern is that 'at least' and 'plus room for other
applications' are mixed in the table 17-1, especially for SEMMNI
and SEMMNS. It seems to me that they should be in the same
wording, but it is not an actual problem.

regards,

-- 
Kyotaro Horiguchi
NTT Open Source Software Center

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

Предыдущее
От: Etsuro Fujita
Дата:
Сообщение: Re: Minor code improvements to create_foreignscan_plan/ExecInitForeignScan
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Raising the checkpoint_timeout limit