Server运行中有用的命令

Published:

都是泪…

前置操作

面对一个新设备时,提前进行一些设定可以避免踩坑。

  • -rm 定义为 -rm -i,确保删除文件前会询问
  • git备份,确保误删了也能找回来
  • 为不同compute node安排不同Gurobi license。可以把licenses都放在同一个文件夹(如Gurobi_licenses)下,分别保存为gurobi_node1.lic和gurobi_node2.lic

SLURM 命令

SLURM可以帮助我们自动进行任务的资源分配。

  • 查看CPU占用情况: sinfo -N -o "%N %C %c" 输出说明:
    • %N:节点名称(例如 gpu114, gpu115)
    • %C:CPU 分配状态,格式为 A/I/O/T(已分配/空闲/其他/总计核心数)
    • %c:每个节点的总 CPU 核心数
  • SLURM shell script
    #!/bin/bash
    #SBATCH --job-name=resourse-alloc-outside-box       # Name for your job
    #SBATCH --ntasks=1               # Number of tasks
    #SBATCH --cpus-per-task=30       # 线程数
    #SBATCH --nodes=1				 # Request 1 compute node
    #SBATCH --time=2-00:00:00        # Request 2 days runtime (D-HH:MM:SS)
    #SBATCH --output=debug/%j_output.log   # Save output to a log file
    #SBATCH --error=debug/%j_error.log
    
  • sbatch会把任务分配到空闲的节点。(除非申请WLS)需要为不同compute node安排不同Gurobi license,
# 根据节点名称设置 GRB_LICENSE_FILE
echo $SLURM_NODELIST
if [ "$SLURM_NODELIST" == "gpu114" ]; then
    export GRB_LICENSE_FILE=/xxx/gurobi_node1.lic
elif [ "$SLURM_NODELIST" == "gpu115" ]; then
    export GRB_LICENSE_FILE=/xxx/gurobi_node2.lic
fi