gang scheduler在kube-batch中的实现

目录

一、名词解释

二、流程图


gang scheduler介绍:一个kube-batch作业(kube-batch job)可能有多个pods, 这些pods要不全部执行,要不一个都不执行。

一、名词解释

  • k8s job:一些pod集合

  • kube-batch task: pod,一个kube-batch task就是一个pod

  • kube-batch podGroup: 一组pod,这是kube-batch自定义的crd,主要用来实现gang scheduler。通过设置podgroup的minNumber,达到每次调度要么执行minNumber个pods.要么一个都不执行。

  • kube-batch job: 一组pod,指向某podGroup的所有pod(一个kube-batch job就是一个podGroup,见下图),可以对应一个或多个k8s job

    kube-batch\pkg\scheduler\cache\event_handlers.go

注意:

  1. 一个k8s job必须指定一个podGroup,否则会指定一个shadow podGroup

  2. 一个kube-batch job 可以对应一个或多个k8s job

    举例:

    如果有一个k8s的job, 假设为Job1,有2个pod, 他指定的podgroup是gp1. 同时还有一个k8s的job, 假设为Job2,有2个pod, 他指定的podgroup也可以是gp1.

    同时提交这俩个k8s job。

    在kube-batch看来,当前要调度的只有一个kube-batch 作业。这个kube-batch job总共有4个Tasks(pod)需要绑定。

二、流程图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要检查GANG调度配置是否正确,可以使用以下命令: ``` sview -G ``` 这将显示当前配置的所有GANG分区和节点。 要编写一个在单个分区执行GANG调度的脚本,可以按照以下步骤进行操作: 1. 创建一个新的脚本文件,例如`gang_submit.sh`。 2. 在脚本设置SLURM选项,如下所示: ``` #!/bin/bash #SBATCH --partition=<partition_name> #SBATCH --nodes=<number_of_nodes> #SBATCH --ntasks-per-node=<number_of_tasks_per_node> #SBATCH --gres=gpu:<number_of_gpus_per_node> #SBATCH --job-name=<job_name> #SBATCH --output=<output_file> #SBATCH --error=<error_file> ``` 其,`<partition_name>`是要使用的分区的名称,例如`gpu`,`<number_of_nodes>`是要使用的节点数,`<number_of_tasks_per_node>`是每个节点上要运行的任务数,`<number_of_gpus_per_node>`是每个节点上要使用的GPU数,`<job_name>`是作业的名称,`<output_file>`是标准输出文件的名称,`<error_file>`是标准错误文件的名称。 3. 在脚本添加GANG调度选项,如下所示: ``` #SBATCH --dependency=afterok:<jobid1>:<jobid2>:... #SBATCH --kill-on-invalid-dep=yes #SBATCH --clusters=<gang_cluster_name> #SBATCH --gang #SBATCH --gang-partition=<gang_partition_name> #SBATCH --gang-nodes=<gang_number_of_nodes> #SBATCH --gang-tasks-per-node=<gang_number_of_tasks_per_node> #SBATCH --gang-gres=gpu:<gang_number_of_gpus_per_node> ``` 其,`<jobid1>:<jobid2>:...`是需要等待的前置作业的ID列表,`<gang_cluster_name>`是GANG集群的名称,`<gang_partition_name>`是要使用的GANG分区的名称,`<gang_number_of_nodes>`是要使用的GANG节点数,`<gang_number_of_tasks_per_node>`是每个GANG节点上要运行的任务数,`<gang_number_of_gpus_per_node>`是每个GANG节点上要使用的GPU数。 4. 在脚本添加要运行的命令,例如: ``` srun python my_script.py ``` 这将在GANG调度下运行`my_script.py`。 5. 提交作业,例如: ``` sbatch gang_submit.sh ``` 这将提交GANG调度作业并将其添加到队列。 请注意,GANG调度只能在支持GANG的分区上运行。在提交GANG调度作业之前,请确保已在`slurm.conf`文件正确配置了GANG分区和节点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值