0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度解读火山引擎官方操作系统veLinux

jf_WZTOguxH 来源:AI前线 作者:字节跳动 STE 技术 2022-11-03 15:03 次阅读

veLinux 是火山引擎推出的开源 Linux 操作系统,由字节跳动系统技术与工程团队(System Technologies & Engineering,简称 STE)主导研发,广泛集成了字节跳动多年来在支撑海量业务和亿级并发上的系统技术经验。致力于为用户提供稳定、高性能、安全、易用的 Linux 操作系统选择,提供全生命周期管理的完整解决方案和企业级服务支持。

自火山引擎开服以来,veLinux 支撑了包括容器服务、机器学习平台、大数据服务等大量公有云上业务,是火山引擎官方操作系统,为火山引擎各个云产品提供稳定的系统支撑,同时也服务了大量外部公有云客户,在不同的应用场景、不同的硬件机型上都表现出了优异的性能。

整体设计

veLinux 在整体设计上,兼容 x86 和 ARM 生态,同时兼容国内用户的使用习惯,并对多种硬件设备进行了适配和优化,同时针对火山引擎基础设施进行了深度优化:

向上提供更稳定、更安全、更易用的应用接口,并针对云原生、大数据、机器学习等场景提供针对性优化。

向下建立更准确、更完整、更高效的硬件抽象,并基于各种硬件类型融合整体解决方案对外输出。

eaa18de2-5b31-11ed-a3b6-dac502259ad0.png

丰富版本

自 2021 年 10 月首次上线后,截止到当前时间,veLinux 已经迭代了多个版本,提供了丰富的产品矩阵,包括以下 4 个公共版本,用户可以根据自己实际的业务需求选择不同的版本免费使用:

通用版本

面向希望获得火山引擎上极致操作系统体验的用户,针对火山引擎公有云环境进行了深度定制与优化,适用于各种云场景工作负载,尤其针对高并发、高 I/O 和混部场景进行优化适配。

快速启动版

面向需要快速交付大量云服务器的用户,可以满足快速使用算力的需求。通过对操作系统内核态及用户态的启动优化,结合 cloud-init 服务启动的顺序优化,实现了单 VM 启动时间从 10+s 减少到 5s,达到业界领先水平。

等保认证

面向云上业务需要满足《GB/T22239-2019 信息安全技术网络安全等级保护基本要求》的用户,可以快速满足网络安全等级保护规定的要求,在身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范等场景进行安全加固。

兼容 CentOS 版

面向使用习惯更倾向 CentOS 系列操作系统的用户,相比 CentOS ,提供更强的功能、更优的性能和更稳定的体验,且用户态完全兼容 CentOS,用户可以无缝迁移。

此外,在机型适配方面,上述版本均适配了火山引擎所有的规格实例,包含 ECS/GPU/HPC/ 裸金属等的完整机型矩阵,对 IntelAMD 以及 ARM 实例均进行了功能适配、性能调优和稳定性加固,保证其在各个架构都能实现长期稳定运行。

高性能内核

操作系统的核心——veLinux Kernel 是基于社区 Linux 5.4 LTS 版本并集成字节跳动自研新特性定制而成,包括容器及虚拟化等特定环境深度优化,在性能,成本和稳定性等多个维度达到最优,同时节省更多的 CPU 资源,实现降本提效。目前 veLinux 已集成以下场景的专属优化,且已全部提交并合入到 Kernel 社区。

针对 HugeTLB 重度使用的云场景,提出 HVO (HugeTLB Vmemmap Optimization),消除 vmemmap 冗余数据,最大为用户节省 HugeTLB 总量的 1.56%。这意味着 1024 GB 的服务器,最大能够节省约 16 GB 的内存。

Dying memory cgroup 作为容器场景下一个显著的内存占用问题,极端情况下占用上百 GB 内存。针对此问题,提出专项优化方案,减少 dying memory cgroup 发生的概率以及优化其容器部署密度。极端情况下,内存占用减少 80%。

