关键特性

AI 场景创新

智能时代,操作系统需要面向AI不断演进。一方面,在操作系统开发、部署、运维全流程以AI加持,让操作系统更智能;另一方面,openEuler已支持ARM,x86,RISC-V等全部主流通用计算架构,在智能时代,openEuler也率先支持NVIDIA、昇腾等主流AI处理器,成为使能多样性算力的首选。

OS for AI

开箱易用

openEuler兼容NVIDIA、Ascend等主流算力平台的软件栈,为用户提供高效的开发运行环境。通过将不同AI算力平台的软件栈进行容器化封装,即可简化用户部署过程,提供开箱即用的体验。同时,openEuler也提供丰富的AI框架,方便大家快速在openEuler上使用AI能力。

  1. openEuler已兼容CANN、CUDA等硬件SDK,以及TensorFlow、PyTorch、 MindSpore等相应的AI框架软件,支持AI应用在openEuler上高效开发与运行。
  2. openEuler AI软件栈容器化封装优化环境部署过程,并面向不同场景提供以下三类容器镜像。
    • SDK镜像:以openEuler为基础镜像,安装相应硬件平台的SDK,如Ascend平台的CANN或NVIDIA的CUDA软件。
    • AI框架镜像:以SDK镜像为基础,安装AI框架软件,如PyTorch或TensorFlow。此外,通过此部分镜像也可快速搭建AI分布式场景,如Ray等AI分布式框架。
    • 模型应用镜像:在AI框架镜像的基础上,包含完整的工具链和模型应用。

相关使用方式请参考《openEuler AI 容器镜像用户指南》。

sysHAX大语言模型异构协同加速运行时

sysHAX大语言模型异构协同加速运行时专注于单机多卡环境下大模型推理任务的性能提升,针对鲲鹏+xPU(GPU、NPU等)的异构算力协同,显著提升大模型的吞吐量和并发量:

  • CPU推理加速:通过NUMA亲和调度、矩阵运算并行加速、SVE指令集推理算子适配等方式,提升CPU的吞吐量。
  • 异构融合调度:支持在GPU侧任务满载时,动态将推理请求的prefill阶段在GPU上执行,decode阶段放在CPU上执行。

异构融合GMem

在后摩尔时代,GPU、TPU 和 FPGA 等专用异构加速器设备正不断涌现,它们与 CPU 类似,需要将数据放在本地内存(例如 LPDDR 或 HBM)中以提高计算速度。加速器厂商们也不可避免地需要开发复杂的内存管理系统。现行加速器内存管理方案存在诸多缺陷:

  • CPU 侧内存管理与加速器侧分离,数据显式搬移,加速器内存管理的易用性和性能难以平衡。
  • 大模型场景下加速器设备 HBM 内存(High BandWidth Memory)严重不足,现有的手动 swap 方案性能损耗大且通用性差。
  • 搜推、大数据场景存在大量无效数据搬移,缺少高效内存池化方案。

Linux 现有的 HMM 框架,编程复杂度高且依赖人工调优,性能和可移植性差,引发 OS 社区反弹,最终导致 HMM 方案搁浅。异构加速器领域亟需高效的统一内存管理机制。异构通用内存管理框架 GMem(Generalized Memory Management),提供了异构内存互联的中心化管理机制,且 GMem API 与 Linux 原生内存管理 API 保持统一,易用性强,性能与可移植性好。加速器使用 GMem API 将内存接入统一地址空间后,可自动获得 GMem 面向异构内存编程优化的能力。与此同时,加速器驱动无需重复实现内存管理框架,大幅降低开发维护带来的成本。开发者使用一套统一申请、释放的 API,即可完成异构内存编程,无需处理内存搬移等细节。在加速器 HBM 内存不足时,GMem 可将 CPU 内存作为加速器缓存,透明地超分HBM,无需应用手动 swap。GMem 提供高效免搬移的内存池化方案,当内存池以共享方式接入后,可解决数据反复搬移的痛点。

ModelFS模型启动加速

ModelFS 针对大语言模型(LLM)推理启动阶段的模型加载瓶颈进行优化。现有相关工作主要通过优化推理框架来提升模型加载性能,这种方法往往以牺牲兼容性为代价。然而,基于我们的工业实践经验,兼容性是决定一项技术能否在实际场景中广泛应用的关键因素。本工作在保证强兼容性的前提下,通过优化文件系统的缓存策略,实现了模型加载性能的领先水平。ModelFS 在内核中设计了一个非侵入式、灵活且轻量级的可编程页缓存框架,允许用户自定义文件系统的页缓存策略。基于可编程页缓存,我们进一步设计了面向模型加载优化的缓存策略的参考实现。

  • ModelFS-K:ModelFS 的内核模块,提供文件系统(FS)页缓存可编辑框架。核心设计是一个堆叠FS,可以挂载到现有 FS 之上,ModelFS-K 将底层文件系统的相关逻辑用 UPS(用户态调用)重定向到用户态实现的 prefetch 和 evict 函数。
  • ModelFS-U:ModelFS 的用户态模块,提供缓存策略的运行时。提供一套 VFS-like 的用户态编程框架,模型实现者 /IO 优化者可以根据模型的加载 IO 特性自定义缓存策略。用户需实现 init(),exit(),prefetch(),evict(),ModelFS-U 会将它们注册到 ModelFS-K 中,并在运行过程中负责解析 IO 事件和进行异步数据预取/淘汰。

AI for OS

当前,openEuler和AI深度结合,一方面,基于openEuler操作系统,研发出了openEuler Intelligence,初步实现基于知识库的智能问答、基于语义接口的工作流编排等功能,在此基础上,openEuler Intelligence集成了部分系统服务,让openEuler更智能。

智能问答

openEuler Intelligence目前支持Web和智能Shell两个入口。

  1. 智能规划、调度和推荐:智能规划:openEuler Intelligence 的 Agent 应用可以基于用户的输入和当前可用的工具实时规划运行步骤,直至完成用户目标或者达到步骤执行上限。智能调度:openEuler Intelligence支持用户在一个应用中定义多个工作流,基于用户的查询,openEuler Intelligence会自动的提取参数且选择最为合适的工作流进行工作。智能推荐:openEuler Intelligence基于用户的查询和工作流的运行结果,推荐用户接下来可能会使用的工作流,增加任务的完成概率,简便应用的使用。
  2. 工作流:语义接口:语义接口是指含有自然语言注释的接口形式,openEuler Intelligence提供了两种语义接口注册方式。工作流编排及调用:openEuler Intelligence允许用户将系统提供的语义接口以及用户注册的语义接口以可视化的形式连线成工作流,并支持用户对工作流进行调试且以应用的形式进行发布和使用,工作流在调试和使用过程中会展示中间结果,降低用户调试成本,提升用户交互体验。
  3. Agent 应用:mcp 注册、安装和激活:mcp 是当前比较主流的一种 AI 相关协议,它支持用 sdk 将复杂多样服务统一封装,带有天然的语义信息,并支持 AI 对基于 mcp 改造后服务下的工具进行比较便捷的调用。Agent 构建和应用:当前 intelligence 支持以 mcp 和不同的大模型结合构建 Agent,这些构建完成的 Agent 可以基于配置的大模型信息以及后续用户输入的目标,将用户的目标拆解成阶段性需求,最后使用 mcp 服务下的工具将阶段性需求完成,直至达成用户的目标。
  4. RAG:RAG(检索增强技术)是为了增强大模型长期记忆能力和降低大模型训练成本诞生的技术,相较传统RAG,openEuler Intelligence中的RAG技术在检索前处理、知识索引、检索增强算法和检索后处理方面做了改进。
  5. 团队管理:团队管理是 openEuler Intelligence 中的 RAG 技术的基础能力之一,其通过 RBAC 的机制来管控团队内成员对角色、成员和资产的访问,以增强知识库整体的易用性。
  6. 语料治理:语料治理是 openEuler Intelligence 中的 RAG 技术的基础能力之一,其通过上下文位置信息提取、文本摘要和OCR增强等方式将语料以合适形态入库,以增强用户查询命中期望文档的概率。
  7. 自动化测试:自动化测试是 openEuler Intelligence 中的 RAG 技术的基础能力之一,其通过自动化数据集生成和测试评估识别知识库和检索增强算法等配置的不足。

智能调优

openEuler Intelligence 智能调优功能目前支持智能 shell 入口。 在上述功能入口,用户可通过与 openEuler Intelligence 进行自然语言交互,完成性能数据采集、系统性能分析、系统性能优化等作业,实现启发式调优,已支持通过 MCP 协议实现调优意图识别。

智能诊断

  1. 干扰检测巡检:调用容器干扰检测工具,对节点中存在监控的节点在指定的时间段内的干扰进行检测,报告节点中存在的干扰情况吗,报告存在干扰的容器和对应指标。
  2. 干扰源分析:调用容器干扰源分析工具,对节点中存在的所有受干扰容器进行分析,报告各个受干扰容器的 Top3 干扰源容器和对应的关联指标(如CPU run delay)。
  3. 干扰恢复建议生成:根据干扰源分析定位结果,调用干扰恢复建议工具,对存在的干扰进行分析并给出干扰恢复建议报告,提供各条建议的依据和示例指令。

