如何阻止Ubuntu杀死长时间的程序

时间:2019-02-22 15:30:42

标签: r matlab ubuntu operating-system

我用大数据进行研究。我试图通过使用并行编程和使用有效的软件包来减少计算和时间的复杂性。但是,我在R或MATLAB中的程序需要很长时间才能回答。大多数时候,我面临着从OS杀死程序的问题。有没有可能强迫操作系统(尤其是Ubuntu)杀死我的进程?我查看了以下链接等相关问题。但是我没有找到任何适用的建议。

Ubuntu is killing my computations

Stop OS from killing my Process

1 个答案:

答案 0 :(得分:0)

Ubuntu不仅会像在Windows上预期的那样随机重启。

最可能的原因是您正在进行段错误(由于某些内存泄漏或代码中的访问问题),或者系统上的内存不足,这导致程序崩溃。最终结果是Matlab或R关闭,看起来像“ Ubuntu杀死了我的程序”,而实际上,Matlab或R由于自身的内部错误而崩溃了。

FWIW我已经看到Matlab崩溃(当我用完RAM时)和段错误。

正确的解决方法是诊断这种情况的发生原因。为此,您应该配置代码:https://www.mathworks.com/help/matlab/ref/profile.html

具体地说,

profile on
% Long running code... 

然后过一会儿CTRL + C来停止代码,然后编写profile viewer。可能会帮助您查找有问题的代码(我忘记了Matlab是否跟踪内存使用情况,但我怀疑这是问题所在)。大概过一会儿您就可以看到问题了。

如果确实是由于某些矩阵无限制增长而导致的内存问题,那么您将需要修改代码来处理它。在攻读博士学位期间,我必须运行许多长时间运行的模拟(需要花费数天的时间),而且我不得不想出一种很好的方法将工作保存在中间点,以便在计算机崩溃时可以监视进度并恢复结果。 (很有趣的是,我当时在Windows上运行了DID,因此Windows重新启动问题确实存在)。

通常,您会发现可以像下面这样构造代码:

for i = 1...
    // Do something
    // Save to a file with a descriptive pattern 
    // Don't try to save everything, just save the results of a iteration
end  

// Now that everything has run, 
// let's load all of those files and generate some plots 
for file in files:
   // Fancy plots
end

我已经有一段时间没有写Matlab了,但是该原始代码应该为您提供一个很好的起点。