PSI(Pressure Stall Information)是用于评估系统资源压力的主要指标之一。PSI 在实际生产环境中 CPU 占用过高,veLinux Kernel 对其优化并降低了 10% 的 CPU 使用,同时提出 PSI CPU FULL 指标,更方便量化和展示容器之间 CPU 资源竞争。

VDUSE(vDPA Device in Userspace) 是字节跳动自主研发的面向云原生场景的下一代高性能设备虚拟化框架,能够为容器和虚机提供统一的 I/O 虚拟化层。目前,在云原生场景下,容器或者安全容器(虚机)在使用分布式存储或者高性能 RPC 服务时,涉及的 I/O 数据平面比较庞杂,在运维和可维护性上也有所欠缺。且业界现在并没有一个标准的技术方案,VDUSE 希望提供一个标准统一的技术方案,方便用户在用户态模拟磁盘、网卡等设备接入容器或者虚机。当部署在 veLinux 上的云原生应用希望访问自研的分布式存储服务时,通过 VDUSE,可以高效地开发一套高性能的用户态接入方案,供上述的云原生应用使用。

veLinux Kernel 在稳定性和性能上做了大量的优化,据不完全统计,系统技术与工程团队已为 Kernel 社区提交了上百个优化及 bugfix patch,且未来我们将持续维护并及时响应用户的 issue。同时,我们也会积极地回馈社区,与开发者们共享优化成果。

更多阅读:

VDUSE 介绍:https://www.redhat.com/en/blog/introducing-vduse-software-defined-datapath-virtio

系统特性

当前,企业上云的趋势不可抵挡,云时代的来临对基础操作系统提出了更高更严苛的要求。除了对操作系统的安全性和稳定性外,系统性能的提升也是重要的考虑因素,底层操作系统能否充分利用各种新硬件特性来提升业务的整体效能?此外,能否做到灵活使用,能否最大限度提高启动速度,快速交付大量云服务器?这些都是云上用户迫切关心的问题。10 年的技术积累和应用实践,火山引擎 veLinux 操作系统做出了解答。

稳定性

veLinux 在字节IDC 部署量超百万,是支撑字节跳动抖音、今日头条、飞书等海量业务的系统底座,同时 veLinux 也是字节跳动旗下云平台火山引擎的官方操作系统,支撑了包括容器服务、机器学习平台、大数据服务等大量公有云上业务,为火山引擎各个云产品提供稳定的系统支撑,其稳定性在内外部用户得到实践验证,系统宕机率保持在万分之一以下。

高性能

除了提供高性能的自研内核外,veLinux 还在系统组件上做了大量的性能优化。特别是基础库方面,针对不同的业务场景,进行了大量针对性优化。

OpenJDK

集成发布了优化的 OpenJDK,更好的支持大数据处理等 Java 业务,目前已经在 EMR(Elastic MapReduce) 等业务中上线。

针对大数据数据存储压缩场景,veLinux 的 OpenJDK 集成了优化的 zlib 实现,基于 GZIP 的数据压缩、解压缩性能会得到有效改进,详细数据请参考下方 zlib 章节 。

针对 Full GC 延时较长的问题,我们移植了 G1 Parallel Full GC 到 jdk-8 中,有效缓解了 Full GC 带来的长延时问题。

很多业务不只是依赖 GC 性能,内存分配器(例如 ptmalloc, jemalloc, tcmalloc) 对业务性能有影响也比较大,veLinux 的 OpenJDK 集成了不同版本的内存分配器,并且可用参数选择。

业务在容器内的部署越来越多,但低版本的 OpenJDK 在容器中的性能表现并不好,比如用户会遇到系统数据读取慢、不准确等问题,甚至运行在 lxcfs 时,还会碰到死循环等严重问题。关于上述问题,veLinux 的 OpenJDK 都做了针对性地修复和改进,为用户提供业务性能保障,保证业务在容器中运行的稳定性。

zlib

