JVM не может выделить XMS под Suse SLES10 X64, работающим на VMWare ESX

Я пытаюсь выделить оперативную память с xms = xmx на sles10 x64, работающем под управлением VMware.

При остановке JVM возникает следующая ошибка:

Java HotSpot(TM) 64-Bit Server VM warning: Failed to reserve shared memory (errno = 12).

The RAM of the VM is 8 GB and they are reserved.

Виртуальная машина видит 8 ГБ, и ее можно выделить во время выполнения с помощью параметра XMX.

На другом Virtual SLES10 с 16 ГБ ОЗУ, зарезервированным через VMWare, у меня нет проблем с выделением ОЗУ, даже при настройке огромных страниц и shmax только с помощью эха все работает нормально.

эхо 8000 > /proc/sys/vm/nr_hugepages

эхо 8589934592 > /proc/sys/kernel/shmmax

Использование команд echo на другом SLES10 вообще не дает никакого эффекта в /proc/meminfo.

вот мои конфиги 1-й на SLES10 где XMS не может выделить.

 # more /apps/liferay-portal-5.2.5/tomcat-5.5.27/bin/setenv.sh
JAVA_HOME=/apps/java5
JRE_HOME=/apps/java5
JAVA_OPTS="$JAVA_OPTS -Xms3G -Xmx3G -XX:NewRatio=3 -XX:MaxPermSize=256m -XX:SurvivorRatio=20 -Dsun.rmi.dgc.client.gcInterval=1800000 -Dsun.rmi.dgc.server.gcInterval=1800000 -XX:+UsePa
rallelGC -XX:ParallelGCThreads=4 -XX:+UseLargePages -Xloggc:/apps/gc.log -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGC -XX:+PrintGCTimeStamps -
XX:+PrintGCDetails -Dfile.encoding=UTF8 -Duser.timezone=GMT+2 -Djava.security.auth.login.config=$CATALINA_HOME/conf/jaas.config -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_C
LEAR_REFERENCES=false"


more /etc/sysctl.conf
kernel.shmmax=7516192768
vm.nr_hugepages=3072
vm.hugetlb_shm_group=1000

more /etc/securtiy/limits.conf

#                 
#

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4
*                soft    memlock         unlimited
*                hard    memlock         unlimited
tomcat           soft    memlock         6291456
tomcat           hard    memlock         6291456
# End of file


 # cat /proc/meminfo
MemTotal:      7928752 kB
MemFree:        737004 kB
Buffers:             0 kB
Cached:         417368 kB
SwapCached:          0 kB
Active:         487428 kB
Inactive:       324072 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:      7928752 kB
LowFree:        737004 kB
SwapTotal:     2097144 kB
SwapFree:      2097020 kB
Dirty:               0 kB
Writeback:           0 kB
AnonPages:      397208 kB
Mapped:          72180 kB
Slab:            62136 kB
CommitLimit:   2915792 kB
Committed_AS:   748576 kB
PageTables:       3292 kB
VmallocTotal: 34359738367 kB
VmallocUsed:      7028 kB
VmallocChunk: 34359731271 kB
HugePages_Total:  3072
HugePages_Free:   2305
HugePages_Rsvd:    897
Hugepagesize:     2048 kB

# ipcs -l

Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 7340032
max total shared memory (kbytes) = 4611686018427386880
min seg size (bytes) = 1

Semaphore Limits --------
max number of arrays = 1024
max semaphores per array = 250
max semaphores system wide = 256000
max ops per semop call = 32
semaphore max value = 32767

Messages: Limits --------
max queues system wide = 16
max size of message (bytes) = 65536
default max size of queue (bytes) = 65536

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 65536
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 65536
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

На второй ВМ это выглядит так

cat /proc/meminfo
MemTotal:     16190448 kB
MemFree:        176812 kB
Buffers:         52752 kB
Cached:         755256 kB
SwapCached:          0 kB
Active:         713808 kB
Inactive:       425300 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:     16190448 kB
LowFree:        176812 kB
SwapTotal:    35658896 kB
SwapFree:     35658796 kB
Dirty:             932 kB
Writeback:           0 kB
AnonPages:      333620 kB
Mapped:          79120 kB
Slab:            37492 kB
CommitLimit:  36356744 kB
Committed_AS:   646284 kB
PageTables:       3584 kB
VmallocTotal: 34359738367 kB
VmallocUsed:     23500 kB
VmallocChunk: 34359713907 kB
HugePages_Total:  7224
HugePages_Free:   6654
HugePages_Rsvd:    582
Hugepagesize:     2048 kB

