12 Star 12 Fork 35

openEuler / openeuler-obs

 / 详情

OBS 工程构建过程 finished 状态包数量很多,导致整体构建时间延长,影响构建优化效果

已完成
任务
创建于  
2021-07-15 14:40

在对 openEuler 工程进行构建优化以及日常版本构建过程中,发现某些时间某些工程 finished 数量较大(从几十到一千多)或者数量持续较长时间没有变化。

OBS 系统关于 finished 状态的描述:

finished: The package has been built and signed, but has not yet been picked up by the scheduler. This is an intermediate state prior to 'succeeded' or 'failed'.

从上述描述可以推测,finished 的包已经构建并签名完毕了,需要 scheduler 服务进一步处理,scheduler 服务没有及时处理导致 finished 状态的包堆积。

以下通过对多个 OBS 工程构建过程中各个状态的数量进行采集统计(每分钟采集一次),从两个不同的角度,说明 finished 状态的包对工程构建时长的影响:

1.building 及 finished 变化折线图

从折线图可以看到构建过程中 finished 的数量持续较高、时间持续较长,每个finished 曲线下降的点也是 building 曲线上升的点(下图红色方框标志的位置),由此推断 finished 的包阻塞了其它包开始 building。
如果 finished 的包能及时处理,finished 的数量尽早降下来,那么 building 曲线上升的点也会前移,很多包可以尽快开始构建,构建完成的时间也会相应提前。
输入图片说明

2. building 和 finished 数量统计对比

以 openEuler:20.03:LTS:SP2:Epol x86_64 10:00 ~ 12:00 时间段构建情况为例,有78 个采集点 building 为 0,但 finished 不为0,近似估计 120 分钟内大概有 78 分钟工程在等待某些包finished 状态结束,才能继续其它包构建。
输入图片说明

从以上2点可以看出,如果能加快处理 finished 状态包的速度,很多包的构建也可以提前开始,从而缩短工程构建的时间。
从 OBS 文档了解,OBS scheduler 服务除了处理构建完成的包(finished 状态),大部分责任是在计算哪些工程、哪些包需要构建、以什么顺序构建,当前 OBS 所有公共工程,都由单一的 scheduler 服务在处理。随着工程数量以及包数量逐渐增加,scheduler 服务的压力会越来越大,从之前 atop 工具监控看到scheduler 是一个单线程的服务,并且 CPU 占用持续处于 100%,由此推断 scheduler 服务已经成为当前工程构建的性能瓶颈。
输入图片说明
根据 OBS 文档以及借鉴 https://build.opensuse.org 部署情况,解决方法可能是扩容 OBS 后台服务节点(OBS 称为 partitioning),分担当前的部分工程及软件包工作,从而缓解性能瓶颈。
该问题影响构建优化的效果,也影响当前日常版本构建需要等待的时间。


可能的解决方案

如果确定是 obs_sched 性能瓶颈,可以增加一个 partitioning,根据 host-172-16-1-95 节点资源使用情况,建议配置如下

  1. 磁盘选用超高 IO 或更高配置,大小参考 host-172-16-1-95
  2. CPU 选用最高可选的频率,核数 32 核
  3. 内存大小为 64 GB

评论 (4)

chenyanpanX 创建了任务
chenyanpanX 关联仓库设置为openEuler/openeuler-obs
展开全部操作日志

Hey chenyanpanHW, Welcome to openEuler Community.
All of the projects in openEuler Community are maintained by @openeuler-ci-bot.
That means the developers can comment below every pull request or issue to trigger Bot Commands.
Please follow instructions at https://gitee.com/openeuler/community/blob/master/en/sig-infrastructure/command.md to find the details.

openeuler-ci-bot 添加了
 
sig/sig-Gatekeeper
标签
chenyanpanX 修改了描述
chenyanpanX 负责人设置为George.Cao
chenyanpanX 修改了标题
chenyanpanX 优先级设置为严重
chenyanpanX 修改了描述
chenyanpanX 修改了标题
chenyanpanX 修改了标题
chenyanpanX 修改了标题
chenyanpanX 修改了描述
chenyanpanX 修改了描述
chenyanpanX 修改了描述
chenyanpanX 修改了描述
chenyanpanX 修改了描述

这个现在跑在物理机上?还是虚拟机上?

据我之前了解,Master 有4个服务器,当前用的是华为云 ECS 虚拟机

chenyanpanX 修改了描述
chenyanpanX 添加协作者TommyLike
chenyanpanX 修改了描述
chenyanpanX 计划开始日期设置为2021-08-04
chenyanpanX 计划截止日期设置为2021-08-06

单独一个 backend 节点,调度 openEuler-Mainline-copy 工程的效果
输入图片说明

George.Cao 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(4)
5329419 openeuler ci bot 1632792936 7400170 chenyanpanhw 1604646878 5229366 tommylike 1578982886
1
https://gitee.com/openeuler/openeuler-obs.git
git@gitee.com:openeuler/openeuler-obs.git
openeuler
openeuler-obs
openeuler-obs

搜索帮助

14c37bed 8189591 565d56ea 8189591