LSF esub(检查内存预留)脚本配置

esub脚本如下:

#!/bin/sh
. $LSB_SUB_PARM_FILE
# Redirect stderr to stdout so echo can be used for error messages
exec 1>&2

if [[ "$LSB_SUB_QUEUE" = "dft_hui" || "$LSB_SUB_QUEUE" = "dft_han" || "$LSB_SUB_QUEUE" = "dft_q" || "$LSB_SUB_QUEUE" = "dft_felix"|| "$LSB_SUB_QUEUE" = "dft_sytrons" ]]
then
#====================================================================================
# bsub command is restricted to run only with -R
#====================================================================================
if [ "${LSB_SUB_RES_REQ}" = "" ]; then
echo "+-----------------------------------------------------------------------+"
echo "| bsub -R <resource> is required to submit a job |"
echo "| |"
echo "| |"
echo "| For example: |"
echo "| |"
echo "| bsub -R \"rusage[mem=xyz]\" myjob |"
echo "| |"
echo "| xyz means memory to reserve (MB) |"
echo "+-----------------------------------------------------------------------+"
exit $LSB_SUB_ABORT_VALUE
fi
#====================================================================================

# =================================================================================
# bsub -R command is required to reserve memory with "rusage" #
# ==================================================================================
ckmem=`echo $LSB_SUB_RES_REQ|awk '{if($0 ~ /mem/) {print "CKMEM"}}'`
ckuse=`echo $LSB_SUB_RES_REQ|awk '{if($0 ~ /rusage/) {print "CKUSE"}}'`
if [ "${ckmem}" = "" ]; then
echo "+-----------------------------------------------------------------------+"
echo "| \"rusage\" is required for memory reservation to submit a job |"
echo "| |"
echo "| |"
echo "| For example: |"
echo "| |"
echo "| bsub -R \"rusage[mem=xyz]\" myjob |"
echo "| |"
echo "| xyz means memory to reserve (MB) |"
echo "+-----------------------------------------------------------------------+"
exit $LSB_SUB_ABORT_VALUE
fi

if [ "${ckuse}" = "" ]; then
echo "+-----------------------------------------------------------------------+"
echo "| \"rusage\" is required for memory reservation to submit a job |"
echo "| |"
echo "| |"
echo "| For example: |"
echo "| |"
echo "| bsub -R \"rusage[mem=xyz]\" myjob |"
echo "| |"
echo "| xyz means memory to reserve (MB) |"
echo "+-----------------------------------------------------------------------+"
exit $LSB_SUB_ABORT_VALUE
fi




fi

这个脚本检查提交到queue1、queue2、queue3这三个队列的作业是否指定了-R “rusage[mem=xxx]”选项来设置内存预订, 如果没有就通过“exit $LSB_SUB_ABORT_VALUE”退出脚本并拒绝提交作业,同时显示提示信息。其它队列的作业不受影响。

$LSB_SUB_MEM_USAGE变量仅限于检查-R的“rusage[mem=xxx]”设置,不检查-R的别的设置。

上面三个队列不能是默认队列。如果是默认队列, $LSB_SUB_QUEUE变量为空(LSF不设置这个变量),就需要对脚本做相应调整。

有关配置如下:

1、将上述esub脚本(文件名为esub.memusage)放到$LSF_SERVERDIR  目录(/eda/ibm/10.1/linux2.6-glibc2.3-x86_64/etc)下,并设置可执行权限。

[ray.chen@etx2 ~]$ bsub -Is -q queue1 hostname

Cannot find a corresponding ‘esub’ or ‘epsub’ file in </eda/ibm/10.1/linux2.6-glibc2.3-x86_64/etc> for the <memusage> application.

Request aborted by esub. Job not submitted.

2、在lsf.conf里配置LSB_ESUB_METHOD=”memusage”。如果修改了这个esub脚本的扩展名memusage, 那么lsf.con里配置的LSB_ESUB_METHOD参数的值也要保持一致。

按照上述方法配置后,这个esub脚本就立即生效了,不需要执行badmin reconfig或重启LSF服务。我们来测试一下这个esub脚本的效果。

向queue1提交一个作业,不指定-R “rusage[mem=xxx””选项:

$ bsub -q queue1 sleep 10

ERROR: Please add -R “rusage[mem=xxx]” to bsub command line.

Request aborted by esub. Job not submitted.

LSF esub(检查内存预留)脚本配置

发表回复

滚动到顶部