JAVA_OPTS="$JAVA_OPTS -Xms2G -Xmx2G -XX:NewRatio=3 -XX:MaxPermSize=256m -XX:SurvivorRatio=20 -Dsun.rmi.dgc.client.gcInterval=1800000 -Dsun.rmi.dgc.server.gcI
nterval=1800000 -XX:+UseParallelGC -XX:ParallelGCThreads=2 -XX:+UseLargePages -Xloggc:/apps/gc.log -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplication
ConcurrentTime -XX:+PrintGC -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Dfile.encoding=UTF8 -Duser.timezone=GMT+2 -Djava.security.auth.login.config=$CATALINA
_HOME/conf/jaas.config -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false"

hepide01pep1:~ # ipcs -l

------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 8388608
max total shared memory (kbytes) = 4611686018427386880
min seg size (bytes) = 1

------ Semaphore Limits --------
max number of arrays = 1024
max semaphores per array = 250
max semaphores system wide = 256000
max ops per semop call = 32
semaphore max value = 32767

------ Messages: Limits --------
max queues system wide = 16
max size of message (bytes) = 65536
default max size of queue (bytes) = 65536



person macbert    schedule 25.08.2010    source источник


Ответы (2)


Я столкнулся с этой проблемой (ошибка 12) в CentOS 5.9, а также с использованием кучи 16G.

Убедившись, что жесткие/мягкие блокировки памяти не ограничены в /etc/security/limits.conf и по-прежнему получаю ошибку, я начал запускать java -version, как предложил Анил, со всеми моими JAVA_OPTS нетронутыми.

Я обнаружил, что удаление опции «-XX:+UseLargePages» избавляет от этой ошибки.

Я надеюсь, это поможет вам!

person Cory Webb    schedule 01.07.2013
comment
Спасибо Кори! Я также удалил параметр -XX:+UseLargePages после того, как не смог найти лучшего решения. - person macbert; 06.08.2013

Вы пробовали с меньшим размером кучи .. может быть с 2гиг. Вы можете просто попробовать java -Xmx3G -version . Дайте нам знать, как это работает и что выдает.

person Anil Vishnoi    schedule 25.08.2010
comment
На первой машине вы пытаетесь выделить всего 3g+256M= 3,25 гигабайта, но на второй вы выделяете 2g+256m=2,25 м. Так что лучше протестировать обе машины с одинаковым размером кучи. Но в любом случае 2,25 или 3,25, обе должны работать с 64-битной JDK. Можете ли вы сообщить мне версию JDK, которую вы используете. - person Anil Vishnoi; 25.08.2010
comment
Тем временем я провел несколько тестов и, наконец, смог выделить 2900 м, но не 3 ГБ. После установки огромных страниц на 3200. На другом хосте я уменьшил огромные страницы с 8000 до 3200 и теперь смог выделить только 2900 м. Восстановив количество страниц до 8000, я снова могу выделить 4 ГБ. Позже я проверю, какая версия и попробую еще раз с более короткой командной строкой. - person macbert; 26.08.2010
comment
java.runtime.name Java(TM) 2 Runtime Environment, Standard Edition java.runtime.version 1.5.0_22-b03 java.specification.name Спецификация API платформы Java java.specification.vendor Sun Microsystems Inc. java.specification.version 1.5 - person macbert; 26.08.2010
comment
Я провел еще один тест с JAVA_HOME=/apps/java5 JRE_HOME=/apps/java5 JAVA_OPTS=$JAVA_OPTS -Xms4G -Xmx4G -XX:MaxPermSize=256m -XX:+UseLargePages -Dfile.encoding=UTF8 -Duser.timezone=GMT+2 -Djava.security.auth.login.config=$CATALINA_HOME/conf/jaas.config -Dorg.apache.catalina.loader.WebappClassLoader.ENABL E_CLEAR_REFERENCES=false и 3200 страниц - все та же проблема. - person macbert; 26.08.2010
comment
Сделал еще один тест с java6 - та же проблема hepide01pep1:/apps/liferay-portal-5.2.5/tomcat-5.5.27/bin # ./shutdown.sh Использование CATALINA_BASE: /apps/liferay-portal-5.2.5/tomcat- 5.5.27 Использование CATALINA_HOME: /apps/liferay-portal-5.2.5/tomcat-5.5.27 Использование CATALINA_TMPDIR: /apps/liferay-portal-5.2.5/tomcat-5.5.27/temp Использование JRE_HOME: /apps/java6 Предупреждение виртуальной машины 64-разрядного сервера Java HotSpot™: не удалось зарезервировать общую память (errno = 12). - person macbert; 26.08.2010
comment
Если не использовать -XX:+UseLargePages, ошибка не возникает, но я думаю, что это не очень хорошо для производительности. - person macbert; 26.08.2010