在内部业务的性能分析优化过程中,我们通过性能分析采集工具发现, zlib 压缩和解压缩函数(deflate/inflate)的热点,在内部某业务线的的 CPU 占比超 50% 以上。由此可见,业务部署的 madler/zlib 1.2.8 开源版本在性能上仍有提升空间。在调研过 intel/zlib、cloudflare/zlib、zlib-ng 等多个 zlib 版本后,最终在开源 madler/zlib 1.2.11 的基础上,集成了多个优化补丁:

支持压缩过程中哈希函数的向量化指令,并且重构了字符串匹配的流程。

增强解压过程中长字符串拷贝效率 。

支持 crc32/adler32 等校验码的向量化指令 。

在 Benchmark 测试中,压缩和解压效率显示提高了 30%-50%。zlib 优化后的版本部署到原来的业务线上,帮助该业务团队优化 CPU 核心 5K+;目前该优化已集成到 veLinux 的 OpenJDK 中,并在字节内部多业务得到广泛推广与应用。

eabfe684-5b31-11ed-a3b6-dac502259ad0.png

eacec988-5b31-11ed-a3b6-dac502259ad0.png

Benchmark 测试:压缩和解压缩性能对比图

其他性能优势

除此之外,对比社区原生 Debian/CentOS,veLinux 具备很强的性能优势,在字节内部应用实践之后,字节样本拼接和数据打点等业务端到端性能提升 20% 以上,其中字节 metrics 集群 CPU 使用率下降了 36%。在性能测试中,对 Nginx/Redis/MySQL 等典型应用的性能也有大幅提升:

Nginx 吞吐性能提升10%-40%

eaecb2f4-5b31-11ed-a3b6-dac502259ad0.png

Redis get/set 性能提升5%-25%

eb15390e-5b31-11ed-a3b6-dac502259ad0.png

MySQL 读写性能提升10%-60%

eb2c34d8-5b31-11ed-a3b6-dac502259ad0.png

安全性

随着网络安全事件不断发生,用户对安全性的重视程度也越来越高,作为火山引擎的官方操作系统,面对复杂的、规模不断增加的用户需求,veLinux 在安全性上需要做到全方位的建设,才能保护用户的信息和数据安全。

及时修复 CVE 漏洞:CVE(Common Vulnerabilities and Exposures)是公共的安全漏洞列表,用于标准化识别已知网络威胁。为了方便用户更便捷地查看 CVE 更新情况,veLinux 官网发布了 CVE 安全中心:https://bytedance.github.io/kernel/sec,每周更新并修复 CVE 补丁。

入侵检测安全防护:得益于字节安全团队的技术支持,veLinux 提供入侵检测安全防护,底层采用安全团队自研的开源项目 Elkeid,主要通过收集主机层的信息来实现入侵检测、行为审计、攻击溯源、资产盘点、合规基线检测等能力,目前完整版本在字节跳动内部的部署规模已达到数百万量级,其稳定性、性能、数据采集能力、检测能力和溯源能力等均在内部得到实战验证。

通过等保三级认证:等保三级认证是由国家公安机关对各机构的信息系统安全等级保护状况进行的认证与评定。veLinux 目前已通过三级等保认证,这是国家对非银行机构的最高级认证。这项安全认证资质已写入火山引擎云安全白皮书,为云上用户提供可靠的安全能力。

提供内核热补丁:快速修复在运行中机器的内核漏洞。内核热补丁是一种动态为内核打补丁的技术,可以在不重启系统的情况下,修复内核 BUG 或者 CVE 漏洞,在最大程度上减少系统服务中断时间,增加系统可用性。未来 veLinux 还将提供统一的补丁管理平台、以及补丁客户端的整套解决方案(内测中),通过该平台用户可以将热补丁批量下发至需要打补丁的机器,提高运维效率。

易用性

veLinux 提供了很多业界主流的问题追踪与调试工具,用户可以方便地安装使用,协助定位、解决业务运行中遇到的稳定性或性能问题。

kdump-tools(以及相关的 kexec-tools、makedumpfile)是常用于在 Linux kernel panic(内核致命错误) 之后 dump 内存、保存现场的工具,基于 debian 社区版本,我们在 veLinux 中做了增强版本,帮助用户提升稳定性,节省预留内存。

