使用过超算的同学应该知道,为了充分利用资源,避免浪费,超算服务器一般是采用提交作业的方式来供用户使用的,目前主流的作业管理系统有两个,即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
|
运行结果:
对运行结果作一个简要的说明,第一列是作业队列名称,第二列节点名称,第三列是剩余核数。