AI 集群慢节点定界

AI 集群在训练过程中不可避免会发生性能劣化,导致性能劣化的原因很多且复杂。现有方案是在发生性能劣化之后利用日志分析,但是从日志收集到问题定界根因诊断以及现网闭环问题需要长达3-4天之久。基于上述痛点问题,我们设计了一套在线慢节点定界方案,该方案能够实时在线观测系统关键指标,并基于模型和数据驱动的算法对观测数据进行实时分析给出劣慢节点的位置,便于系统自愈或者运维人员修复问题。 基于分组的指标对比技术提供了 AI 集群训练场景下的慢节点/慢卡检测能力。这项技术通过 sysTrace 实现,新增内容包括配置文件、算法库、慢节点空间维度对比算法和慢节点时间维度对比,最终输出慢节点异常时间、异常指标以及对应的慢节点/慢卡ip,从而提高系统的稳定性和可靠性。

智能容器镜像

openEuler Intelligence 目前支持通过自然语言调用环境资源,在本地协助用户基于实际物理资源拉取容器镜像,并且建立适合算力设备调试的开发环境。当前版本支持三类容器,并且镜像源已同步在 dockerhub 发布,用户可手动拉取运行:

  1. SDK层:仅封装使能AI硬件资源的组件库,例如:cuda、cann等。
  2. SDK + 训练/推理框架:在SDK层的基础上加装tensorflow、pytorch等框架,例如:tensorflow2.15.0-cuda12.2.0、pytorch2.1.0.a1-cann7.0.RC1等。
  3. SDK + 训练/推理框架 + 大模型:在第2类容器上选配几个模型进行封装,例如llama2-7b、chatglm2-13b等语言模型。

嵌入式场景创新

openEuler 发布面向嵌入式领域的版本 openEuler 24.03 LTS SP3,构建了一个相对完整的综合嵌入系统软件平台,在南北向生态、关键技术特性、基础设施、落地场景等方面都有显著的进步。openEuler Embedded 24.03 LTS SP3 版本围绕以制造、机器人为代表的OT领域持续深耕,通过行业项目垂直打通,不断完善和丰富嵌入式系统软件栈和生态。在软件包生态方面,合入了 oebridge 特性,支持在线一键安装 openEuler 镜像仓软件包,并支持在 Yocto 镜像构建时通过 oebridge 直接安装 openEuler RPM 包快速实现镜像定制。此外,还扩展支持了 oedeploy 特性,能够快速完成AI软件栈、云原生软件栈的部署。在内核支持方面,持续完善了 meta-openeuler 的内核配置,配合 oeaware 实时调优功能实现干扰控制以增强系统实时性。未来 openEuler Embedded 将协同 openEuler 社区生态伙伴、用户、开发者,逐步扩展支持龙芯等新的芯片架构和更多的南向硬件,完善工业中间件、嵌入式 AI、嵌入式边缘、仿真系统等能力,打造综合嵌入式系统软件平台解决方案。

  • 南向生态:openEuler Embedded Linux当前主要支持ARM64、x86-64、ARM32、RISC-V等多种芯片架构,未来计划支持龙芯等架构,从24.03 版本开始,南向支持大幅改善,已经支持树莓派、海思、瑞芯微、瑞萨、德州仪器、飞腾、赛昉、全志等厂商的芯片。
  • 嵌入式弹性虚拟化底座:openEuler Embedded的弹性虚拟化底座是为了在多核片上系统(SoC, System On Chip)上实现多个操作系统共同运行的一系列技术的集合,包含了裸金属、嵌入式虚拟化、轻量级容器、LibOS、可信执行环境(TEE)、异构部署等多种实现形态。
  • 混合关键性部署框架:openEuler Embedded打造了构建在融合弹性底座之上混合关键性部署框架,并将其命名为MICA(MIxed CriticAlity),该框架旨在通过一套统一的框架屏蔽下层弹性底座形态的不同,从而实现Linux和其他OS运行时便捷地混合部署。依托硬件上的多核能力使得通用的Linux和专用的实时操作系统有效互补,从而达到全系统兼具两者的特点,并能够灵活开发、灵活部署。
  • 北向生态:700+嵌入式领域常用软件包的构建;提供软实时能力,软实时中断响应时延微秒级;集成 OpenHarmony 的分布式软总线和hichain点对点认证模块,实现 openEuler 嵌入式设备之间互联互通、openEuler 嵌入式设备和 OpenHarmony 设备之间互联互通;支持iSula容器,可以实现在嵌入式上部署openEuler或其他操作系统容器,简化应用移植和部署。支持生成嵌入式容器镜像,最小大小可到5MB,可以部署在其他支持容器的操作系统之上。
  • UniProton硬实时系统:UniProton 是一款实时操作系统,具备极致的低时延和灵活的混合关键性部署特性,可以适用于工业控制场景,既支持微控制器 MCU,也支持算力强的多核 CPU。目前关键能力如下:
    1. 支持Cortex-M、ARM64、X86_64、riscv64架构,支持M4、RK3568、RK3588、X86_64、Hi3093、树莓派4B、鲲鹏920、昇腾310、全志D1s。
    2. 支持树莓派4B、Hi3093、RK3588、X86_64设备上通过裸金属模式和openEuler Embedded Linux混合部署。
    3. 支持通过gdb在openEuler Embedded Linux侧远程调试。

超节点场景创新

算力需求指数级增长与高速互联技术突破,驱动硬件从单节点向超节点加速演进,未来数据类、资源类、业务类的核心诉求从单机性能渐变到超节点,具有以下特点:

  1. 资源池化:计算、内存、互联和存储等均可池化,支持任意多对多协同。
  2. 规模扩展:按需灵活扩展,利用率高,大范围、整系统相同编址机制,控制静态、传输、动态时延。
  3. 长稳可靠:10倍提升长稳运行时间,自动避障,自动恢复,易部署,机房环境适应性强,易扩展,从模组到柜级均可扩展。

面对超节点调度、池化、通信、虚拟化等诉求,openEuler异构融合系统升级,支持超节点形态,加速释放超节点异构算力。

超节点 OS 架构

在超节点应用落地过程中,业界面临三大核心挑战:如何简化开发流程,实现业务“零修改”平滑迁移,如何精准匹配多样化算力供给,实现按需高效释放,如何应对系统复杂性提升,保障应用高可用性。openEuler异构融合系统针对上述挑战方案如下:

  1. 新增系统高阶服务能力,将业务迁移从“复杂适配”简化为“零修改适配”,大幅降低开发与迁移成本。
  2. 强化异构融合核心子系统,提供异构融合通信与虚拟化能力,精准匹配算力需求,实现利用率最大化。
  3. 完善池化设备管理体系,通过灵活扩展支持超节点形态,以池化高可靠管理防范故障扩散,筑牢业务稳定运行根基。

灵衢系统架构

超节点是灵衢计算系统的核心,通过灵衢重构计算系统,打破计算主机边界,实现智算和通算超节点扩展并获得性能规格收益,是面向未来 AI 时代的目标计算系统架构。 灵衢超节点打破传统主机边界,在超低时延,多协议归一的灵衢总线级互联的超节点域内,通过计算资源全量池化、平等互联,实现计算资源的灵活组合,超大规模组网和系统高可用性。灵衢计算系统参考架构分为四层,共同发挥灵衢计算系统超节点架构优势:

  1. 灵衢硬件系统,实现超节点可定义计算

    • UnifiedBus(UB/UB Firmware/BMC):灵衢超节点计算系统基础,基于灵衢实现计算集群总线级互联、协议归一、平等系统、全量池化、大规模组网、高可用性。
    • 灵衢互联结构管理器(UBFM):完成灵衢的互联配置,实现计算资源的灵活、高效聚合,优化计算互联SLA(时延、带宽、可靠性),实现灵衢超节点灵活算力使能。
  2. 操作系统灵衢组件(UB OS Component)完成灵衢和设备的使能,进行统一抽象与管理

    • UB OS Component 通过扩展 Linux 内核,原生支持超节点计算系统,实现对灵衢设备的统一抽象和管理。
    • 同时保持POSIX接口兼容,实现现有应用的快速迁移。通过openEuler社区,使能操作系统生态,实现灵衢计算系统的开放创新。
  3. 灵衢系统高阶服务(UB Service Core),使能超节点性能最优

    • 充分发挥灵衢计算系统在内存池化、通信、分布式操作等方面的独特优势,同时简化灵衢资源管理与调度的复杂性,提供了系列的灵衢系统高阶服务 UB Service Core,使能计算业务应用,快速发挥灵衢超节点系统优势,获得性能收益。

操作系统灵衢组件

操作系统灵衢组件(UB OS Component)是在 OS 原有内存管理、通信、设备管理和虚拟化框架上扩展支持灵衢,扩展的4个功能分别是:

  1. Device Mgmt:提供 UB 总线、UB 设备管理能力,实现计算节点内 UB 设备热插拔、配置。包含模块:UB Device Mgmt、sysfs、udev 和 UB User Driver。
  2. Memory Mgmt:提供 UB 总线域内内存语义访问能力,实现跨计算节点跨设备内存借用、共享。包含模块:DMA/SVA Memory Mgmt、Pooled Memory Mgmt、UBMM Lib 和 Memory Allocator。
  3. Communication:提供跨计算节点、跨设备通信和远程调用功能。包含模块:Connection Mgmt & Communication、UBComm Lib 和 socket。
  4. Virtualization:提供 UB 设备直通虚拟机能力。包含模块:qemu、libvirt 和 vfio-ub。