通过过滤无关的内核 cmdline、替换 systemd 等方法来降低 kdump 内核中的内存使用,从而防止机器在 dump 内存的过程中出现 oom 的错误。

检测内存等硬件故障,提前结束 dump 过程,防止再次出现内核错误。

提前 dump dmesg,防止在 dump 内存失败的情况下,获取不到 dmesg 的信息。

在 kdump 侧实现 crashkernel = auto 功能,根据机器内存自动设置预留给 kdump 的内存的大小,且无需对内核做定制化修改。

适配对 kdump 预留内存位置有特殊要求的硬件厂商

atop是一款开源的单机性能监测工具,支持实时观测的同时、也支持读取历史文件排查问题。另外一个优点是除提供 CPU、MEM、DISK 等全局指标外,还提供进程、线程级别的各项指标监控数据。鉴于 atop 的这些优点,字节跳动基于社区的 atop 进行优化,目前已迭代 3 个版本,覆盖公司全量服务器,稳定运行三年多。字节版 atop 工具新特性如下:

稳定性增强:增加 oom killer 保护、修复 atopcct 统计、限制日志存储总量防系统盘占满等功能。

远程分析:支持 json 格式数据传输到服务端,支持网页版 atop 及集群内数据聚合。

更多实用指标:NUMA 维度的 CPU 及 MEM 指标统计与聚合、runqueue delay、compact_stall、allocastall、InCsumErrors 等指标。

灵活使用:支持筛选 Top N 线程的监控数据,支持定制日志保留天数及存储位置。

终端 UI 优化:类 htop,按照 NUMA 粒度,直观展示所有 CPU 和内存。达到纵览所有 CPU 负载,直观判断 CPU 绑核是否均衡等目的。

快速启动

对于用户而言,系统启动过程通常被定义为从系统上电到通过 ssh 登录的过程,经历的时间即为系统启动时间。具体来说,机器的启动流程大体上可以根据 CPU 的控制权转移方向描述为“固件 -> 引导程序 -> 操作系统”。其中固件包括 BIOS/UEFI,引导程序包括常见的的 GRUB/U-Boot/LK 等,操作系统包含了内核启动、执行 initrd 中的 init 进程、再到执行硬盘上的 init 进程的过程。系统启动速度是操作系统的重要性能指标之一,特别对于云场景中的虚拟机,能够快速启动可以显著提高用户体验。

veLinux 通过对内核、驱动加载、系统服务的启动优化,以及 cloud-init 服务的启动顺序优化,减少虚机启动时间约 50%,提供快速启动版,实现单虚拟机启动时间 5s 内。

灵活使用

在实际使用中,用户提出基于 veLinux 进行定制化的需求,例如安装特定的驱动版本、内置特定的软件包等。veLinux 针对这个问题,提供灵活的 OS 自定义定制工具,可以在火山引擎、内部平台或本地镜像基础上,自动化完成定制,为用户提供简单便捷的定制窗口,一站式完成镜像的变更、基准测试等任务,使广大业务同学彻底摆脱基础环境构建、操作系统差异等带来的技术困境。

CentOS 官方已计划停止维护 CentOS Linux 项目,veLinux 提供的迁移工具(内测中),能帮助用户平滑从CentOS 迁移至 veLinux CentOS 兼容版,后续还会支持更多操作系统无缝迁移至 veLinux 。

云原生特性 容器 OS 版本

云原生场景下,保证集群内宿主机的一致性非常重要,对单个节点的运维操作可能会导致环境的不一致,对应用的性能稳定性产生影响,甚至可能产生安全隐患。另一方面,与传统系统不同的是,应用通过容器部署,操作系统只需要提供云原生运行必要的组件,省去其他很多不必要的系统组件,实现系统轻量化,同时提升系统启动时间。veLinux 正在内测容器 OS 版本,该版本的优势为:

系统轻量化

(1)只包含 Kubernetes Pods 运行所依赖的软件包和系统服务,缩短系统启动时间,精简操作系统。

