返回列表 发布新帖

共享runner的调度机制分享

238 0
发表于 2024-4-30 11:19:24 | 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×

当在多个项目或群组有一些共通性构建需求的项目时,分别在每个项目注册runner就比较繁琐,可以在群组或者实例级别注册共享runner,供整个群组或者整个实例使用。下面介绍一下他们的调度算法。

共享 runner 通过使用公平使用队列来处理作业。此队列可防止项目创建数百个作业并使用所有可用的共享 runner 资源。

公平使用队列算法根据已在共享 runner 上运行的作业数量最少的项目分配作业。

例如,以下作业在队列中:

  • Job 1 for Project 1
  • Job 2 for Project 1
  • Job 3 for Project 1
  • Job 4 for Project 2
  • Job 5 for Project 2
  • Job 6 for Project 3

当几个 CI/CD 作业同步运行,公平使用算法按以下顺序分配作业:

  1. Job 1 排在第一位,因为它在没有运行作业的项目(即所有项目)中具有最低的作业编号。
  2. 接下来是 Job 4,因为 4 现在是没有运行作业的项目中的最低作业编号(项目 1 有作业正在运行)。
  3. 接下来是 Job 6,因为 6 现在是没有运行作业的项目中的最低作业编号(项目 1 和 2 有作业正在运行)。
  4. 接下来是 Job 2,因为在运行作业数量最少的项目中(每个项目都有 1),它是作业编号最少的项目。
  5. 接下来是 Job 5,因为项目 1 现在有 2 个作业正在运行,而 Job 5 是项目 2 和 3 之间剩余的最低作业编号。
  6. 最后是 Job 3,因为它是唯一剩下的作业。

当每次运行一个作业,公平使用算法按以下顺序分配作业:

  1. 首先选择 Job 1,因为它在没有运行作业的项目(即所有项目)中具有最低的作业编号。
  2. 我们完成 Job 1。
  3. 接下来是 Job 2,因为在完成 Job 1 后,所有项目都有 0 个作业再次运行,而 2 是可用的最低作业编号。
  4. 接下来是 Job 4,因为在项目 1 运行作业的情况下,4 是未运行作业的项目(项目 2 和 3)中的最低数字。
  5. 我们完成 Job 4。
  6. 接下来是 Job 5,因为完成了 Job 4,项目 2 没有再次运行作业。
  7. 接下来是 Job 6,因为项目 3 是唯一没有运行作业的项目。
  8. 最后我们选择 Job 3,它是唯一剩下的作业。
回复

使用道具 举报

意见建议

Email:forum@gitlab.cn
  • 关注公众号
  • 添加专业顾问
Copyright © 2001-2024 极狐GitLab论坛 版权所有 All Rights Reserved. 鄂ICP备2021008419号-1|鄂公网安备42018502006137号
关灯 快速发帖
扫一扫添加专业顾问
返回顶部
快速回复 返回顶部 返回列表