繁体   English   中英

这是memory不足造成的吗?

[英]Is this caused by insufficient memory?

这个问题是我用chipyard编译Boom的时候出现的。 这是因为memory不足吗? 我在 1 核 2G 云服务器上运行。

/bin/bash: line 1: 9986 Killed 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 ";项目实用程序;runMain utility.GenerateSimFiles -td /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard. TestHarness.LargeBoomConfig -sim verilator" /home/cuiyujie/workspace/Boom/chipyard/common.mk:86: 目标配方'/home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness .LargeBoomConfig/sim_files.f' 失败 make: *** [/home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/sim_files.f] 错误 137

当我将memory调到4G时,出现了这个。

阐述完毕。 OpenJDK 64 位服务器 VM 警告:INFO: os::commit_memory(0x00000006dc3b7000, 97148928, 0) 失败; error='无法分配内存' (errno=12)

Java 运行时环境没有足够的 memory 继续。 本机 memory 分配(mmap)未能提交 map 97148928 字节,用于提交保留的 memory。 包含更多信息的错误报告文件保存为: /home/cuiyujie/workspace/Boom/chipyard/hs_err_pid2876.log /home/cuiyujie/workspace/Boom/chipyard/common.mk:97: recipe for target 'generator_temp' failed make : *** [generator_temp] 错误 1

我应该调整到8G memory,还是通过什么命令增加进程可以使用的memory大小?

当我将memory调到16G时,出现了这个。

/bin/bash: line 1: 2642 Killed 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.TestH arness.LargeBoomConfig.anno.json -tsaof /home/cuiyujie/workspace/Boom/chipyard/sims/verilator/generated-src/chipyard.TestHarness.LargeBoomConfig/chipyard.TestHarness.LargeBoomConfig.top.anno.Z466DEEC76ECDF54FCA6D38 -tdf76ECDF54FCA6D38 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/生成-src/chipyard.TestHarnes s.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 error" /home/cuiyujie/workspace/Boom/chipyard/common. mk:123: 目标 'firrtl_temp' 的配方失败 make: *** [firrtl_temp] 错误 137

简短回答:是的


当您的主机用完 memory时,将引发Error 137

“我在 1 核2G云服务器上运行”

当您尝试将8GB分配给 JVM 时, OOM-Killer会说“不,不,f...没办法” ,并开始发送SIGKILL 这个 Killer 是一个主动进程,当它的 memory 级别过低时,它会通过杀死资源滥用进程来拯救系统

在这种情况下,滥用进程(确实非常滥用)是您的 java 程序,它试图分配超过(*) 4 倍于您主机中最大可用 memory 的程序

具有特殊含义的退出代码

在此处输入图像描述

                 [error code 137 --> kill -9] (SIGKILL)

您应该:

  • 最多为您的进程分配 ~ 1.2GB - 1.5GB 并保持你的手指交叉

  • 如果您的进程确实需要那么多 memory,请将您的主机更改为更强大/更大的东西。

  • 检查您是否真的需要 8GB 来执行该过程


另请注意,给定的参数容易出错:Xmx8G -Xss8M 表示堆的最大值为 8GB,最小值为 8M。 这应该更接近,因为Xmx8G - Xms4G

*因为免费的 memory 也不会是 2GB,而是介于 1.6-1.8 GB 之间

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM