写点什么

Cloud Kernel SIG 季度动态:ANCK 5.10/6.6 新版本发布,主线适配 Sw8A&RSIC-V 新平台

  • 2025-07-08
    陕西
  • 本文字数:3773 字

    阅读完需:约 12 分钟

Cloud Kernel SIG(Special Interest Group):支撑龙蜥内核版本的研发、发布和服务,提供生产可用的高性价比内核产品。

01、SIG 整体进展

  • 发布 ANCK 6.6-004 版本。

  • 发布 ANCK 5.10-019 版本。

  • 发布 ANCK 5.10-019.1 小版本。

  • ANCK 6.6 支持 Sw8A、RISC-V 新平台。

02、ANCK 6.6-004 版本更新

发布时间: 2025-06-30

发布链接:

调度

  • 回合社区 sched_ext 特性。

  • 支持 jbd2 锁代理执行特性。

  • EEVDF 稳定性增强。

内存

  • 支持快速 OOM 特性,避免内存回收时系统夯住。

  • 支持页表页回收特性,避免过多的空闲页表页占用内存。

  • 支持 slab lockless shrink 特性,避免 shrinker lock 竞争提升 slab shrinker 并发性能。

  • 支持 Async fork 特性优化 fork 系统调用性能。

  • 支持 duptext 特性,并且 duptext 扩展支持 large folio。

  • 修复 Arm64 contpte 页表设置的问题。

  • mmap() 支持 THP align 特性,提升 THP 分配成功率。

  • 修复 kfence 释放路径错误的 kence page 判断问题。

  • 修复 MGLRU 的 softlockup 问题。

  • 修复文件页 large folio 控制超过文件 size 的问题。

  • 修复文件页 large folio 分配的 softlockup 问题。

  • 修复 THP 统计错误问题。

  • 修复 shmem large folio 处理和匿名页 large folio 处理的问题。

网络

  • 回合 ANCK 5.10 SMC 自研补丁,包括 eRDMA 支持、SMCv2 支持、CQ 优化、sysctl 优化、各类稳定性问题修复、Write-with-Imm 特性、link/lgr 数量优化、抓包、内存水位限制等特性。

  • 回合上游 virtio-net xdp zerocopy 特性。

BPF

回合社区 sched_ext 的依赖特性,例如:

  • 支持 bpf timer 创建 BPF_F_TIMER_CPU_PIN。

  • 对 struct_ops 入参支持 __nullable 配置。

  • bpf skel 支持直接访问 struct_ops maps 的成员。

  • 支持持有 spinlock 或 rculock 时调用子程序。

  • 支持 bits 迭代器。

存储

  • 支持 ext4 large folio EXPERIMENTAL 特性。large folio 对 buffered IO 有较大性能提升,该特性基于对 ext4 buffered IO 支持 iomap 方案改造,目前标记为 EXPERIMENTAL 且默认不开启,需要通过 -o buffered_iomap 开启试用。由于社区主线最终接收的方案基于 buffer head,因此后续版本将切回到主线的 buffer head 方案。

  • 修改 d2c 时延统计问题。由于社区主线内核演进,QUEUE_FLAG_STATS 默认不再设置,因此 d2c 时延统计依赖的 io_start_time_ns 始终为 0。经测试确认,高速设备场景调用 ktime_get_ns() 将带来 ~2% 的极限 IOPS 影响,因此新增一个 sysfs 接口用于控制该统计的开启。

  • ext4、nfs 等社区 stable 补丁同步。

驱动

  • amdgpu 驱动回合 CVE 修复补丁,增强稳定性。

  • NVMe 驱动支持 Reservation 以及云盘激活功能。

  • NVMe 驱动回合一些上游修复补丁,增强稳定性。

  • hns3 同步上游,增强稳定性。

  • 升级 hct 驱动模块,以支持 HCT2.1 版本。

体系结构

海光平台

  • 修复在 2g 和 c86-3g 上 CSV1 和 CSV2 由于 bios 过老而无法启动的问题。

  • 增加用于海光 CSV3 的 unpin 接口,以便快速释放残留共享页;使用红黑树增强共享页管理。

