PostgreSQL チューニング カーネルリソース

18.4. カーネルリソースの管理

共有メモリ 128MB
/etc/sysctl.conf

# shmall=shmmax/4096
kern.ipc.shmall=32768
kern.ipc.shmmax=134217728
kern.ipc.semmap=256
kern.ipc.shm_use_phys=1

/boot/loader.conf

kern.ipc.semmni=256
kern.ipc.semmns=512
kern.ipc.semmnu=256

確認

# sysctl -a | grep ipc.shm
# sysctl -a | grep ipc.semm

SEMMNI セマフォ識別子の最大数(つまりセット) 最低ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16)
SEMMNS システム全体のセマフォの最大数 ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16) * 17 + 他のアプリケーション用の空間

max_connections=100
autovacuum_max_workers=3
max_worker_processes=8
だと
SEMMNI=最低ceil((100 + 3 + 8 + 5) / 16)=最低8
SEMMNS=ceil((100 + 3 + 8 + 5) / 16) * 17 + 他のアプリケーション用の空間=136 + 他のアプリケーション用の空間

FreeBSD11.1
kern.ipc.semmni: 50
kern.ipc.semmns: 340
kern.ipc.semmnu: 150

共有メモリ

(使用量確認)
# ipcs -a

SEGSZ

1048576(=1024*1024)で除算してMBに変換

kern.ipc.shm_use_phys

try setting:

sysctl kern.ipc.shm_use_phys=1

http://unix.derkeiler.com/Mailing-Lists/FreeBSD/stable/2008-03/msg00410.html

kern.ipc.shm_use_phys sysctl は、デフォルトが 0 (オフ) であり、
0 (オフ) または 1 (オン) にセットすることができます。
このパラメータを 1 にセットすると、全ての System V 共有メモリセグメントが
ページング不可の物理メモリにマップされます。
これは、(A) 大量 (数百) のプロセス間で少量の共有メモリを
マッピングしているか、(B) 任意個のプロセス間で大量の共有メモリを
マッピングしている、のいずれかの場合に効果があります。
この機能は、共有メモリをスワップ不可にすることで、
共有メモリをコアに結び付ける時に生じる、
カーネルにおける内部のメモリ管理によるページ追跡 オーバヘッドをかなり減らします。

tuning(7) FreeBSDドキュメントJMan

また、共有メモリをRAM上に残し、スワップへのページアウトを
行わせないようにさせたいかもしれません。
これはsysctlのkern.ipc.shm_use_phys設定を使用して実現できます。

18.4. カーネルリソースの管理

kern.ipc.semmap は削除された

This has been removed in r224016:
http://svnweb.freebsd.org/base/head/sys/kern/sysv_sem.c?r1=223825&r2=224016

http://freebsd.1045724.x6.nabble.com/About-kern-ipc-semmap-on-FreeBSD-9-td5586992.html