灵衢设备管理

UB 设备管理包括 UBus Driver、vfio-ub 和 ubutils 三个模块,对用户提供 UB 设备管理接口,包括给 UB 设备驱动提供了基本的设备发现、设备注册、中断使能等总线服务,UB 设备直通用户态的服务,以及给用户提供查询 UB 设备信息和配置服务。各类 UB 设备可以注册到 UB 总线上,对用户提供相应的功能。

在 OS 内,UB 设备的发现、注册、驱动加载均由设备管理实现,分单机和集群场景:

  1. 单机场景:单台服务器主机独立工作,每台服务器独享连接在主机上的所有 UB 设备,单机上的 UBus Driver 完成所有 UB 设备的枚举发现和使能,配合 vfio-ub 提供 UB 设备直通用户态能力。
  2. 集群场景:超节点形态下 UBus Driver 提供分配给计算节点的 UB Entity 发现和使能,并支持池化设备接入和移除,配合 vfio-ub 提供 UB 设备直通用户态能力。

灵衢内存管理

现有总线采用 Host-Device 模型,以 Host(CPU)为中心,Host 管理每一个 Device。在这个模型之下,Host 访问 Device 内存、Device 访问 Host 内存、Device 访问 Device 内存共三类访存路径有单独实现。UB 统一上述访存模型,根据一个访存发起流程将相关的节点分为 User 和 Home,User 可以通过同步(Load/Store)或者异步(DMA)的方式访问 Home 侧内存资源。 基于 UB 总线的能力,OBMM 模块提供了节点间数据通路配置与跨节点数据一致性维护能力。完成配置后,用户可以在 UB 互联的集群中,在一个节点上访问另一个节点上的内存,实现跨节点内存共享、内存池化与节点间借用等功能。

灵衢通信

灵衢通信库是分布式通信软件库,为数据中心网络、超节点内、服务器内的卡与卡之间提供高性能的通信接口,使能和释放 UB 硬件能力。

  • UMS:UMS 支持对接Socket 抽象层,是北向兼容 Socket 编程接口,南向基于灵衢高性能网络进行数据传输的内核网络协议栈,透明加速 TCP 应用,实现性能提升。
  • URMA:URMA 是灵衢通信的基础软件库,屏蔽硬件差异,基于灵衢高性能网络提供读写、收发、原子操作等远端内存访问语义,是灵衢通信应用的基础。
  • URPC:URPC 是灵衢原生的统一远程过程调用,支持灵衢原生高性能主机间和设备间 RPC 通信,以及 RPC 加速。

灵衢设备虚拟化

在云计算场景中,通过虚拟化将物理机上的硬件资源隔离给多个虚拟机,极大提升了资源利用率。UB 作为新一代高速互联总线,同样支持虚拟化能力。 当前设备虚拟化的主流技术主要包括如下几种:IO 全虚拟化、IO 半虚拟化、硬件辅助 IO 虚拟化。传统架构下每一台服务器都是通过插在其上的网卡连接到 TOR 交换机,所以最大可支持的带宽是固定的,在实际应用过程中会带来闲时带宽利用率低、忙时带宽不够用、服务器间带宽压力不均衡等问题。

在 UB 总线中,UE(UB Entity)作为一个 UB 设备相对隔离的功能单元,UB 虚拟化的功能同样支持通过直通的方式将其直接分配给虚拟机使用,以达到设备原生的性能,UB 虚拟化的功能同样支持通过直通的方式将其直接分配给虚拟机使用,以达到设备原生的性能,UB 设备虚拟化在传统的硬件辅助 IO 虚拟化之上扩展对池化 UB 设备的直通访问。通过将网卡、DPU 设备资源池化,可以解决上述问题。所有设备资源统一在设备池中,所有服务器通过共用设备池里的网卡资源,可以根据服务器实际的网络负载情况动态申请使用相对应的网卡资源,达到提升设备资源利用率,避免网络带宽瓶颈。同时,灵衢特有的内存管理与大带宽通信特性,能给虚机提供更灵活的内存超分与极速热迁移能力。

  • UBNative:基于 UB 协议构建的高性能设备虚拟化解决方案,通过模拟 UB 设备模型,实现虚拟机对 UB 总线的无缝接入。依托 VFIO 技术,将 UB 设备以直通方式给虚拟机使用,确保在虚拟机环境中充分发挥设备原生性能,实现近硬件级的运行效率与资源利用率,为高吞吐、低延迟场景提供稳定支撑。
  • 内存超分:随着主机内存规模的增大,内存成本在整体 TCO 占比持续走高,云场景下提升内存利用率的目标越来越重要。实现基于灵衢超节点架构下的内存超分功能,构建面向大页虚拟机、直通虚拟机的内存回收方案,充分回收虚拟机内部的无用内存,转换让其发挥业务价值,从而能提升虚拟化内存利用率,进一步降低云厂商 TCO。
  • 极速热迁移:基于 URMA 内存读写语义,利用灵衢高性能网络进行内存数据迁移,减少迁移中断时间、减少资源开销、并提升高内存压力虚拟机的迁移成功率。

灵衢系统高阶服务

面向灵衢超节点,为了应用快速使能超节点能力,灵衢系统构建了 UB Service Core,封装 UB 底层能力、集群拓扑等,简化并兼容现有生态,让应用像使用本地资源一样使用超节点资源,简化应用开发,使能灵衢超节点。UB Service Core 构筑5大集群系统服务,释放超节点平等互联架构优势,全面使能应用加速30%~50%,促进灵衢系统软件生态构筑。包含5部分:

  1. UB Service Core Engine(简写:UBS Engine):支持内存、DPU资源池化管理与动态调度,支持分布式自选主,支持 N 节点场景下最多 N-1 节点失效的高可用,是灵衢计算系统的控制面核心参考实现。
  2. UB Service Core Memory(简写:UBS Mem):支持统一内存编程,实现灵衢超节点的共享内存、池化内存。
  3. UB Service Core Communication(简写:UBS Comm):基于超节点提供高性能、高可靠以及生态兼容(用户态 Socket/Verbs over UB)的通信协议。
  4. UB Service Core IO(简写:UBS IO):基于超节点,提供应用亲和的全局数据读写缓存系统高阶 IO 服务。
  5. UB Service Core Virt(简写:UBS Virt):支持虚拟化池化,热迁移策略决策,极速快恢和容灾,虚机/容器间极速通信等能力,使能虚拟化性能提升。

内核创新

openEuler 24.03 LTS SP3 基于 Linux Kernel 6.6 内核构建,在此基础上,同时吸收了社区高版本的有益特性及社区创新特性。

  • 文件系统支持可编程页缓存:针对大模型推理场景中模型加载 I/O 效率底下问题,实现一种页缓存可编程框架。该框架以透明方式堆叠于当前文件系统之上,将文件系统缺页事件转发到用户态,使应用可以根据负载特性在用户态对文件系统的缓存策略进行定制,从而对不同模型的加载进行 I/O 效率的显著优化。

  • 跨进程零拷贝数据传输机制:提供高效的节点内进程间数据传输接口,应用可将源进程中的给定虚拟内存地址空间上关联的页面映射到目的进程中的虚拟地址空间上,兼容 PMD 大页和 PTE 小页映射。映射后的目的地址访问权限和源地址保持一致。

  • FUSE 文件系统支持 io_uring 通信接口:当前 FUSE 架构中,用户态守护进程与内核态驱动模块通过字符设备 /dev/fuse 进行通信存在性能瓶颈。

  • IO 混部场景 IO QoS 控制器 IOInflight:在高密混部场景中,IO 资源争抢常导致在线业务干扰率高达 40% 以上,而传统的 blk-throttle 静态限流虽能降低干扰却严重浪费磁盘带宽。为此引入 IOInflight 控制器,通过基于时延监控与队列深度的动态节流机制,实现在线业务的精准抢占。该控制器将干扰率和底噪控制在 5% 以内,有效保障在线业务时延,同时使离线业务带宽较传统硬限制模式提升 2 倍。

  • 基于 Xcall 的 epoll_wait 异步预取:面向特定系统调用的性能优化场景,Dynamic Xcall 通过劫持机制执行定制系统调用,允许用户在不侵入式修改内核的情况下,以应用程序 ELF 文件的粒度进行系统调用劫持,执行定制化系统调用。基于该框架实现了一套非内核侵入式修改的 epoll 异步预取示例内核模块,可以在 Redis 等场景获得一定的性能收益。

众核高密

服务器芯片由多核进入众核时代(>256C),对操作系统提出新的挑战。提升Rack计算密度、降低数据中心TCO,众核服务器已成为互联网行业主流选择,随着云技术和业务规模发展,容器化部署成为互联网行业的主流业务部署形态,在这种场景下,系统串行开销和同步开销限制可扩展性,干扰问题凸显,资源利用率低,影响容器部署扩展性的串行访问开销和同步开销主要来自软硬共享资源争用。

本期主要采用轻量虚拟化按NUMA分域拆分资源、域内实现资源容器级隔离增强,降低因软硬件资源争用导致的性能干扰,提升容器部署扩展性。关键技术特性包括虚拟机内存 QoS控制、虚拟设备 NUMA 亲和、轻量虚拟化、CPU 分域调度、文件系统块分配干扰隔离、高效 slab 回收、网络 tcp hash 干扰隔离、Cgroup 隔离增强、干扰监测、鲲鹏内存/Cache QoS 管控机制 MPAM、QoS 策略动态配置、IO 混部场景 IO QoS 控制器 IOInflight。

DevStation 开发者工作站

DevStation 是基于 openEuler 的智能开发者工作站,专为极客与创新者而生。旨在提供开箱即用、高效安全的开发环境,打通从部署、编码、编译、构建到发布的全流程。它融合了一键式运行环境与全栈开发工具链,支持从系统启动到代码落地的无缝衔接。无需复杂安装,即可体验开箱即用的开发环境,通过新增 MCP AI 智能引擎,快速完成社区工具链调用,实现从基础设施搭建到应用开发的效率飞跃。

  • 开发者友好的集成环境:发行版预装了广泛的开发工具和 IDE,如 VS Codium系列等。支持多种编程语言,满足从前端、后端到全栈开发的需求。
  • 智能 CVE 修复与安全运维:深度集成 CVE 智能修复系统。该系统利用 LLM 分析、代码相似度算法(Levenshtein 距离)与自动化 back-porting 流程,智能识别并解决补丁应用中的代码冲突,在保留核心修复逻辑的前提下,将人工解决冲突的平均耗时从4小时降低至约10分钟,极大提升了安全漏洞的响应与修复效率。
  • 社区原生工具生态:新增 oeDeploy(一键式部署工具)、epkg(扩展软件包管理器)、devkit 和 DevStation智能助手,实现从环境配置到代码落地的全链路支持。oeDevPlugin 插件 + oeGitExt 命令行工具支持:专为 openEuler 社区开发者设计的 VSCodium 插件,提供 Issue/PR 可视化管理面板,支持快速拉取社区代码仓、提交 PR,并实时同步社区任务状态。DevStation智能助手:支持自然语言生成代码片段、一键生成 API 文档及 Linux 命令解释。
  • 图形化编程环境:集成了图形化编程工具,降低了新手的编程门槛,同时也为高级开发者提供了可视化编程的强大功能,预装 Thunderbird 等办公效率工具。
  • MCP 智能应用生态构建:DevStation 深度集成 Model Context Protocol(MCP)框架,构建完成的智能工具链生态,预装 MCP 智能工具链,支持 oeGitExt、rpm-builder 等核心 MCP Server,提供社区事务管理、RPM 打包等能力,将传统开发工具(如 Git、RPM 构建器)通过 MCP 协议进行智能化封装,提供自然语言交互接口。并提供完整的 MCP 自动化转换与质量保障工具链,能够基于社区现有工具和测试套(mugen)自动生成高质量、可测试的 MCP Server,并配套 mcp-testkit 测试框架确保服务可靠性。
  • 系统部署与兼容性增强:广泛的硬件支持,特别优化对主流笔记本 /PC 硬件的兼容性(触摸板、Wi-Fi、蓝牙),重构内核构建脚本(kernel-extra-modules),确保裸机部署体验。灵活部署形态、支持 LiveCD(一键运行无需安装)、裸机安装、虚拟机部署。
  • 全新安装工具 heolleo:heolleo 是一款专为 DevStation 设计的现代化客户端工具。其核心使命是简化 DevStation 的安装流程。采用模块化设计使其可以轻松扩展以支持不同的硬件架构(如 x86/ARM)、文件系统或引导加载器(GRUB 等)。支持从本地 ISO 镜像、网络地址(HTTP/FTP)等快速获取系统文件,提供灵活的安装方式:本地 ISO 安装和网络安装。

DevStation 智能助手(Polymind)

DevStation 自带桌面 AI 助手软件,提供对话窗口,主动识别并理解用户的意图,支持用户通过自然语言的形式与操作系统交互,大幅降低开发者开发、运维和使用门槛。

  • 交互 UI 层:DevStation 智能助手提供自然语言交互 UI,用户诉求会被传递到 Agent Runtime 进行处理。
  • Agent Runtime:作为整个智能助手的大脑,理解用户的意图并拆解转换成子任务,将任务委派给集成在 DevStation 中的 Agent、Mcp 执行,循环委派调度,直到所有子任务完成。
  • Agents Inside DevStation:依托于 openEuler 庞大的 Mcp、Agent 软件仓库,openEuler DevStation 正逐步演变成由 Agent 构成的 Agentic OS,当前 DevStation 智能助手除了内置的 Agent,还支持通过 DevStation 中的应用商店选择安装相关的 Mcp 和 Agent。

部署工具(oeDeploy)

oeDeploy 是一款轻量级的软件部署工具,旨在帮助开发者快速、高效地完成各类软件环境部署,对单节点与分布式场景均可适配。

  • 多场景支持 & 主流软件一键部署:支持单节点应用与集群软件环境的一键部署,已经支持openEuler社区工具链、主流云原生软件、常用AI开发组件、常用RAG工具的快速部署,新增支持了CANN开发套件与昇腾NPU驱动的快速部署能力。
  • 灵活的插件化管理 & 优秀的部署体验:oeDeploy提供可扩展的插件架构,灵活管理多种部署能力,开发者也可以快速发布自定义部署插件。新版本oeDeploy优化了插件源的管理,支持一键生成本地插件源,便于开发者快速发布自定义插件。oeDeploy支持极简的命令行操作方式,在软件商店DevStore上线,支持可视化操作。用更少的代码,实现更高效的软件部署体验。
  • 高效部署 & 智能开发:oeDeploy发布了MCP服务,在DevStation中实现开箱即用,借助大模型的推理能力,支持用自然语言完成各类软件的一键部署,部署效率提升2倍;支持将用户文档快速转换成可以直接运行的oeDeploy插件,开发效率提升5倍。

DevStation 开发者软件商店(DevStore)

DevStore 是 openEuler 桌面版本的应用商店,是面向开发者的软件分发平台,支持 MCP 服务、oeDeploy 插件的检索与快捷部署功能。在 DevStation 平台上实现开箱即用。

  • MCP服务一键安装:DevStore借助openEuler社区丰富的软件生态,以rpm软件包的形式处理MCP运行所需的软件依赖,并通过内置的服务管理工具,在智能体应用中快速部署MCP服务。自动帮助用户解决软件依赖与MCP配置问题,大幅提升用户体验。目前已支持80+MCP服务。
  • oeDeploy插件快速部署:DevStore借助oeDeploy工具实现主流软件的快速部署,大幅度降低开发者部署软件的时间成本。包括Kubernetes、Kuberay、Pytorch、TenserFlow、DeepSeek等AI软件,EulerMaker、DevStation智能助手等社区工具链,以及RagFlow、Dify、AnythingLLM等主流的RAG工具。

LLVM for openEuler 编译器

LLVM for openEuler 编译器基于开源LLVM软件进行深度打造,是面向服务器互联网行业、数据中心新应用、通算 AI 新场景和视频编解码等高算力场景的高性能编译器。同时在openEuler 社区打造国内的 LLVM 基线,提供高性能、安全可靠、易创新的 LLVM 下游社区稳定的发行版,已支持主流的系统语言(C/C++)和芯片架构(X86/AArch64/RISCV/LoongArch/申威等)。LLVM for openEuler编译器在openEuler 24.03 LTS SP3版本引入以下编译特性,优化数据库、压缩解压缩等相关应用的运行效率,释放软件的极致性能。

  • AArch64字节序转换加速优化:在常见数据库如MySQL等应用中,数据是以大端字节序进行存储,在加载到内存中使用的时候,需要先转换为小端字节序然后进行后续计算,这通常需要由"按Byte进行load"-"移位"-"按位或"步骤循环操作,带来性能开销。该优化高效使能AArch64 REV系列指令,加大load位宽以减少load次数以及减少移位和按位或操作,提升应用性能。
  • Machine Sink增强优化:在编译器优化过程中,通常会把指针类型的循环迭代变量的迭代操作(如循环内"ptr++"操作)下沉到循环末尾,如果循环下一迭代开始存在load操作并依赖该指针变化后的值时,就会出现数据依赖而造成指令stall。该优化通过合理调度指令位置来避免因数据依赖而造成的指令stall。
  • AArch64 Loop Idiom优化:循环俚语优化用于识别广泛应用中常见的循环格式,使用AArch64 SVE等灵活的指令能力将其转换为优化版本的循环实现,来大幅提升循环的执行效率。

Go for openEuler 编译器

