我正在尝试在 VMware 下运行的 sles10 x64 上使用 xms = xmx 分配 ram。
停止 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.
VM 看到 8GB,可以在运行时通过 XMX 设置进行分配。
在另一个通过 VMWare 保留 16 GB RAM 的 Virtual SLES10 上,即使仅通过 echo 设置大页面和 shmax,我也没有分配 RAM 的问题。
回声 8000 > /proc/sys/vm/nr_hugepages
回声 8589934592 > /proc/sys/kernel/shmmax
在其他 SLES10 上使用 echo 命令在 /proc/meminfo 中根本没有效果。
这是我的配置,第一个是 XMS 无法分配的 SLES10。
# 更多 /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" 更多 /etc/sysctl.conf kernel.shmmax=7516192768 vm.nr_hugepages=3072 vm.hugetlb_shm_group=1000 更多 /etc/securtiy/limits.conf # # #* 软核 0 #* 硬 RSS 10000 #@student hard nproc 20 #@faculty 软 nproc 20 #@faculty hard nproc 50 #ftp 硬 nproc 0 #@student - maxlogins 4 * 软内存无限制 * 无限制的硬内存 tomcat 软内存锁 6291456 tomcat 硬盘内存锁 6291456 # 文件结束 # 猫 /proc/meminfo 内存总量:7928752 kB 内存免费:737004 kB 缓冲区:0 kB 缓存:417368 kB 交换缓存:0 kB 活动:487428 kB 非活动:324072 kB 总高:0 kB 高免费:0 kB 低总计:7928752 kB 低免费:737004 kB 交换总数:2097144 kB 无交换:2097020 kB 脏:0 kB 写回:0 kB AnonPages:397208 kB 映射:72180 kB 平板:62136 kB 提交限制:2915792 kB 已提交_AS:748576 kB 页表:3292 kB Vmalloc总计:34359738367 kB Vmalloc已使用:7028 kB VmallocChunk:34359731271 kB HugePages_Total:3072 HugePages_免费:2305 HugePages_Rsvd:897 巨页大小:2048 kB # ipcs -l 共享内存限制-------- 最大段数 = 4096 最大段大小(千字节)= 7340032 最大总共享内存 (kbytes) = 4611686018427386880 最小段大小(字节)= 1 信号量限制-------- 最大数组数 = 1024 每个数组的最大信号量 = 250 系统范围内的最大信号量 = 256000 每个 semop 调用的最大操作数 = 32 信号量最大值 = 32767 消息:限制-------- 最大队列系统范围 = 16 消息的最大大小(字节)= 65536 队列的默认最大大小(字节)= 65536 # ulimit -a 核心文件大小(块,-c)0 数据段大小 (kbytes, -d) 无限制 文件大小(块,-f)无限制 待处理信号 (-i) 65536 最大锁定内存 (kbytes, -l) 无限制 最大内存大小 (kbytes, -m) 无限制 打开文件 (-n) 1024 管道大小(512 字节,-p)8 POSIX 消息队列(字节,-q)819200 堆栈大小(千字节,-s)8192 cpu时间(秒,-t)无限制 最大用户进程 (-u) 65536 虚拟内存 (kbytes, -v) 无限制 文件锁 (-x) 无限制
在第二个 VM 上,它看起来像这样
猫 /proc/meminfo 内存总量:16190448 kB 内存免费:176812 kB 缓冲区:52752 kB 缓存:755256 kB 交换缓存:0 kB 活动:713808 kB 非活动:425300 kB 总高:0 kB 高免费:0 kB 低总计:16190448 kB 低免费:176812 kB 交换总数:35658896 kB 无交换:35658796 kB 脏:932 kB 写回:0 kB AnonPages:333620 kB 映射:79120 kB 平板:37492 kB 提交限制:36356744 kB 已提交_AS:646284 kB 页表:3584 kB Vmalloc总计:34359738367 kB Vmalloc已使用:23500 kB VmallocChunk:34359713907 kB HugePages_Total:7224 HugePages_免费:6654 HugePages_Rsvd:582 巨页大小: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 ------ 共享内存限制-------- 最大段数 = 4096 最大段大小(千字节)= 8388608 最大总共享内存 (kbytes) = 4611686018427386880 最小段大小(字节)= 1 ------ 信号量限制 -------- 最大数组数 = 1024 每个数组的最大信号量 = 250 系统范围内的最大信号量 = 256000 每个 semop 调用的最大操作数 = 32 信号量最大值 = 32767 ------ 消息:限制 -------- 最大队列系统范围 = 16 消息的最大大小(字节)= 65536 队列的默认最大大小(字节)= 65536