【发布时间】: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