为什么我看到内存使用量的增加我的工人保持运行作业先后当使用分布式计算工具箱?

5视图(30天)
我使用分布式计算工具箱运行在多个服务器上模拟和工人。我运行工作先后杀死每个工作后使用摧毁命令完成。
我看到内存使用工人的数量逐渐增加工作完成。最终,我得到了“内存不足”的例外。

接受的答案

MathWorks支金宝app持团队
MathWorks支金宝app持团队 2016年11月21日
分布式计算工具箱中的破坏命令删除工作对象引用或任务从本地会话对象引用,和从作业管理器中删除对象的内存。
破坏(obj)
然而,当工作完成后,它仍在作业管理器即使你清除所有的对象从客户机会话。作业管理器保持所有的工作已经执行,直到你重新启动作业管理器在一个干净的状态。
此外,任务运行在工人可能分配的内存不释放:全球或持久变量,锁定功能,内存泄漏或在墨西哥人持久数据文件,等等。
破坏工作或任务后,您可以启动一个工人使用RestartWorker财产。然后内存返回给工人。你可以设置RestartWorker为true(或逻辑1)如果你想要这份工作重新启动会话MATLAB在任何工人工作前评估他们的首要任务。
例如,提交下列工作主要工作完成后将迫使所有的工人重新启动他们的MATLAB实例:
函数forceRestartAllWorkers(固定播送时间)
%这个函数完成之后,MDCE
%重启每个工人。论点应该固定播送时间
%是一个调度程序对象,也就是说,的结果
% findResource操作。
memFlushJob = createParallelJob(固定播送时间,“RestartWorker”,真正的);
t = createTask (memFlushJob @()真的,0,{});
提交(memFlushJob);
waitForState (memFlushJob);
破坏(memFlushJob);
结束
更多信息可以在以下网址找到:

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!