我们在双 Xeon(26 核,超线程中可用 52 个)上安装了 Torque。节点配置为 np=104。如果我在命令行中启动 MPI 计算,我的 CPU 使用率接近 100%:
%Cpu:53.9 us、44.6 sy、0.0 ni、1.4 id、0.0 wa、0.0 hi、0.0 si、0.0 st
但是,如果我用这个扭矩提交文件启动相同的计算:
#!/bin/bash
#PBS -l walltime=20:00:00:00
#PBS -l nodes=1:ppn=104
#PBS -q batch
#PBS -N QE_test
cd $PBS_O_WORKDIR
/usr/lib64/openmpi/bin/mpirun -np 104 /opt/qe-6.3/bin/pw.x -inp scf.in > scf.out
CPU 使用率约为 50%:
%Cpu:32.5 us、22.9 sy、0.0 ni、44.6 id、0.0 wa、0.0 hi、0.0 si、0.0 st
你知道为什么吗?
pbsnodes -a
servername
state = free
np = 104
ntype = cluster
status = rectime=1540890927,varattr=,jobs=,state=free,netload=? 0,gres=,loadave=0.00,ncpus=52,physmem=199919700kb,availmem=193132384kb,totmem=199919700kb,idletime=343335,nusers=0,nsessions=0,uname=Linux servername 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64,opsys=linux
mom_service_port = 15002
mom_manager_port = 15003
答案1
我解决了这个问题。首先我禁用了超线程(从 Linux 内部禁用超线程(无法访问 BIOS))。命令行中的 mpi 显示使用率接近 100%,而实际使用率为 50%,超线程系统为 50%。其次,我将 Torque 降级为不支持 numa 的版本(从 Torque-4.2.10-10.el7.x86_64 降级为 Torque-4.2.10-5.el7.x86_64)。之后,pbsnodes -a 命令显示 ncpus=52,而支持 numa 时为 26。现在我在 Torque 中使用 mpirun -np 52 得到相同的结果。