Go for openEuler是基于开源Golang开发,是一款高性能、高可靠、易开发的Golang发行版,致力于打造生态兼容、极致体验、亲和openEuler的高性能编译器。主要面向云原生、微服务应用等对敏捷开发和运行性能都有要求的容器云场景,围绕业界主流Go业务负载进行优化,解决实际业务中由原生Golang能力不足导致的性能问题,并适配国产龙芯、鲲鹏等硬件平台,充分释放国产硬件算力。

  • CFGO反馈优化:在保证程序功能不变的前提下,通过收集程序运行时信息,指导编译优化进行更准确的优化决策,获得性能更优的目标程序。基于程序局部性原理,使热指令紧密排布,优化cache/TLB命中,有效降低程序前端瓶颈,提升程序性能。
  • ARM原子指令优化:在部分业务场景中,Golang运行时调用CAS锁、LD/ST指令开销较大,改为ARM亲合指令序列实现,可实现性能提升。
  • 运行时GC优化:结合特征,插入软件预取;抽取GC协程开销资源参数为运行时参数,支持根据不同业务特征进行动态调整。
  • 内存页分区扩展优化:Go默认使用8KB页为基础单位,在小对象固定使用单个8KB页管理时,容易出现频繁创建和查找内存对象的情况,通过对classsize对象分区以最优粒度页面进行内存分配和释放,可以有效提升内存管理效率,在Go Malloc Benchmark上性能平均提升10%,其中MallocLargeStruct用例提升50.29%。

毕昇 JDK 支持堆内存扩容

互联网容器化部署应用的模式下,大部分客户容器场景下容器资源支持垂直伸缩,当前OpenJDK8的最大堆只能在启动时支持修改,无法支持在线动态扩缩,Java应用无法在线使用到容器扩容出的内存,需要Java应用启动时重新设置最大堆;鉴于此问题,毕昇JDK在毕昇JDK8、毕昇JDK21、毕昇融合JDK中的G1GC、PSGC上实现堆内存上限在线伸缩能力,允许用户在应用运行时动态更新Java堆内存的上限,而无需重启JVM。

编译器 UDF 自动 native 框架

针对开源大数据 JVM 执行效率低的缺点,UDF 自动 native 框架负责将 Java UDF 自动转换为 C/C++ Native UDF,并进一步从内存高效管理、硬件亲和等维度提升大数据处理性能。UDF 自动 native 框架致力于实现用户无感知、全自动的 Java UDF native 加速机制。UDF 自动 native 框架主要由 UDF parser、UDF IR Optimizer、UDF code Generator、UDF code compiler 等模块组成。

UDF parser 将业务 jar 包字节码自动转换为 IR 代码,并基于 UDF 特征提取出 UDF 代码;UDF IR Optimizer 从内存对象自动管理、硬件亲和加速等维度对 UDF IR 进行优化;UDF Code Generator 将 UDF IR 对等转换为 native 代码;UDF code compiler 将 UDF native 代码在线编译为 native 二进制。最后,UDF 的 native 二进制发布到大数据执行节点上,由大数据系统 native 执行引擎动态加载执行,提升大数据系统处理性能。

毕昇 JDK17 支持退优化可观测

JDK17 的 JFR Streaming API 功能,是 JFR 从“事后静态分析”迈向“实时监控”的关键特性。在传统的 JFR 使用模式中,流程是:记录 -> 停止记录 -> 转储为 .jfr 文件 -> 用 JMC 离线分析。这种模式是“事后分析”,对于排查已经发生的问题非常有效。Streaming API 引入了一种全新的模式:它允许 Java 应用程序在不中断 JFR 记录、不生成完整 .jfr 文件的情况下,实时、持续地从 JVM 内部订阅和消费 JFR 事件流。

在使用 Streaming API 的时候,通过本功能可以在 ****** 处获取当前时间之前的一段 jfr event,例如退优化事件。

Java
// 1. 创建一个 RecordingStream
RecordingStream rs = new RecordingStream();
// 2. 启用我们感兴趣的事件并配置设置
rs.enable("jdk.GCPhasePause").withPeriod(Duration.ofSeconds(1));
rs.enable("jdk.Deoptimization").withPeriod(Duration.ofSeconds(1));
// 3. 订阅特定事件并设置事件处理器(回调函数)
rs.onEvent("jdk.GCPhasePause", event -> {
// 从事件中读取字段
Duration duration = event.getDuration("duration");
String name = event.getString("name"); // 例如 "GC Pause"
*****************
shell:   jcmd JFR.start delay=-1 filename=xxx.jfr
*****************
});
// 4. 启动流(这是一个非阻塞调用)
rs.startAsync();

毕昇JDK21 KAE特性增强

KAE加解密是鲲鹏加速引擎的加解密模块,其依托修改OpenSSL库实现对底层KAE硬件的调用。因此应用代码只需调用OpenSSL库,KAE作为OpenSSL的底层引擎提供加速能力。KAEProvider介于应用和OpenSSL之间,提供一种便利的使用OpenSSL库及使能KAE加速的方式。 KAE压缩模块支持ZLIB、GZIP数据格式压缩,压缩带宽大大提升。现Java应用中或多或少都会使用到压缩解压缩特性,尤其在一些数据存储、http等场景压缩CPU占比可能高达70%+,开源zlib压缩速度成为瓶颈,若Java应用可以使能KAE-zlib将极大提高业务的性能。

过去的版本里KAEProvider支持OpenSSL1.x版本。随着2021年OpenSSL3.0版本发布,在架构上、可扩展性、安全性上都有所提升,是一个重大版本更新,后续进行安全通信开发的用户很可能会选择采用升级版本。然而OpenSSL1.x到OpenSSL3.0一部分API发生了废弃、新增或变化,因此KAEProvider无法直接支持使用,需要进行代码适配。 本特性添加后KAEProvider构建结果不变,但构建过程中不再依赖构建环境本地的OpenSSL库环境(之前构建目标产物libj2kae.so时需依赖构建环境下的OpenSSL1.x环境),使用哪个OpenSSL版本会在程序运行时动态判断和加载。 KAEProvider用法保持不变,并且用户使用本增强特性时也需要手动打开(修改OPENSSL_ENGINES环境变量和kae.useOpenSSLVersion配置),不修改原有加解密逻辑,不影响JDK原有功能和使用方式。 对于KAE zip支持,JDK中将动态库拆分:拆分libzip.so为libzip.so和libz.so,使其分别包含JNI和zlib代码。使能KAE-zlib:通过-DGZIP_USE_KAE参数来控制使能,压缩解压缩过程Java侧不做文件头尾的处理,使其压缩数据结构的生成和解析均依赖于底层的zlib库的ZLIB、GZIP压缩算法来完成。

毕昇JDK21元数据压缩

Java对象的存储会有额外的开销,即对象头,它用于存储与该对象相关的元数据信息。伴随存活对象的增多,以及大量小对象的存在,对象头占用空间问题也会愈发严重。本特性在Aarch64平台下将对象头从128/96 bits降到64bits。

在64位Hotspot中,Java 对象具有128位的对象头:一个64位的MarkWord字和一个64位的类指针。对象的平均大小通常为5-6个字,其中两个字始终由对象头占用。该特性利用了正常情况下MarkWord高位未被使用的特点,将类指针移动到MarkWord的高位,并通过缩短HashCode和修改标志位等方式,将对象头压缩至64位。

毕昇JDK21 JIT预热特性增强

本特性旨在使能Java进程启动后快速抵达峰值性能。Java进程从拉起到最终到达峰值,存在一个较为漫长的过程。其中解释器->采样->编译C1->进一步采样->编译C2的采样与在线JIT编译流程是应用预热过程的重要一环。本特性通过压缩该部分流程,有效加速VM启动与预热,助力应用快速达峰。毕昇JDK JProfilecache方案将应用程序的发布分成了两个阶段,分别是:

  • 记录阶段:在程序运行结束时,把热点方法的Profiling信息(主要是方法调用次数,回边次数)及该方法所属类(包括父类)输出到指定文件中。
  • 预编译:后续启动的时候,JVM读取热点方法所在类并进行预加载,同时会把热点方法加入到编译队列进行提前编译,使得在用户请求到来之前,跨过Profiling阶段,就把热点方法编译成为性能较高的Native Code,减少热点方法的预热开销。

毕昇JDK8特性增强

CompactStrings(紧凑字符串)是Java 9引入的一项重要内存优化特性,用于改进字符串的存储方式,显著减少内存占用。在Java 8及之前版本中,字符串内部使用char[]字符数组存储,每个字符占用2个字节(UTF-16编码),无论字符串实际内容如何。这导致在处理大量仅包含ASCII字符的字符串时,内存使用效率低下。目前,CompactStrings已从JDK17回合到毕昇JDK8,进一步提升毕昇JDK8整体性能。 CompactStrings将String对象内部的表示由一个UTF-16的char数组改为一个byte数组加上一个encoding标识字段。这个新的String类可以根据字符串中的内容将字符编码为Latin-1(一个字符1byte)或者UTF-16(一个字符2byte),encoding标识用于指示这个String是如何编码的,具体如下:

  1. 对于仅包含Latin-1字符的字符串,使用byte[]字节数组存储,每个字符仅占用1字节。
  2. 对于包含非Latin-1字符(如中文、日文等)的字符串,仍然使用char[]存储,每个字符占用2字节。
  3. 每个字符串对象包含一个编码标识(coder)字段,用于指示当前字符串的编码方式:
    • LATIN1(值为0):只包含Latin-1字符。
    • UTF16(值为1):包含其它字符(如中文、日文等)。

