Пишут, что начиная с 9.3 для shared buffers вместо shared memory начал использоваться mmap (и ручек для отключения в конфиге не видно):
http://www.postgresql.org/docs/9.3/static/release-9-3.html

Для пользователей freebsd это насколько понимаю приведет к заметному падению производительности. Вот сообщение про коллег из Dragonfly, но они пишут что под FreeBSD то же самое:
http://lists.dragonflybsd.org/pipermail/kernel/2012-September/000004.html

Раньше можно было написать в sysctl.conf
kern.ipc.shm_use_phys=1
и это позволяло оптимизировать работу с этой памятью за счет того, что
1. она никогда не свопится. если повезло и произошел superpage promotion, то demotion уже не случился (а долгоживущие буфера, которые можно свопить рано или поздно фрагментируются, и никаких superpages там не будет). 2. если N процессов, используют один shared memory segment, то на каждую страницу памяти будет N PV entry в случае shm_use_phys=0 и одна PV entry в случае shm_use_phys=1 (там почти все и делают для PostgreSQL).

В случае mmap насколько понимаю все будет так же плохо, как с shared memory + shm_use_phys=0 а именно на каждую страницу буфера будет много PV entry (по числу процессов), что увеличивает расход памяти (и вымывание кешей CPU).

достаточно, чтобы память под shared buffer хотя бы один раз и частично попала в сфоп, и в физической памяти она будет фрагментирована, и superpages использоваться уже не будут.

Отсюда такой вопросы:

1. Если в master-е сделать mmap + mlock будет ли такой же эффект как shm_use_phys=0 ?

2. Нет ли желающих послать разработчикам postgresql патчи с добавлением mlock ?

Ответить