【问题标题】:matlabpool(open...) hangs for 25+ minutes before starting workersmatlabpool(open...) 在启动工人之前挂起 25 分钟以上
【发布时间】:2014-02-18 23:49:45
【问题描述】:

我最近遇到了一个问题,即命令 matlabpool('open', 'local', 8) 在启动工作程序之前挂起大约 27 分钟。在延迟期间,Windows 任务管理器显示单个 MATLAB.exe 进程消耗零 CPU,内存使用或 PF Delta 没有变化,并且使用的物理 RAM 不到 25%。

我尝试在打开命令之前输入distcomp.feature( 'LocalUseMpiexec', false) 和matlabpool close force local,但仍然存在问题。直到最近,打开命令只需要一两分钟即可完成。我没有进行任何配置更改,但在 IT 部门管理的环境中工作,因此无法确定可能对 OS/AV/etc 进行了哪些维护更新。

谁能确定为什么会发生这种挂断?

我正在使用带有 Java 1.6.0_25-b0 的 matlab 版本 8.1.0.604 (R2013a)。我也看到了使用 Java 1.6.0_17-b04 的问题。运行 Windows 7 Enterprise Version 6.1.7601 Service Pack 1 Build 7601。PC 具有双 Intel Xeon CPU(12 核)和 24 GB RAM。

我使用调试器单步执行并确定在 CJSSupport.m 文件的第 507 行调用cjsPrepareForSubmission 之前没有延迟。如果此时我执行“步入”,一旦显示没有变化,除了“执行指针”从绿色箭头变为白色箭头。第二个“步骤”调出包含 class def (Hidden, Sealed) JobInitData 的 JobInitData.m 文件,它隐藏了实际的实现。

“步入”7 次以上可以毫无延迟地将变量 plainTextForBatchJob 和 plainTextForInteractiveJob 添加到工作区。在第 8 次“进入”时,matlab 主窗口中指示的状态变为忙碌状态,并保持这种状态超过 25 分钟。在状态最终在调试器中更改为停止后,您可以点击继续,工作人员立即启动,进程完成,不会有额外的延迟。

从公开调用到隐藏问题区域的调用树:

matlabpool(‘open’, ‘local’, 8)
Matlabpool.m   139: matlabpoolOut = MatlabpoolHelper.doMatlabpool(parsedArgs,parsedArgs.ActionArgs.Scheduler);
MatlabPoolHelper.m  137:  MatlabpoolHelper.doOpen(sched, parsedArgs.ActionArgs);
MatlabPoolHelper.m  363: client.start('matlabpool', parsedOpenArgs.NumLabs, sched, 'nogui', parsedOpenArgs.FileDependencies);
InteractiveClient.m 279:  submit(obj.ParallelJob);
Job.m 302: job.submitOneJob();
CJSCommunicatingJob.m 82: job.Parent.hSubmitCommunicatingJob( job, job.Support, job.SupportID );
hSubmitCommunicatingJob.m  27: jobSupport.prepareJobForSubmission( job, jobSupportID );
CJSSupport.m 507 : cjsPrepareForSubmission( job, obj, jobSId );
JobInitData.m 8:  (HIDDEN)

【问题讨论】:

    标签: matlab parallel-processing


    【解决方案1】:

    问题是由于一个过时的环境变量 LM_LICENSE_FILE 指向不再在网络上的 PC。

    使用进程监视器;我们已经在 MATLAB 中发现了这个问题。我们能够看到 MATLAB 在 26 分钟内尝试连接到端口 1717 上的 IP 地址。该 IP 地址最终成为另一个产品的许可证服务器的旧位置,该位置是通过 LM_LICENSE_FILE 设置的。一旦我们删除了 LM_LICENSE_FILE 环境变量,问题就停止了(我们的 MATLAB 是通过另一种方法获得许可的;许可目录中的许可文件)。

    显然 MATLAB 会尝试首先使用 LM_LICENSE_FILE 中的任何服务器,并且如果无法访问该服务器,则会有极长的超时时间 - 约 26 分钟。超时后,它会搜索查找许可证定义的其他方法,然后成功。

    可以通过设置环境变量“LM_LICENSE_FILE=171​​7@137.400.200.1”来复制问题。选择的 IP 地址是任意的,但不应连接 PC。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多