首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当大型程序超过内存时,Ubuntu挂起。

当大型程序超过内存时,Ubuntu挂起。
EN

Ask Ubuntu用户
提问于 2013-09-06 20:48:53
回答 1查看 1.4K关注 0票数 2

我一直在使用Ubuntu运行材料的计算模拟。有时,计算克服了机器可用的总内存,64 to内存,并开始使用交换。当这种情况发生时,Ubuntu只需停止,就有必要重新启动。在linux上运行同样的模拟,它没有发生,相反,已经停止的模拟和我在终端中有一个错误,类似于“分段错误”。是否有可能在Ubuntu中运行模拟并克服Ubuntu的止损问题,比如Slackware?

谢谢。

EN

回答 1

Ask Ubuntu用户

发布于 2013-09-06 22:06:05

如果在一个系统中运行模拟软件时会出现分段错误,而在另一个系统中运行时会出现大幅度的减速,那么您的仿真软件就不能处理内存不足的问题。任何分割错误都是错误的指示。,以及经常产生分段错误的bug实际上是代码的行为是未定义的bug。在不同的系统中,它可能以不同(错误)的方式起作用。

所以:

  • 如果您或与您一起工作的人编写了仿真软件,您应该对其进行调试,希望提高性能。我建议首先使用调试符号(gcc -g ...)编译它,然后在Slackware上进行交互调试(例如,在gdb中),以生成分段错误的堆栈跟踪。您还应该调试它以查找内存泄漏。为此,您可以使用瓦兰在检漏模式下运行的Boehm GC或其他各种工具。当然,调试它的最合适的方法将取决于它是如何工作的以及它是用什么语言编写的。
  • 如果您从一个完全独立的方获得模拟软件,您应该报告一个bug。如果您可以使用调试生成或调试符号,则包含Slackware系统上分段故障的堆栈跟踪将有利于bug报告。

您可以做一些事情来终止Ubuntu.

中的模拟。

整个系统不应该停止运转。这可能表示Ubuntu中可能存在错误,可能是在内核中。即使是大量的磁盘I/O也只能适度地减慢Ubuntu。您可能需要报告Ubuntu内核中的一个bug。

如果你想这么做的话,先读一下。然后通过运行ubuntu-bug linux (或者如果它是一个命令行系统,apport-cli linux)来启动错误报告过程。

要解决这个问题,可以尝试通过在limits.conf中指定限制来限制可用内存。另见这篇博客文章

如果问题与CPU优先级有关,您可以使用nice (例如,nice -n 15 command...)以较低的优先级运行模拟,或者在使用renice运行时降低仿真。

如果您可以在机器减速时使用它,并且需要停止模拟(有时虚拟控制台的响应比GUI更好),您可以尝试使用这个KILL信号 (这是杀死进程的最强大的方式):

代码语言:javascript
复制
kill -KILL command

这里,command只是一个单词,可执行文件的名称。使用该名称的所有可执行文件都将被杀死(因此是"killall")。如果您拥有PID (来自ps),您当然可以运行kill -KILL PID

票数 3
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/342331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档