GCC for openEuler CFGO反馈优化特性增强

CFGO(Continuous Feature Guided Optimization)是GCC for openEuler的反馈优化技术名,指多模态(源代码、二进制)、全生命周期(编译、链接、链接后、运行时、OS、库)的持续反馈优化,主要包括以下两类优化技术:

  • 代码布局优化:通过基本块重排、函数重排、冷热分区等技术,优化目标程序的二进制布局,提升i-cache和i-TLB命中率。
  • 高级编译器优化:内联、循环展开、向量化、间接调用等提升编译优化技术受益于反馈信息,能够使编译器执行更精确的优化决策。

GCC CFGO反馈优化共包含三个子特性:CFGO-PGO、CFGO-CSPGO、CFGO-BOLT,通过依次使能这些特性可以缓解处理前端瓶颈,提升程序运行时性能。为了进一步提升优化效果,建议CFGO系列优化与链接时优化搭配使用,即在CFGO-PGO、CFGO-CSPGO优化过程中增加-flto=auto编译选项。

  • CFGO-PGO:CFGO-PGO在传统PGO优化的基础上,利用AI4C对部分优化遍进行增强,主要包括inline、常量传播、去虚化等优化,从而进一步提升性能。
  • CFGO-CSPGO:PGO的profile对上下文不敏感,可能导致次优的优化效果。通过在PGO后增加一次CFGO-CSPGO插桩优化流程,收集inline后的程序运行信息,从而为代码布局和寄存器优化等编译器优化遍提供更准确的执行信息,实现性能进一步提升。
  • CFGO-BOLT:CFGO-BOLT在基线版本的基础上,新增aarch64架构软件插桩、inline优化支持等优化,进一步提升性能。

AI 编译器

ANNC(Accelerated Neural Network Compiler)是专注于加速神经网络计算的AI编译器,聚焦于通过计算图优化,高性能融合算子生成和高效的代码生成和优化能力,加速推荐和大语言等模型的推理性能,并且从架构设计角度支持业界主流开源推理框架和不同硬件后端的接入,提高软件的可扩展性。

计算图优化是通过优化神经网络的计算流程,从算法角度减少冗余操作、混合精度改写和自动子图调度优化计算负载和提高缓存利用率,从硬件架构角度优化张量数据布局、算子融合和转换、子图切分调度,进一步优化负载,充分利用硬件资源。

高性能融合算子库生成和对接包括前端计算图模式识别和转换,高性能算子库查询和对接,以及算子库自动生成三部分,从汇编指令层面上通过数据预取、模型并行和新型指令集应用等优化手段,减少访存,提高并行计算效率。

ANNC旨在通过图编译优化和高性能算子生成和对接,提高AI推理速度和降低功耗,达到提高用户单位成本的推理效率的目的,同时通过软件兼容性和易用性设计减少用户的运营成本和环境影响。

CCA 机密计算

ARM CCA(Confidential Computing Architecture)是ARM v9新引入的机密计算架构规范,旨在为下一代计算设备定义标准化的机密计算解决方案。CCA引入了全新的Realm域作为可信执行环境,来保护正在使用中的数据和代码的机密性和完整性,即使面对拥有特权的基础设施软件或云服务提供商,也能得到有效保护。 openEuler基于ARM CCA机密计算架构规范,实现了OS相关组件(KVM、QEMU、libvirt、Guest kernel)对CCA的支持,提供了原生支持Realm机密虚机的社区版本,满足基于Realm机密虚机保护使用中数据的安全诉求,同时提供了兼容传统应用生态及虚机管理软件的易用性。

ARM CCA 通过以下核心组件协同工作,构建一种隔离的、受保护的执行空间,在代码执行和数据访问方面与正常世界完全隔离,成为Realm机密域。

  • Realm机密域:Realm是 CCA 的核心抽象,它是一种与正常世界(Non-secure)和安全世界(Secure,原来的Trustzone)并行的新类型执行环境。Realm是硬件隔离的,专为托管敏感代码和数据而设计。它独立于主机操作系统和 Hypervisor,它们可以管理Realm但无法访问其内部内容。
  • 动态管理:Hypervisor 可以应客户要求动态创建Realm,并为其分配内存和 CPU 资源。但在Realm初始化后,Hypervisor 会将其控制权移交给一个受保护的安全虚拟化模块RMM(Realm Management Monitor),此后 Hypervisor 便无法访问Realm内的秘密。
  • 内存管理:CCA 扩展了系统内存管理单元(MMU),使其能够识别和隔离Realm内存。任何从Realm外部(包括 Hypervisor)发起的访问尝试都会被硬件阻断,从而确保数据的机密性。
  • 远程证明:每个支持 CCA 的处理器都有一个基于硬件的唯一身份标识。当Realm启动时,它可以生成一份由硬件密码学签名的证明报告(Attestation Token)。用户可以获得这份报告,并验证其签名及组件度量值,从而确信他们的工作负载正在一个真实的、未被篡改的 ARM CCA 环境中运行。

virtCCA特性增强

当前virtCCA架构在启动方式上存在特定约束:其仅支持kernel与rootfs分离的启动模式(即内核镜像与根文件系统分别挂载)。然而,在主流云平台环境中,虚拟机的启动流程普遍依赖GRUB引导机制,这要求将UEFI固件(如EDK2)、内核(Kernel)及初始内存文件系统(initramfs)整合至单一磁盘镜像(如QCOW2格式)中。功能要点包括:

  1. 单镜像封装
    • 将 EDK2 固件、GRUB 引导程序、内核(Kernel)及 initramfs 整合至单一 QCOW2 磁盘镜像,形成完整启动栈。
    • GRUB 通过配置文件(grub.cfg)定位内核路径,要求内核与 initramfs 必须位于同一文件系统(如 EXT4/XFS)。
  2. 安全信任链传递
    • Secure Boot 机制:EDK2 验证 GRUB 及内核的数字签名,确保启动组件未被篡改。
    • 硬件资源协同:依赖 UEFI 运行时服务枚举硬件设备,为虚拟机管理程序(如 KVM)提供虚拟化资源池。
  3. 云原生优化
    • 支持快照克隆、根文件系统动态扩容(依赖 initramfs 中的 cloud-init 工具)特性。

virtCCA机密虚机热迁移

机密虚拟机热迁移是指在机密虚机(CVM)业务运行不中断的情况下,将其从一个机密计算环境安全地迁移至另一个经过验证的机密计算环境,并确保机密虚机中的敏感数据在迁移前、中、后始终处于加密或隔离保护之下。 virtCCA机密云主机热迁移通过迁移管理虚机MigCVM和安全世界Hypervisor TMM组件实现热迁移过程中机密虚机状态的机密性和完整性,包括如下功能要点:

  • 迁移源平台需要对目标平台进行身份验证,TMM组件需要对MigCVM进行可信度量;
  • 身份验证通过后,源平台和目标平台MigCVM完成迁移密钥协商;
  • 迁移源平台和目标平台建立加密安全会话,确保迁移数据的安全;
  • MigCVM对迁移状态进行管理和跟踪,确保迁移过程状态安全,管理异常状态;
  • TMM组件负责导出、导入virtCCA机密虚机内存状态及VCPU状态;
  • TMM组件基于迁移密钥对机密虚机状态数据进行加密,并对状态数据进行完整性校验。

oeAware采集、调优插件等功能增强

oeAware是在openEuler上实现低负载采集感知调优的框架,目标是动态感知系统行为后智能使能系统的调优特性。传统调优特性都以独立运行且静态打开关闭为主,oeAware将调优拆分为采集、感知和调优三层,每层通过订阅方式关联,各层采用插件式开发尽可能复用。 oeAware 的每个插件都是按oeAware 标准接口开发的动态库,包含若干个实例,每个实例可以是一个独立的采集、感知或调优功能集,每个实例包含若干个topic,其中 topic 主要用于提供采集或者感知的数据结果,这些数据结果可供其他插件或者外部应用进行调优或分析。

  • SDK提供的接口可以实现订阅插件的topic,回调函数接收oeAware的数据,外部应用可以通过SDK开发定制化功能,例如完成集群各节点信息采集,分析本节点业务特征。
  • PMU信息采集插件:采集系统PMU性能记录。
  • Docker 信息采集插件:采集当前环境Docker的一些参数信息。
  • 系统信息采集插件:采集当前环境的内核参数、线程信息和一些资源信息(CPU、内存、IO、网络)等。
  • 线程感知插件:感知关键线程信息。
  • 评估插件:分析业务运行时系统的NUMA和网络信息,给用户推荐使用的调优方式。
  • 系统调优插件:(1)stealtask:优化CPU调优(2)smc_tune(SMC-D):基于内核共享内存通信特性,提高网络吞吐,降低时延 (3)xcall_tune :跳过非关键流程的代码路径,优化 SYSCALL的处理底噪。
  • Docker调优插件:利用cpuburst特性在突发负载下环境CPU性能瓶颈。

约束限制

  • SMC-D:需要在服务端客户端建链前,完成使能smc加速。比较适用于长链接多的场景。
  • Docker 调优:暂不适用于 K8s 容器场景。
  • xcall_tune: 内核配置选项 FAST_SYSCALL 打开。
  • realtime_tune:需要配合Preempt-RT内核使用。
  • net_hard_irq_tune:TCP 网络通信业务。

