2010-08-25 30 views
1

J'essaie d'allouer ram avec xms = xmx sur un sles10 x64 fonctionnant sous VMware.JVM ne parvient pas à allouer XMS sous Suse SLES10 X64 s'exécutant sur VMWare ESX

Lors de l'arrêt de la machine virtuelle Java l'erreur suivante est générée:

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. 

La VM voit 8 Go et il peut être attribué lors de l'exécution par le réglage XMX.

Sur un autre SLES10 virtuel avec 16 Go de RAM Réservé via VMWare Je n'ai pas de problème avec l'allocation de RAM même lors du réglage des hugepages et shmax seulement par écho ça marche bien.

echo 8000>/proc/sys/vm/nr_hugepages

écho 8589934592>/proc/sys/kernel/shmmax

En utilisant les commandes d'écho sur l'autre SLES10 montrent aucun effet dans/proc/meminfo du tout.

voici mes configs 1er sur est le SLES10 où XMS ne parvient pas à allouer.

 
# 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 

Sur la seconde machine virtuelle, il ressemble à ceci

 
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 


Répondre

2

Avez-vous essayé avec la taille moins de tas .. peut être avec 2gig. Vous pouvez simplement essayer avec java -Xmx3G -version .Laissez-nous savoir comment ça va et ce qu'il crache.

+0

Dans la première machine que vous essayez d'allouer total 3g + 256M = 3.25gig, mais dans la seconde vous allouez 2g + 256m = 2.25m.So mieux tester les deux machines avec la même taille de tas.Mais de toute façon 2.25 ou 3.25, les deux devraient travailler avec 64bit JDK.Pouvez-vous me faire savoir la version JDK utilisez-vous. –

+0

Pendant ce temps, j'ai fait quelques tests et finalement pourrait allouer 2900m mais pas 3gb Après avoir réglé les hugepages à 3200. Sur l'autre hôte j'ai réduit les énormespages à 3200 de 8000 et maintenant seulement pourrait allouer 2900m. Restaurer les pages à 8000 je peux maintenant allouer 4gb à nouveau. Je vais vérifier plus tard la version et essayez à nouveau avec la ligne de commande plus courte – macbert

+0

de java.runtime.name \t Java (TM) 2 Runtime Environment, Standard Edition java.runtime.version \t 1.5.0_22-b03 java.specification.name \t Java API Platform Spécification java.specification.vendor \t Sun Microsystems Inc. java.specification.version \t 1.5 – macbert

1

Je suis tombé sur ce problème (errno 12) sur CentOS 5.9 en utilisant des tas de 16G. Après avoir vérifié que les verrous mémoire durs/mous étaient illimités dans le fichier /etc/security/limits.conf et que j'obtiens toujours l'erreur, j'ai commencé à exécuter java -version comme suggéré par Anil, avec tous mes JAVA_OPTS intacts.

J'ai trouvé que la suppression de l'option "-XX: + UseLargePages" permet de se débarrasser de cette erreur.

J'espère que cela vous aide!

+0

Merci Cory! J'ai supprimé l'option "-XX: + UseLargePages" après que je n'ai pas trouvé de meilleure solution. – macbert