我在Sun Engine群集中运行了500个作业,而且我遇到了一些问题(群集管理员暂停了我的工作,因为我过度生成了CPU)。代码是用Java编写的。
当我在我的电脑上运行其中一个作业(Ubuntu 14.04),并使用htop
命令查看正在进行的操作时,我得到了这个:
我已经看到那些不是单独的进程,而是线程。代码不生成线程,但它们可能是一些Java线程(如垃圾收集器)。第一个问题是:当我在集群上运行相同的测试并使用htop时,我有更多的线程/进程,大约50个(只有一个作业)。有人知道为什么会这样吗?
我在qsub中使用以下选项:
qsub -t 1-500 -l h_rt=05:00:00 -l h_cpu=05:00:00 -l h_vmem=6G -e /some_path/ -o /some_path/ -N all_runs -cwd -m as -M mail@mail ./run.sh
(在run.sh
我指定了所有工作。)
使用此qsub
命令,每个作业获得1个插槽,并且CPU的使用有时为150 - 200%( - > 1个插槽是不够的)。我看到群集具有并行环境,因此可以为每个作业分配更多的插槽。这可以通过向-pe smp 4
命令添加qsub
(或其他一些数字)来完成。
你怎么知道你需要多少个插槽?并且,-pe smp 4
将严格限制为最多4个插槽?我的意思是,当一个作业有1个插槽,并且CPU的使用率是200%时,它会影响其他用户的工作。我想确保不会发生这种情况。
如果遗漏了一些重要信息,请告诉我,我会将其添加。