Arm 平台

  • 支持飞腾 DMA 优化特性。

  • 支持飞腾平台用户态可以修改 KVM 系统寄存器。

  • 修复 CPPC ioremap 问题。

  • 修复 GIC v3 its 空指针等问题。

申威平台

申威 8A 平台首次系统级适配进展:

  • 首次针对申威 8A 平台的适配工作中,重点在于建立其基础运行环境并解决兼容性问题。核心工作包括:

    对申威 8A 处理器指令集的基础支持,确保系统能够正确识别并执行处理器核心指令。

    对 IOMMU 进行初步适配,以实现 I/O 内存的隔离与管理,保障设备的安全与稳定。

    适配中断控制器,确保系统能够高效、准确地处理来自硬件的中断请求。

    对 ACPI 进行基础兼容性处理,以支持平台的电源管理与基本配置功能。

    完成 PCIe 总线接口的适配,保障系统与外部高速设备的兼容性和基础数据传输。

    适配 platform 驱动,确保核心平台功能的正常运行。

    修复部分 ftrace 兼容性问题,提升了平台的调试能力。

  • 目前,申威 8A 平台已成功完成 bring-up。

龙芯平台

新特性

  • 新增多版本 ABI 兼容方案支持。

  • 增加 objtool 的支持。

  • 增加 livepatch 功能支持。

  • 增加 kaptch 功能支持。

  • 增加 IGC 网卡驱动支持。

  • 增加 GPIO_PCA953X 驱动支持。

  • 增加 SCHED_MC 调度支持。

  • 增加 PWM 驱动支持。

  • 增加 TPM 驱动支持。

  • 增加 2K3000 GMAC 驱动支持。

  • 增加 CPU 核数上限至 2048 个。

  • 增加 3C6000/3D6000 虚拟化支持。

  • 增加硬件 PTW 支持。

重要 Bugfix

  • 修复编译错误及警告问题。

  • 修复独立显卡显示异常问题。

  • 修复查看大页内存使用情况时时崩溃问题。

  • 修复 io 数据错误问题。

  • 修复 io_uring 测试失败问题。

  • 修复使用自愿抢占后系统崩溃问题。

  • 修正使用大页内存时异常崩溃问题。

  • 修复 IOMMU 模块使用异常问题,提升健壮性。

RISC-V

  • 支持算能算丰 SG2042 平台,支持 sopho PCIE MMC 等驱动。

  • 支持 AIA 扩展。

  • 支持 riscv spinlock。

03、ANCK 5.10-019 版本更新

发布时间: 2025-05-22

发布链接:

调度

  • 回合 cluster 调度特性。

  • 支持为根组的不可移动线程配置 bvt。

  • core sched 支持对每个 cookie 独立配置特殊属性:

    可与不带 cookie 的普通任务共享 core。

    防止负载均衡自动聚拢相同 cookie 的任务,呈现打散在不同 core 的效果。

内存

  • kfence 修复稳定性问题

  • 代码大页 THP 计数问题修复。

  • mmap() 支持 THP 对齐地址空间分配。

  • virtio-mem 支持 memmap_on_memory 特性,帮助容器内存快速扩缩容。

  • 其它内存 CVE 补丁合入。

网络

  • smc:

    修复 link group 和 link use-after-free 问题。

    修复容器场景 smc-r 设备查找失败问题。

存储

  • erofs:

    回合了若干主线的 erofs 文件系统的修复。

    新增文件备份挂载和 48 位布局支持。

    添加压缩文件的 sub-page 块支持。

  • ext4、 block、 blk-mq、io_uring 等组件的主线 stable 分支补丁回合。

  • 新增 virtio-blk passthrough 特性,为 virtio-blk 设备添加直通能力支持:

    为每个 virtio-blk 块设备新增一个通用字符设备,命名为 /dev/vdXc0 ,允许用户使用 io_uring 框架提供的 uring_cmd 方式,直接向 virtio-blk 驱动层发送读写命令。

    基于上述能力,新增 virtio-blk 设备的双向命令支持,基于同一个 sector 基址,可以在向量类读写中,指定写缓冲区个数和读缓冲区个数,实现一条 I/O 指令同时完成读、写操作(目前仅支持先写后读)

    基于 virtio-blk,提供一种 virtio_ring 的扩展,命名为 ring_pair。此时 virtio-blk 的每个请求硬件队列实际对应两个 virtio_ring 队列,分别为请求队列(SQ)和完成队列(CQ)。请求下发后,驱动可以主动回收已经下发的 I/O 命令所在的 slot,继续下发其它请求。 I/O 完成时,由后端回填 CQ,驱动端负责响应收割。该特性需要后端支持 ring_pair 这种运行方式,且当前仅支持 vring split_queue + Indirect descriptor 模式。

驱动

  • NVMe 驱动支持批量处理完成的 polled IO 命令。

  • 修复 SCSI 海思 sas 驱动以及 libsas 的大量问题。

  • 回合 PCIe 驱动 bugfix 补丁,修复空间大小计算错误、root bus 分配等问题。

04、ANCK 5.10-019.1 小版本更新

发布时间: 2025-06-25

发布链接:

重要 Bug Fixes

  • virtio-blk passthrough 特性,默认隐藏了通用字符设备

  • 修复 SMC 模块中,特殊情况下 clc decline 请求无法发出的问题

05、ANCK 6.6 新增支持平台

  • ANCK 6.6 初步支持 RISC-V 算能算丰 SG2042 平台。

  • ANCK 6.6 初步支持 Sw8A 平台。

06、ANCK 新增特性

ANCK 6.6 支持 AMD 平台 PQoS ABMC 特性

ANCK-6.6 支持 AMD PQoS ABMC(Assignable Bandwidth Monitoring Counters) 特性,允许用户为特定 RMID 分配硬件计数器,以持续监控带宽,直到用户手动取消分配,从而避免了计数器在监控期间被重置的问题。

virtio-blk 支持 ring pair 特性

ANCK-5.10 virtio-blk 驱动中引入 ring pair 特性。

在 virtio-blk 驱动内,提供一种 virtio_ring 的扩展,命名为 ring_pair。利用两个 virtqueue 队列实现一个请求通道,只要后端读取了请求队列的请求,前端就可以回收并继续下发。在请求真正完成时,在完成队列进行请求收割和 DMA 映射的解除等操作。 允许位于 virtio_ring 的请求无需等待完成后释放 slot 和再次下发,可以在后端延迟较大、突发读写等场景下增大 inflight 请求的并发,提供更大的吞吐量。

具体如下:

1)virtio-blk 的每个请求硬件队列实际对应两个 virtio_ring 队列,分别为请求队列(SQ)和完成队列(CQ)。请求下发后,驱动可以主动回收已经下发的 I/O 命令所在的 slot,继续下发其它请求。I/O 完成时,由后端回填 CQ,驱动端负责响应收割。下发请求时,out_hdr 的 ioprio 字段会被复用来存储 tag;请求完成时,后端会将 tag 存储在 in_len 字段返回,可以根据该字段找到请求对应的 request 来执行 end_io 操作。

2)在 blk-mq 层提供“动态”请求特性:通常地,request 在 blk-mq 层通过静态预分配得到,现在提供一种动态请求分配模式,在 request 队列深度很大的情况下,仅静态初始化 bitmap 等结构,request 结构体是在请求 tag 真正分配后再申请对应内存空间,并在请求完成后释放。

3)该特性需要后端支持 ring_pair 这种运行方式,且当前仅支持 vring split_queue + Indirect descriptor 模式。

更多信息请参考该链接:https://gitee.com/anolis/cloud-kernel/pulls/4799


相关链接:

Cloud Kernel SIG 主页:https://openanolis.cn/sig/Cloud-Kernel

发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2021-07-20 加入

OpenAnolis龙蜥社区 由国内外头部企业联合建立的操作系统开源社区。加入我们,一起打造面向未来的开源操作系统。 社区官网:openanolis.cn|微信公众号:OpenAnolis龙蜥

评论

发布
暂无评论
Cloud Kernel SIG季度动态:ANCK 5.10/6.6新版本发布,主线适配Sw8A&RSIC-V新平台_操作系统_OpenAnolis小助手_InfoQ写作社区