为此,我们专访了字节跳动系统部 STE 团队工程师,他为我们分享了字节跳动自研 OpenBMC 的布局和推进过程。
传统 BMC 生态封闭,及时响应困难重重BMC 是服务器上的管理模块,它包含独立的 SoC 以及 SoC 上运行的系统,完成对服务器的管理、监控、并对外提供服务。对于服务器来说是不可或缺的重要组成部分。
目前服务器 BMC 的方案里,部分厂商有完全自研的方案,部分厂商则会基于 IBV (Independent BMC Vendor) 的商业 BMC 进行定制化开发,但这些都是闭源的,服务器使用者无法掌控 BMC 的完整功能。

同时,商业 BMC 也具有诸多局限,比如一些不必要的功能,可能影响网络和系统稳定性;修复 bug、漏洞往往需要反馈 ODM 厂商,甚至需要 IBV 支持,这使得修复时间过长;部分 bug 只在特定环境下复现,更增加了修复的难度。
随着互联网的不断发展,数据中心的不断壮大,对数据中心服务的运维需求,也越来越呈现出精细化、定制化的趋势。
严重依赖各 ODM 厂商、IBV 的传统 BMC 开发模式,开发周期长,无法实时响应互联网多变的需求。一个更加开放、更加现代的 BMC 方案,成为当务之急。
功能新架构优,OpenBMC 成字节跳动首选OpenBMC 是 Linux Foundation 里的一个开源项目,它方案成熟、社区活跃,受到 IBM、Google、Facebook、Intel、Inspur 等国内外各大厂商的支持。
在架构方面,OpenBMC 支持 Aspeed、Nuvoton 等多种 BMC 芯片,以及 x86、ARM、OpenPOWER 等多种服务器架构,更是采用 Linux kernel 5.15、Systemd 249 (249.4+)、GCC 11.2.0、C++20 等最新的现代化技术架构。
OpenBMC 解决方案流程一览
但是 OpenBMC 最初是为了解决国外企业的数据中心需求设计开发的,无法完全适配国内互联网数据中心需求。基于 OpenBMC,结合字节跳动服务器管理和运维,开发自研版本,成为更理想的选择。
从社区版本到落地应用,OpenBMC 在字节跳动产品化为了加快 OpenBMC 与字节跳动内部业务的适配,STE 团队调研了 OpenBMC 社区里,各个模块的技术方案,对比字节跳动内部对服务器的管理和运维,挑选出适用的方案。
OpenBMC 在字节跳动产品化过程示意图
对于能满足字节跳动内部需求的模块,STE 团队决定直接使用社区版本;对于额外的需求,则会基于社区模块,添加并增强功能,最终形成一个完整的解决方案,进行深度测试。
STE 团队工程师,为我们分享了具体的方案:
对于 x86 specfic 的模块,复用 Intel 的模块,例如 PECI,node-manager对于 power control,复用x86-power-control对于各类传感器,基于现有的entity-manager/dbus-sensors/virtual-sensor,添加 yaml 来定义需要的 sensor对于风扇控制,复用phosphor-pid-control并添加了单、双转子的检测和适配对于 FRU,根据硬件情况改造相关代码,使其支持非标准 FRU 格式对于 SEL,实现新的统一的 logging 方式,把 log entry 转化为标准 SEL对于 code-update,基于phopsphor-bmc-code-mgmt添加了 BIOS、CPLD、FPGA 等模块的支持对于字节跳动内部的管理、运维,新增了代码来完成线上的适配工作此外, STE 团队也在字节跳动内部搭建了 CI 服务器,完成了自动化的编译和测试,并且与开源社区的 Gerrit 打通:
对于内部的每一个 Push/MergeRequest,会跑 CI对于每一次编译,都会通过 QEMU 来跑基本的测试对于重要的 release tag,还会通过 HW CI 在实际服务器上验证对于开源社区里meta-bytedance的每一个改动,也会跑编译和 QEMU CI积极呼吁行业合作,共同参与社区共建据 STE 团队工程师介绍,OpenBMC 项目目前已经在两种不同配置的机器上顺利完成上线,并持续稳定运行了两个多月。
同时,STE 团队的工程师们,也在 OpenBMC 开源社区里提交了涉及新 feature 及 bug fix 的诸多 commits,目前已经成为了 OpenBMC Technical Oversight Forum (TOF) 的一员。
https://github.com/search?p=1&q=org%3Aopenbmc+bytedance.com&type=Commitshttps://github.com/openbmc/docs/blob/master/tof/contract.md未来,字节跳动系统部 STE 团队将在更多的平台上持续研发 OpenBMC,来更好、更快速地支持服务器的管理和运维。工程师还表示,在后续开发中,STE 团队希望能与更多厂商进行全方位、多维度的紧密合作共建,共同开发更符合国内互联网数据中心需求的开源 BMC 方案。
专访最后,STE 团队的工程师也充分表达了对于优秀人才的渴求,欢迎对新技术、开源感兴趣的小伙伴加入字节跳动系统部 STE 团队,用最新的 kernel、最新的编译器,写最 modern 的 C++。
关于字节跳动系统部 STE 团队:
字节跳动系统部 STE 团队 (STE=System Technologies & Engineering,系统技术与工程) 一直致力于操作系统内核与虚拟化、系统基础软件与基础库的构建和性能优化、超大规模数据中心的系统稳定性和可靠性建设、新硬件与软件的协同设计等基础技术领域的研发与工程化落地,具备全面的基础软件工程能力,为字节上层业务保驾护航。同时,团队积极关注社区技术动向,拥抱开源和标准。
更多招聘信息,可联系 chenziying@bytedance.com 获取。