我一直在使用Ubuntu运行材料的计算模拟。有时,计算克服了机器可用的总内存,64 to内存,并开始使用交换。当这种情况发生时,Ubuntu只需停止,就有必要重新启动。在linux上运行同样的模拟,它没有发生,相反,已经停止的模拟和我在终端中有一个错误,类似于“分段错误”。是否有可能在Ubuntu中运行模拟并克服Ubuntu的止损问题,比如Slackware?
谢谢。
发布于 2013-09-06 22:06:05
如果在一个系统中运行模拟软件时会出现分段错误,而在另一个系统中运行时会出现大幅度的减速,那么您的仿真软件就不能处理内存不足的问题。任何分割错误都是错误的指示。,以及经常产生分段错误的bug实际上是代码的行为是未定义的bug。在不同的系统中,它可能以不同(错误)的方式起作用。
所以:
gcc -g ...)编译它,然后在Slackware上进行交互调试(例如,在gdb中),以生成分段错误的堆栈跟踪。您还应该调试它以查找内存泄漏。为此,您可以使用瓦兰、在检漏模式下运行的Boehm GC或其他各种工具。当然,调试它的最合适的方法将取决于它是如何工作的以及它是用什么语言编写的。中的模拟。
整个系统不应该停止运转。这可能表示Ubuntu中可能存在错误,可能是在内核中。即使是大量的磁盘I/O也只能适度地减慢Ubuntu。您可能需要报告Ubuntu内核中的一个bug。
如果你想这么做的话,先读一下。然后通过运行ubuntu-bug linux (或者如果它是一个命令行系统,apport-cli linux)来启动错误报告过程。
要解决这个问题,可以尝试通过在limits.conf中指定限制来限制可用内存。另见这篇博客文章。
如果问题与CPU优先级有关,您可以使用nice (例如,nice -n 15 command...)以较低的优先级运行模拟,或者在使用renice运行时降低仿真。
如果您可以在机器减速时使用它,并且需要停止模拟(有时虚拟控制台的响应比GUI更好),您可以尝试使用这个KILL信号 (这是杀死进程的最强大的方式):
kill -KILL command这里,command只是一个单词,可执行文件的名称。使用该名称的所有可执行文件都将被杀死(因此是"killall")。如果您拥有PID (来自ps),您当然可以运行kill -KILL PID。
https://askubuntu.com/questions/342331
复制相似问题