LINUX.ORG.RU

История изменений

Исправление zensey, (текущая версия) :

Я имел в виду обычные большие страницы, не транспарентные, которые по умолчанию отключены. В десктопных приложениях разница не заметна. Предназначено в основном для серверов. Насчет экономии памяти, признаюсь, был неправ, оказалось что в java при включении механизма HugePages уменьшается потребление резидентной памяти, но зато увеличивается потребление из пула больших страниц, который использует разделяемую память, что я и упустил из виду. Правда положительные эффекты все же есть: меньше нагрузка на процессорный кеш и TLB, быстрее переключаются контексты задач. Из СУБД, поддерживающих HugePages, эффект ощутим на Oracle.

Пример с тестовой среды:

$ cat /etc/sysctl.d/30-postgresql-shm.conf
#memory settings for PostgreSQL on Linux

# Maximum size of a single shared memory segment in bytes
#kernel.shmmax = 33554432

# Maximum total size of all shared memory segments in pages (normally 4096 bytes)
#kernel.shmall = 2097152

#(2000 + 800) * 2Mb == 5400 Mb
vm.nr_hugepages = 2800

WildFly: standalone.conf

JAVA_OPTS="-Xms64m -Xmx512m -XX:MaxPermSize=256m -XX:+UseLargePages -Djava.net.preferIPv4Stack=true"

Исходная версия zensey, :

Я имел в виду обычные большие страницы, не транспарентные, которые по умолчанию отключены. В десктопных приложениях разница не заметна. Предназначено в основном для серверов. Насчет экономии памяти, признаюсь, был неправ, оказалось что в java при включении механизма HugePages уменьшается потребление резидентной памяти, но зато увеличивается потребление из пула больших страниц, который использует разделяемую память, что я и упустил из виду. Правда есть и положительные эффекты: меньше нагрузка на процессорный кеш и TLB, быстрее переключаются контексты задач. Из СУБД, поддерживающих HugePages, эффект ощутим на Oracle.

Пример с тестовой среды:

$ cat /etc/sysctl.d/30-postgresql-shm.conf
#memory settings for PostgreSQL on Linux

# Maximum size of a single shared memory segment in bytes
#kernel.shmmax = 33554432

# Maximum total size of all shared memory segments in pages (normally 4096 bytes)
#kernel.shmall = 2097152

#(2000 + 800) * 2Mb == 5400 Mb
vm.nr_hugepages = 2800

WildFly: standalone.conf

JAVA_OPTS="-Xms64m -Xmx512m -XX:MaxPermSize=256m -XX:+UseLargePages -Djava.net.preferIPv4Stack=true"