(2)根文件系统为只读权限,只有 /etc 和 /var 目录可写,以满足基础的系统配置需求。

系统维度升级回滚

遵循云原生不可变基础设施原则,不支持单个包粒度的安装、卸载和升级,不提供 apt 等软件包管理工具,只支持以整个操作系统镜像为粒度的更新和回滚,以此来保证集群内各个节点的软件包版本与系统配置的一致性。

lxcfs 组件优化

lxcfs 是一个基于 FUSE 文件系统实现容器内资源视图隔离的开源组件,通过在容器中挂载 lxcfs 相关目录和文件,执行 free、top 等命令,能够更精确地反映容器的资源使用情况。

veLinux 中的 lxcfs 组件在社区 5.0 版本的基础上,修复了 /sys 目录下文件显示不完全的问题,并模拟了 numa 节点拓扑,使得在容器中执行 numactl 命令能够返回正确的节点信息。此外,对社区版本存在 lxcfs 进程退出重新启动后无法正常工作的问题,veLinux 版本一方面通过 oom killer 保护,最大限度地减少被 kill 的可能,另一方面提供 remount 机制,使得 lxcfs 进程退出重新启动后,remount 相关目录到容器中,最大限度的降低对用户的影响。

总结与规划

操作系统一直伴随着软硬件技术的发展而发展,近年来,在软件方面,云市场爆发式的增长,特别是云原生场景下,如何有效地进行集群资源的管理、调度编排以及性能度量和监控,都对操作系统提出了更高的要求;在硬件方面,芯片市场的环境变化以及主流 CPU 架构的演进发展,需要构建更加自主可控的操作系统,灵活应对国内外市场变化。针对云计算、国产化等场景,veLinux 实现了很多创新与优化,以满足不同用户的业务需求。未来将陆续发布更多云原生特性,并推出适配国产处理器RISC-V 处理器架构的版本,欢迎大家持续关注。

另外,作为一款开源的操作系统,veLinux 致力于为用户提供可靠、高性能的操作系统,欢迎更多感兴趣的小伙伴加入 veLinux 的开源建设,共同推进国内操作系统生态发展。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18298

    浏览量

    222254
  • 操作系统
    +关注

    关注

    37

    文章

    6290

    浏览量

    121901
  • 机器学习
    +关注

    关注

    66

    文章

    8134

    浏览量

    130580

原文标题:深度解读火山引擎官方操作系统 veLinux