虚拟化支持vKAE直通设备热迁移

KAE是基于鲲鹏920新型号处理器提供的硬件加速解决方案,包括HPRE、SEC、ZIP设备,可用于加解密和压缩解压缩,能够显著降低处理器消耗,提高处理器效率。KAE直通热迁移是指虚拟机在配置KAE直通设备时,进行热迁移的能力,可以为KAE设备的使用提供更强的灵活性和业务不中断的保障。 smmu脏页跟踪是实现直通设备高效、可靠的热迁移的关键技术。在ARM架构中,通过纯软件方式进行脏页跟踪,会带来了较大的性能损耗。HTTU(Hardware Translation Table Udate)允许硬件自动更新smmu页表状态,在进行写操作时会自动置对应页表项的写权限位,热迁移时扫描页表的写权限位进行脏页统计。

Global Trust Authority远程证明

GTA远程证明服务组件支持TPM/vTPM、VirtCCA及其IMA的远程证明,分为客户端和服务端。

  • 服务端提供了远程证明服务框架兼容可信计算及机密计算,支持证书、策略等的增删改查,Quote验证,随机数,JWT Token生成等能力。
  • 客户端支持采集本地TPM证据,并可与服务端交互,验证Quote。

本组件在安全性及易用性上也提供了多种能力。 安全性上支持数据库完整性保护、数据链路加密,验证防重放,SQL防注入,用户隔离,密钥轮换机制等一系列差异化安全竞争力。 易用性上支持护照模式及背调模式。客户端支持定时上报,响应挑战等多种验证模式。客户端及服务端支持rpm包及docker安装部署。

Kuasar机密容器

Kuasar 统一容器运行时在支持安全容器的基础上添加了对机密容器的支持。用户可以通过配置 iSulad 的运行时参数,完成对 Kuasar 机密容器的纳管。 当前Kuasar机密容器使用iSulad+Kuasar方案,提高了启动速度,极大降低了内存底噪。一方面 Sandbox API 的实现,使得创建容器不再单独创建 pause 容器,节省了准备pause容器镜像快照的时间;另一方面得益于1:N 的管理模型,Sandboxer 进程常驻,从而节省了冷启动 Shim 进程的时间,这使得容器的启动速度大大提升,带来与Pod数成正比的内存收益。最后,Kuasar使用rust实现,相比golang,内存更安全,语言本身也带来了一些内存收益。

  • 支持 iSulad 容器引擎对接 Kuasar 机密容器运行时,兼容 Kubernetes 云原生生态。
  • 支持基于 virtCCA 的机密硬件,允许用户在鲲鹏 virtCCA 可信执行环境中部署机密容器。
  • 支持secGear 远程证明统一框架,遵循RFC9334 RATS标准架构,允许在机密计算环境中运行的容器向外部的受信任服务证明其可信性。
  • 支持在机密容器内部拉取并解密容器镜像,保护容器镜像的机密性和完整性。

sysSentry系统级故障管理框架

sysSentry主要提供故障巡检框架,该框架通过提供统一的北向故障上报接口以及南向提供支持不同巡检/诊断能力的插件,支持对系统中CPU、内存、磁盘、NPU等硬件故障进行巡检和诊断。

  • 统一告警/事件通知服务:通过提供一个统一的告警服务,接收各个插件上报的故障信息,并由该通知服务进行统一转发,各个业务订阅服务可以根据需要进行不同故障的消息订阅。
  • 统一日志服务:通过提供统一的日志服务,支持各个插件的故障信息进行汇总记录,提升问题定位效率。
  • 故障诊断/巡检框架:该框架支持以插件化的方式进行各项巡检任务以及诊断任务的开发和配置,不同插件支持独立启动、停止、状态查询、结果查询以及启动方式设置,并且支持C/C++、Python、Shell等不同编程语言的插件。
  • 轻量级数据采集服务:该服务支持通过内核接口、BIOS、BMC等接口,查询硬件的各个状态信息,供各个插件进行分析和使用,并且支持适配底层不同的架构、版本以及数据采集服务。

慢IO/慢盘检测

慢IO检测基于滑动窗口对系统中一段周期内不同硬盘的io时延数据进行分析,当整个窗口中异常周期的数量超过一定数量时,则认为此时该盘发生慢io事件。 目前支持两种类型的慢io检测插件:基于平均时延计算异常阈值的平均阈值插件avg_block_io,和基于AI算法聚类计算阈值的AI阈值插件ai_block_io;两种插件均支持最多10个io阶段:blk-throttle、wbt、iocost、get_tag、plug、deadline、bfq、kyber、hctx、driver。 目前支持检测的硬盘类型有NVMe SSD,SATA SSD,SATA HDD。

灵衢可靠性插件

当紧急事件(OOM、Panic、reboot等)发生时将相关的紧急事件阻塞,并上报事件到UBPRM中,防止发生数据丢失或业务中断,同时也负责统一管理通过UB event上报的事件。

  • 节点故障检测与恢复:当Home侧节点发生Panic/reboot时,该节点借出的内存将无法访问,会影响User侧的业务进程,在此情况下需要将保存在Home侧内存中的数据迁移出来。
  • OOM检测、预防与恢复:在内存借用场景下,UBPRM会按照固定的时间周期检测内存占用水位情况,该水位可配置,根据实际的使用情况采用内存归还/内存借用的策略。当短时间内发生大量的内存占用,导致内存水位迅速上涨时,UBPRM检测机制可能无法及时发现该现象,导致业务节点发生进程被杀死或节点重启,发生业务中断。此时可通过OOM预防机制将OOM事件上报给UBPRM,触发OOM的紧急借用策略。

支持树莓派

Raspberry Pi(树莓派)是由 Raspberry Pi 基金会与 Broadcom 公司合作开发的一系列小型单板计算机。凭借其价格低、体积小、能耗低、高可编程性以及丰富的生态系统等特点,树莓派在工业自动化、机器人技术、物联网、教育以及业余爱好者项目等领域得到了广泛应用。树莓派 4B 和树莓派 5 作为树莓派产品线的经典代表,采用 ARM 架构的处理器。其中树莓派 4B 是极具性价比的普及型单板计算机,树莓派 5 凭借其显著的性能突破和扩展能力成为一款在高性能边缘计算领域颇具竞争力的创新产品。

作为开源硬件领域的一个较为高阶的硬件产品,树莓派 4B 和树莓派 5 支持 Raspberry Pi OS、Ubuntu、openEuler 等多种 Linux 发行版,外设丰富,具有较强的视频编解码能力,以及板载网络等功能,完全可以作为独立计算机系统使用。

RISC-V架构特性增强

ISA-L

ISA-L,全称英特尔智能存储加速库(Intel® Intelligent Storage Acceleration Library),是一个专门针对存储应用优化的开源函数库,其中包含EC,CRC,RAID以及压缩解压的优化计算代码。

ISA-L,全称英特尔智能存储加速库(Intel® Intelligent Storage Acceleration Library),是一个专门针对存储应用优化的开源函数库,其中包含EC,CRC,RAID以及压缩解压的优化计算代码。ISA-L初始的加速代码只支持x86架构,其他架构均使用基础的C语言代码进行计算,并无加速效果。在ISA-L库迭代的过程中,逐渐支持了ARM架构的汇编加速代码,但对于RISC-V架构的支持大部分还停留在基础的C语言通用实现。这也致使ISA-L加速库在RISC-V平台上无法完全发挥其完整硬件特性的能力,存在着巨大的性能提升空间。

为提升RISC-V平台上ISA-L加速库的计算能力,我们主要做了CRC算法优化。

Snappy压缩算法

Snappy 是 Google 开发的一种快速数据压缩/解压缩库,旨在实现极高的速度和合理的压缩率之间的平衡。它的设计目标是速度,而不是最大限度地压缩数据。

  • 极速压缩与解压缩:Snappy 的核心优势在于其极快的速度 . 它主要使用字典编码(Dictionary Coding)和字面量(Literal)拷贝结合的方式进行数据压缩。在压缩过程中,Snappy 会在输入数据中查找重复的字节序列。如果发现重复序列,它将用一个引用(Reference)来替换该序列,这个引用指向该序列在先前已处理数据中的位置和长度。对于不重复的数据,则作为字面量直接保留。
  • 低 CPU 开销:由于设计上专注于速度,Snappy 的算法复杂度较低,对 CPU 资源的需求相对较小,非常适合需要在低延迟环境下快速处理大量数据的场景。
  • 非面向最大压缩率:Snappy 的压缩率通常不如 gzip 或 bzip2,但其速度远高于这些算法。它适用于牺牲部分压缩率来换取处理速度的场景。
  • 流式处理友好:Snappy 的数据格式设计使其易于进行流式(Streaming)压缩和解压缩。
  • RISC-V SIMD 指令集优化:利用 RISC-V 向量扩展(Vector Extension, V-Extension)或打包 SIMD(Packed SIMD)指令,对 Snappy 压缩和解压缩过程中涉及到的字节查找(如查找重复序列)和批量数据拷贝操作进行向量化处理。这可以显著提高查找效率和数据吞吐量。
  • 针对 RISC-V 内存模型优化:优化内存访问模式,以更好地利用 RISC-V 架构的缓存层次结构,例如对字面量拷贝和引用跳转的数据访问进行对齐和预取,减少缓存缺失(Cache Misses)。

