分享一个获取超算服务器信息的脚本

使用过超算的同学应该知道,为了充分利用资源,避免浪费,超算服务器一般是采用提交作业的方式来供用户使用的,目前主流的作业管理系统有两个,即PBS和LSF作业管理系统,当作业数量较多,CPU资源较少时,如何有效地充分利用剩余地资源显得尤为重要。这里写了一个探测超算服务器剩余资源的bash脚本。服务器使用的是LSF作业管理系统,部分内容是针对本地服务器所优化的,但是也有一些泛式的内容,以下是脚本内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
echo *************snode and hosts grep*****************
echo author:luojun,2022.1.7
echo --------------------------------------------------
bhosts | grep 0 > hosts.txt
ct_line=$(awk 'END{print NR}' hosts.txt)
echo Queue Snode Res-core
for i in $(seq 1 $ct_line)
do
host_name=$(awk -F ' ' "NR==${i}{print}" hosts.txt | awk '{print $1}')
host_stas=$(awk -F ' ' "NR==${i}{print}" hosts.txt | awk '{print $2}')
host_max=$(awk -F ' ' "NR==${i}{print}" hosts.txt | awk '{print $4}')
host_run=$(awk -F ' ' "NR==${i}{print}" hosts.txt | awk '{print $6}')
if [ $host_stas = ok ];then
diff_core=$(expr $host_max - $host_run)
for h in ibm-1 ibm-2 ibmsic inspur-1 inspur-2 inspurgpu test
do
if bqueues -l $h|grep -q $host_name;then
queue=$h
break
fi
done
echo $queue $host_name $diff_core
fi
done
echo --------------------------------------------------
rm -rd hosts.txt

运行结果:
runresult

对运行结果作一个简要的说明,第一列是作业队列名称,第二列节点名称,第三列是剩余核数。