我最近遇到一个问题,在启动工人之前,命令matlabpool('open', 'local', 8)
挂起大约27分钟。在延迟期间,Windows任务管理器显示一个消耗零CPU的单个MATLAB.exe进程,内存使用量或PF Deltas没有变化,正在使用的物理RAM少于25%。matlabpool(open ...)在开始工作前挂起25分钟以上
我试过在打开命令之前输入distcomp.feature('LocalUseMpiexec', false)
和matlabpool close force local
但仍然存在问题。直到最近,开放命令只需要一两分钟即可完成。我没有做任何配置更改,但在IT部门管理的环境中工作,因此无法确定可能对OS/AV /等进行了哪些维护更新。
任何人都可以确定为什么这个挂机正在发生?
我在使用Java 1.6.0_25-b0的matlab版本8.1.0.604(R2013a)。我也看到了使用Java 1.6.0_17-b04的问题。运行Windows 7企业版6.1.7601 Service Pack 1 Build 7601. PC具有双Intel Xeon CPU(12核),内存为24 GB。
我单步使用调试器,并确定没有延迟,直到在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)