LZ4压缩算法

LZ4是一款高性能的实时数据压缩算法,广泛应用于操作系统内核、文件系统、网络传输等对性能要求严苛的场景。本技术白皮书详细阐述了LZ4在RISC-V架构上的非对齐内存访问优化方案,通过硬件特性检测与针对性优化策略,显著提升了RISC-V平台上的压缩性能。

非对齐内存访问优化机制:LZ4算法在处理数据压缩时,频繁涉及非对齐内存访问操作。在不同CPU架构上,非对齐内存访问的性能表现差异显著。根据ARM平台的优化经验(参考ARMv6架构优化案例),当硬件原生支持高效非对齐内存访问时,直接内存访问策略相比传统的memcpy()方法可带来较大性能提升。 本次优化针对RISC-V架构特性,特别是支持Zicclsm扩展的处理器平台,实现了智能化的内存访问策略选择机制:1.智能硬件检测、2.分级优化策略、3.安全兼容设计。

Openssl加解密

OpenSSL作为全球应用最广泛的密码学算法库,其核心算法性能直接决定了整个信息系统在数字签名、身份验证、数据加密与解密等关键安全操作中的执行效率。

随着RISC-V开放指令集架构的快速发展和广泛应用,当前OpenSSL在RISC-V平台上仍主要依赖于C语言的通用实现,缺乏针对RISC-V架构特性的专用优化,这导致在RISC-V平台上的密码学算法性能远未达到硬件所能提供的理论极限,存在巨大的性能优化空间和迫切的技术改进需求。 为提升RISC-V平台上OpenSSL算法性能,我们主要做了以下优化:1.RSA算法优化、2.AES-128-CBC算法优化、3.SM2算法优化。

Golang Backport RVA23 Profile 支持

为 openEuler 24.03 LTS SP3 中的 Golang 1.21 版本引入GORISCV64 环境变量,以及包括 RVA23 在内的各个级别的 RVA Profile 支持,使得 openEuler 中的 Golang 可以支持更多高级 RISC-V Profile 中的指令拓展(Zbb、V),进一步优化 Golang 在 RISC-V 下的性能表现。

openssl Backport主线 RISC-V 架构的 SHA-2 汇编优化

openEuler RISC-V 24.03 LTS SP3 中的 openssl 基线版本为 3.0.12,而当前 openssl 的最新版本已经到了 3.6 系列。将上游主线版本中已合并的部分密码学汇编优化算法 Backport 到 3.0.12 中,可以进一步优化 openEuler RISC-V 24.03 LTS SP3 下 openssl 在 RISC-V 下的性能表现。 在 Backport 主线 RISC-V 架构的 SHA-2 汇编优化后,openssl 在执行 SHA-2 算法时会先根据当前 CPU hwprobe 判断当前 CPU 支持的指令拓展情况,再根据当前 CPU 的选择对应的优化函数,从而在执行 SHA-2 算法时获得更好的性能表现。

openssl Backport主线 RISC-V 架构的 MD5 汇编优化

openEuler RISC-V 24.03 LTS SP3 中的 openssl 基线版本为 3.0.12,而当前 openssl 的最新版本已经到了 3.6 系列。将上游主线版本中已合并的部分密码学汇编优化算法 Backport 到 3.0.12 中,可以进一步优化 openEuler RISC-V 24.03 LTS SP3 下 openssl 在RISC-V 下的性能表现。 在 Backport 主线 RISC-V 架构的 MD5 汇编优化后,openssl 在执行 MD5 算法时会先根据当前 CPU hwprobe 判断当前 CPU 支持的指令拓展情况,再根据当前 CPU 的选择对应的优化函数,从而在执行 MD5 算法时获得更好的性能表现。

OpenJDK21 Backport 上游RV架构优化

Java 作为企业级应用和大规模分布式系统的核心编程语言,长期支撑着金融、电信、互联网等关键领域的后端基础设施。针对 OpenJDK 主干(master)中已实现但尚未包含于 OpenJDK 21 的 RISC-V 关键优化,我们通过代码反合,将部分 RVA23 Profile 相关的指令扩展成功集成至 OpenJDK 21;同时反合了大部分加解密与编码算法的汇编级优化,以及部分核心 Java 操作的 intrinsic 实现。上述工作显著提升了 OpenJDK 21 在 RISC-V 平台上的运行效率,覆盖网络、存储、密码学及并发等关键场景,为 openEuler 生态在 RISC-V 架构上提供高性能、生产级 Java 运行时能力奠定了坚实基础。

  • RVA23 Profile 相关的指令扩展反合:将 OpenJDK 主干中对 RVA23 Profile 所定义的 Zfa、Zacas、Zabha、Zvkn、Zicond 等 RISC-V 指令扩展的支持反向合并至 OpenJDK 21。在此基础上,集成 Linux hwprobe 系统调用机制,在 JVM 启动及 JIT 编译阶段动态探测处理器实际支持的指令集能力,确保仅在硬件明确支持的前提下启用对应的优化代码路径;对于不支持相关扩展的 RISC-V 平台或探测失败的环境,系统自动回退至通用实现,完整保持功能正确性与跨平台兼容性。
  • 解密算法汇编优化反合:为 SHA1/2、ChaCha20、Poly1305、CRC32、Adler32、Base64 等核心加解密与编码算法提供了 RISC-V 专属的高性能汇编实现;结合指令扩展能力(如 Zvkn 向量加密扩展),充分发挥 RISC-V 向量与标量指令协同优势,在典型负载下实现数倍性能提升,并通过运行时能力检测确保仅在具备相应硬件支持的环境中激活优化路径。
  • 核心 Java 操作intrinsic反合:对 Object.hashCode()、Math.copySign()、BigInteger 大整数运算及 fastlock 轻量级锁等高频 Java 操作实施 intrinsic 化改造,利用 RISC-V 特定指令生成更紧凑高效的机器码;该优化在保持 Java 语义完全兼容的前提下,显著降低方法调用开销与计算延迟。

utpam:基于Rust开发的身份认证模块

utpam是一种用于Linux系统的认证框架。它允许系统管理员定义系统中的不同服务的认证机制,并且可以根据需要组合多种认证方式。utpam通过提供一个统一的接口来处理认证相关的工作,简化了应用程序对用户身份验证的过程。

libutpam是utpam的核心库,它根据应用程序提供的配置文件进行认证的初始化,配置文件默认位于/etc/utpam目录下,文件以服务名称命名。utpam向上为应用程序提供API接口选择认证类型,认证类型共有四类,分别为用户验证、账户管理、会话管理和口令管理;utpam向下为开发者提供与API对应的SPI接口来实现具体的认证过程。

secScanner:操作系统安全加固组件

secScanner是一款Linux操作系统安全扫描工具,旨在为操作系统提供安全管理、漏洞扫描、rootkit入侵检测等功能。 secScanner基于“3核心能力+3公共能力”的技术架构,建设全面有效、实时自动、灵活易用的主动防护能力。

  • 安全管理:操作系统已有安全能力的使能度管理,针对操作系统安全配置复杂、运维人员安全意识不足、不同场景下安全配置需求不同等问题,安全管理功能可支持多基线选择,亦可根据需求定制安全基线,通过配置文件中预设的参数细粒度控制安全配置项,一键进行安全检测、安全加固、配置还原的功能。
  • 漏洞扫描:全面和及时应对操作系统组件已知CVE威胁,针对操作系统组件存在已知的CVE漏洞,潜在攻击者利用已知的攻击路径发起攻击。漏洞扫描功能支持从openEuler安全中心下载安全公告、CVE公告保存在本地漏洞数据库,对系统组件进行全量扫描或者重点组件轻量化定向扫描,报告系统当前存在风险的组件,并给出升级建议。
  • 入侵检测:泛化性应对操作系统未知威胁,针对攻击者通过各种未知手段对系统进行入侵,入侵检测功能调用了secDetector工具对系统潜在的恶意rootkit模块进行检测,并给出清理建议。

VMAnalyzer:轻量级虚拟化性能监控组件

VMAnalyzer是一款轻量级的虚拟化监测分析工具,围绕如下两个方面进行设计:

  • 虚拟化环境监测:通过实时监测虚拟机的CPU、内存、磁盘I/O等关键性能指标,发现性能瓶颈。
  • 高可靠性保障:通过分析虚拟机的qemu进程、物理环境配置等信息提供高可靠性的虚拟机维护方案,预测并发现潜在的故障风险。

VMAnalyzer包括监控中心、诊断中心两部分,架构如下:

  • 监控中心: 实时采集虚机的数据,能够细粒度的分析虚拟机的运行状况,检测结果的可灵活通过console、OPS、DW等多平台展示各个云主机数据。
  • 诊断中心: 针对虚拟化层面的问题,通过执行命令对虚拟化层进行深度诊断,通过配置分析、状态分析,虚机进程消耗分析等,帮助用户分析虚拟化层面的各类问题,最终通过日志文件展示出来。