更新时间:2025-05-21 GMT+08:00

容量预留

资源预留功能允许用户或管理员提前预定计算节点,确保在指定时间段内独占或共享资源。以下是资源预留的详细用法指南。

创建资源预留

使用scontrol create reservation命令(需要管理员权限):

scontrol create reservation ReservationName=<名称> StartTime=<开始时间> Duration=<持续时间> Nodes=<节点列表或数量> Partition=<分区名>  Users=<用户列表> Flags=<选项>

参数说明:

  • ReservationName: 预留的唯一名称(必填)。
  • StartTime: 预留开始时间,格式为 YYYY-MM-DD[THH:MM[:SS]] 或 now+{数字}{单位}(如 now+1hours)。
  • Duration: 预留持续时间,格式为 DD-HH:MM:SS(如 2-12:00:00 表示2天12小时)。
  • Nodes: 指定节点。
  • Partition: 预留所属分区。
  • Users: 允许使用预留的用户(逗号分隔,如 user1,user2;默认创建者可访问)。
  • Flags: 控制预留行为的选项:
    • MAINT: 预留用于维护,仅管理员可访问。
    • OVERLAP: 允许与其他预留重叠。
    • IGNORE_JOBS: 忽略现有作业,立即生效。
    • SPEC_NODES: 强制使用明确指定的节点(避免Slurm自动选择)。

在驾仓后台创建预留容量策略(给test1用户预留一个计算节点)

查看资源预留

  • 查看所有预留
    scontrol show reservation
  • 查看特定预留
    scontrol show reservation <ReservationName>

驾仓后台查看容量预留策略。

管理预留

  • 更新预留参数(如修改持续时间):
    scontrol update ReservationName=<名称> Duration=<新时间>

  • 删除预留
    scontrol delete ReservationName=<名称>

非指定用户无法使用预留资源

提交作业分为两种方式(推荐使用驾仓页面):

  • 驾仓页面提交作业

    提交作业用户非预留指定用户,作业无法执行

  • 后台命令

    在作业提交命令中通过--reservation指定预留名称:

    # 提交批处理作业
    sbatch --reservation=<名称> --partition=<分区> job.sh

使用场景示例

场景1:预定节点进行测试

scontrol create reservation \
     ReservationName=test_job \
     StartTime=now+30minutes \
     Duration=1:00:00 \
     Nodes=node01 \
     Users=alice
  • 用户 alice 在30分钟后可独占node01 1小时。

场景2:多用户协作任务

scontrol create reservation \
     ReservationName=team_project \
     StartTime=2024-01-01T09:00:00 \
     Duration=24:00:00 \
     Nodes=4 \
     Partition=workq \
     Users=user1,user2,user3
  • 用户组在指定时间共享4个节点24小时。

场景3:维护模式预留

scontrol create reservation \
     ReservationName=maintenance \
     StartTime=now \
     Duration=8:00:00 \
     Nodes=ALL \
     Flags=MAINT,IGNORE_JOBS
  • 管理员立即占用所有节点进行维护,终止现有作业。

注意事项

  • 权限:普通用户需管理员协助创建预留。
  • 时间冲突:默认不允许节点被重复预留,除非使用 OVERLAP。
  • 作业时间限制:作业必须在预留时间窗口内开始,并受预留持续时间限制。

通过合理使用资源预留,可以优化集群资源分配,确保关键任务按时执行。建议在复杂需求下联系集群管理员协助配置。