问题描述
这个问题是我用chipyard编译Boom的时候出现的。是不是因为内存不足?我在 1 核 2G 云服务器上运行。
/bin/bash: 第 1 行:9986 杀死 java -Xmx8G -Xss8M -XX:MaxPermSize=256M -jar /home/cuiyujie/workspace/Boom/chipyard/generators/rocket-chip/sbt-launch.jar -Dsbt.sourcemode=true -Dsbt.workspace=/home/cuiyujie/workspace/Boom/chipyard/tools ";project 实用程序; runMain 实用程序.GenerateSimFiles -td /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig -sim验证器” /home/cuiyujie/workspace/Boom/chipyard/common.mk:86:目标配方 '/home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/sim_files.f' 失败的 制作:*** [/home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/sim_files.f] 错误 137
当我把内存调到4G的时候,出现了这个。
完成详细说明。 OpenJDK 64 位服务器 VM 警告:信息: os::commit_memory(0x00000006dc3b7000,97148928,0) 失败; error='无法分配内存' (errno=12)
Java 运行时环境的内存不足,无法继续。 本机内存分配 (mmap) 未能映射 97148928 字节以提交保留内存。 包含更多信息的错误报告文件保存为: /home/cuiyujie/workspace/Boom/chipyard/hs_err_pid2876.log /home/cuiyujie/workspace/Boom/chipyard/common.mk:97:目标配方 'generator_temp' 失败 make: *** [generator_temp] 错误 1
我应该调整到8G内存,还是通过什么命令来增加进程可以使用的内存大小?
当我把内存调到16G的时候,出现了这个。
/bin/bash: 第 1 行:2642 杀死 java -Xmx8G -Xss8M -XX:MaxPermSize=256M -jar /home/cuiyujie/workspace/Boom/chipyard/generators/rocket-chip/sbt-launch.jar -Dsbt.sourcemode=true -Dsbt.workspace=/home/cuiyujie/workspace/Boom/chipyard/tools ";project tapeout; runMain bartools.tapeout.transforms.GeneratetopAndHarness -o /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/chipyard.TestHarness.LargeBoomConfig.top.v -tho /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/chipyard.TestHarness.LargeBoomConfig.harness.v -i /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/chipyard.TestHarness.LargeBoomConfig.fir --syn-top ChipTop --harness-top TestHarness -faf /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/chipyard.TestHarness.LargeBoomConfig.anno.json -tsaof /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/chipyard.TestHarness.LargeBoomConfig.top.anno.json -tdf /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/firrtl_black_Box_resource_files.top.f -tsf /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/chipyard.TestHarness.LargeBoomConfig.top.fir -thaof /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/chipyard.TestHarness.LargeBoomConfig.harness.anno.json -hdf /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/firrtl_black_Box_resource_files.harness.f -thf /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/chipyard.TestHarness.LargeBoomConfig.harness.fir --infer-rw --repl-seq-mem -c:TestHarness:-o:/home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/chipyard.TestHarness.LargeBoomConfig .top.mems.conf -thconf /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/chipyard.TestHarness.LargeBoomConfig.harness.mems.conf -td /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig -ll 错误"/home/cuiyujie/workspace/Boom/chipyard/common.mk:123: 目标 'firrtl_temp' 的配方失败 make: *** [firrtl_temp] 错误 137
解决方法
简短回答:是的
Error 137
当您的主机内存不足时抛出。
“我在 1 核 2G 云服务器上运行”
当您尝试将 8GB 分配给 JVM 时,OOM-Killer
会说“不-不,...不可能” em>,并开始发送SIGKILL
; 这个 Killer 是一个主动进程,当系统内存水平过低时,它会通过杀死资源滥用进程来拯救系统。
在这种情况下,滥用进程(非常滥用)是你的java程序,它试图分配超过(*) 4次主机中的最大可用内存。
Exit Codes With Special Meanings
[error code 137 --> kill -9] (SIGKILL)
你应该:
-
最多为您的进程分配 ~1.2GB - 1.5GB。 (保持手指交叉)
-
如果您的进程确实需要那么多内存,请将您的主机更换为更强大/更大的东西。
-
检查您是否真的需要 8GB 用于该进程。
另请注意,给定的参数容易出错:Xmx8G -Xss8M 表示堆最大为 8GB,最小为 8M。这应该更接近,因为 Xmx8G - Xms4G
*因为可用内存也不会是 2GB,而是在 1.6-1.8 GB 之间