文章出处:【微信号:AI前线,微信公众号:AI前线】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    带你认识实时操作系统(rtos)

    实时操作系统(RTOS)是为嵌入式系统和实时应用提供一个稳定、可预测和高效运行环境的操作系统。实时操作系统确保了系统能够在严格的时间限制内响
    的头像 发表于 04-16 16:30 139次阅读
    带你认识实时<b class='flag-5'>操作系统</b>(rtos)

    深度解析全球操作系统格局

    操作系统是负责协调、管理和控制计算机硬件与软件资源的程序,是整个计算机的核心系统软件。 按照操作系统面向的设备类型,通用操作系统主要包括桌面操作系统
    的头像 发表于 01-18 15:00 288次阅读
    <b class='flag-5'>深度</b>解析全球<b class='flag-5'>操作系统</b>格局

    详解实时操作系统和非实时操作系统

    实时操作系统,当外界事件和数据产生时,系统能以足够快的速度予以处理,其处理结果能在规定的时间内控制生产结果或对系统做出响应,并控制所有实时任务协调一致运行的操作系统
    的头像 发表于 12-26 09:54 1915次阅读
    详解实时<b class='flag-5'>操作系统</b>和非实时<b class='flag-5'>操作系统</b>

    linux属于什么操作系统

    Linux属于一种类UNIX操作系统。Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统
    的头像 发表于 11-08 11:01 1755次阅读

    2023云栖大会龙蜥操作系统专场成功举办

    11月1日,2023云栖大会龙蜥操作系统专场在杭州云栖小镇圆满举行。活动围绕全面建设国产操作系统安全生态、解读面向云时代而生的下一代操作系统——龙蜥
    的头像 发表于 11-01 21:55 419次阅读
    2023云栖大会龙蜥<b class='flag-5'>操作系统</b>专场成功举办

    开源操作系统大全

    开源操作系统即公开源代码的操作系统软件,它遵循开源协议使用、编译和发布。自由和开放源代码软件中最著名的是 Linux ,它是一种类 Unix 的操作系统。Linux 可安装在各种计算机硬件设备中
    发表于 10-27 15:13

    英特尔助力火山引擎 推动数据飞轮加速运转

    9月19日,火山引擎在上海举办了“数据飞轮·2023火山引擎V-Tech数据驱动科技峰会”。会上,英特尔作为其战略合作伙伴,深度参与了本次大
    的头像 发表于 10-13 21:10 784次阅读
    英特尔助力<b class='flag-5'>火山</b><b class='flag-5'>引擎</b> 推动数据飞轮加速运转

    2023 NVIDIA 初创企业展示北京站(火山引擎专场)圆满收官!

    创业光芒持续绽放,半程展示即将开启! 9 月 21 日,由 NVIDIA 主办的 2023 NVIDIA 初创企业展示北京站(火山引擎专场)成功举办。 此次北京站(火山引擎专场)由
    的头像 发表于 09-26 18:35 524次阅读
    2023 NVIDIA 初创企业展示北京站(<b class='flag-5'>火山</b><b class='flag-5'>引擎</b>专场)圆满收官!

    k210官方SDK有没有Nuttx操作系统版本?

    k210官方SDK有没有Nuttx操作系统版本的啊,只有个针对freertos的kendryte-freertos-sdk
    发表于 09-14 08:55

    字节跳动旗下火山引擎自研的视频编解码芯片已出片

    字节跳动旗下火山引擎自研的视频编解码芯片已出片 在8月22日的一场活动中,据字节跳动视频架构负责人、火山引擎视频云架构技术总监王悦介绍,字节跳动旗下
    的头像 发表于 08-23 18:56 1688次阅读

    NVIDIA 助力火山引擎体验创新科技峰会,带您掌握最新大模型生态与趋势!

    2023 火山引擎 V-Tech 体验创新峰会 于今日圆满落幕!本次峰会主题围绕着「体验创新」,聚焦大模型热点,携手模型企业及应用企业,共议未来 “多云多模型” 时代下的大模型生态建设。作为本次
    的头像 发表于 06-28 21:25 294次阅读
    NVIDIA 助力<b class='flag-5'>火山</b><b class='flag-5'>引擎</b>体验创新科技峰会,带您掌握最新大模型生态与趋势!

    RT-Thread操作系统有哪些优势?

    RT-thread是一个轻量级的操作系统,很小,但是也是一个操作系统。主要优势有这些: 跨芯片平台:支持所有主流微控制器,解决设备碎片化问题。 实时操作系统内核:完全自主开发,硬实时,精致,高效
    发表于 06-28 08:16

    经典的移动终端操作系统有哪些

    移动终端操作系统,也就是指手机、平板电脑等设备所使用的操作系统。 在移动互联网高度发达的今天,我们使用移动终端操作系统的时长,可能已经远远超过了Windows等桌面操作系统
    发表于 06-20 11:20 1292次阅读
    经典的移动终端<b class='flag-5'>操作系统</b>有哪些

    MINIX操作系统为何走向没落?

    MINIX 在其英特尔管理引擎上运行,包括网络堆栈、存储驱动程序等。 该事件在 2017 年被首次报道,详情可查看当年的报道:世界上最流行的操作系统 MINIX 暗藏着最大的威胁?
    发表于 06-01 10:23 380次阅读
    MINIX<b class='flag-5'>操作系统</b>为何走向没落?

    聊聊操作系统

    说到操作系统,大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑,使用的是windows和macOS系统;用手机、平板电脑,则是android(安卓)和iOS系统
    的头像 发表于 05-12 11:13 1035次阅读
    聊聊<b class='flag-5'>操作系统</b>