SGE中SGI机器上的失控cpu负载

时间:2016-09-23 17:45:48

标签: c++ linux multithreading

我们在sgi uv 2000(smp)w 256超线程核心(128物理)上运行oge 2011.11。当我们在系统上运行openmp作业时,它运行正常。这是工作:

updated_at

现在正在执行:

[c ++] $ ./OMPtest OpenMP最多使用256个线程 为矩阵分配106105660448字节 进入主循环 OpenMP循环使用256个线程 循环完成

然而,当我使用以下(并且到目前为止任何)并行环境在队列中提交它时,cpu上的负载从屋顶射出(远远超过256),系统变得完全没有响应并且必须是电源循环。这是我的环境:

[c ++] $ qconf -sp threaded pe_name线程化 插槽10000 user_lists NONE xuser_lists无 start_proc_args / bin / true stop_proc_args / bin / true allocation_rule $ pe_slots control_slaves为FALSE job_is_first_task是的 urgency_slots分钟 accounting_summary TRUE

我已经更改了control_slaves,job_is_first_task,slot(减少到140以下,140以上的任何东西,我得到了之前描述的失控负载条件)我甚至使用了我创建的不同并行环境。我还将队列中的插槽数减少到140,但负载仍然会耗尽并锁定机器。最后,我尝试过多次迭代,但这里是我的qsub脚本:

updated_at

最后,由于无限制的处理器/插槽总是让mahcine崩溃,我已经指定:

billing_name

任何高于139的东西都会使机器崩溃,但mcelog或/ var / log / messages中没有输出。任何有关可能发生的事情的见解都将非常感激!

1 个答案:

答案 0 :(得分:0)

我自己解决了。添加了" -V"脚本中的选项将环境变量推送到oge / sge,因为作业在调度程序之外的环境中运行得很好。它每次都没有崩溃。可以通过消除/试错过程追踪导致问题的变量,但我有很多变量。总结一下," -V"解决了很多问题,特别是如果你的工作在OGE / SGE之外运行得很好。