Cloud Kernel SIG 月度动态:发布 ANCK 3 个版本,5.10 kABI/kAPI 策略变更
Cloud Kernel SIG(Special Interest Group):支撑龙蜥内核版本的研发、发布和服务,提供生产可用的高性价比内核产品。
01 SIG 整体进展
1. 发布 ANCK 5.10-017 版本。
2. 发布 ANCK 4.19-028.1 小版本。
3. 发布 ANCK 4.19-028.2 小版本。
4. ANCK 5.10 kABI/kAPI 策略变更。
02 具体进展
2.1 发布 ANCK 5.10-017 版本
2.1.1 新特性
2.1.1.1 社区特性
支持动态内核抢占特性 回合上游社区的动态内核抢占特性,允许用户通过 cmdline 或 sysfs 来切换抢占模型:none 或 voluntary(full 暂不支持)。
perf 功能增强 支持 CMN 和 DDR PMU 的 perf metric 功能。
bpf 新特性。
新增 bpf helper:
bpf_for_each_map_elem:遍历 bpf map 的 helper。
bpf_snprintf:字符串格式化 helper。
bpf_timer:定时器,可以在指定时间后触发回调函数。
bpf_loop:告别常量有限循环的限制,从此自由写循环。
bpf_strncmp:字符串比较的 helper。
bpf_ktime_get_tai_ns:获取 CLOCK_TAI 类型的时间。
bpf_skb_load_bytes: raw_tp 类型支持,可以在 raw_tp 类型程序中读取 skb 数据,包括非线性区数据。
Arm64 架构支持 fentry/fexit/fmod_ret/bpf_lsm 等 trampoline 相关特性的 attach,从而提供更强的跟踪诊断/安全功能。
bpf_trampoline 支持与 livepatch 共存。
virtio-net 相关特性支持。
支持 virtio-net 设备统计:实现内核对设备统计数据的获取,提升故障定位和问题诊断能力。
引入队列重置功能:允许调整虚拟机队列尺寸并利用该功能减少数据包丢失,优化时延性能。
动态中断调节(netdim):支持根据实时流量智能调整中断聚合参数,优化数据接收性能。
优化 virtio checksum:修复 virtio 网卡验证 checksum 被特定 feature 控制的问题;使用 XDP 应用场景中无需 guest os 重新验证校验和,大幅节省 CPU 利用率。
erofs 按需加载模式支持 failover。
ext4 修复 O_DIRECT + O_SYNC 语义问题 该问题在 iomap 框架引入后就一直存在,其原因为 generic_write_sync() 是在 iomap 框架中调用,但 i_disksize 更新却是在 iomap_dio_rw() 之后。这将导致 append 写的场景文件落盘的长度没有及时更新,此时异常掉电将无法读取写入的数据。
xfs 支持 延迟 inode inactivation 特性 该特性将回收放到后台的 kworker 中执行,降低前台应用因删除带来的卡顿。
fuse 相关支持
支持 cache=none 模式下 shared mmap。
支持 strict limit 特性动态开关。fuse 模块会设置 strict limit,在特定场景下可能导致回写非常慢甚至卡住,引入该 sysfs knobs 可以动态解决这种问题。
优化 kernfs 全局锁竞争,降低因监控程序并发访问导致的 loadD 升高影响。
2.1.1.2 龙蜥自研
Group Identity 相关特性。
提供 Group Identity 2.0 细粒度优先级特性。
Group Identity 2.0 CPU share 比例校准。
增加 Group Identity 2.0 force idled time 指标。
Group Identity 优化,增强不同优先级任务的负载控制。
提供 Group Balancer 基础功能。
SMC 相关优化及支持。
在 SMC-R + eRDMA 场景支持 smc_pnet 功能。
优化 SMC + eRDMA 场景下的可达性检查,修复低概率的内核 crash 问题。
virtio 支持 control vq 超时机制 virtio 支持 control vq 超时机制:防止因设备无响应导致虚拟机 CPU 持续高负荷轮询,默认超时 7 天。
新增对 OOT 模块使用的 slab 内存进行隔离的特性,以便 OOT 模块踩内存后问题定界。
新增快速 OOM 特性 避免在多核大内存环境下由于内存紧张导致得长时间机器无响应,可以协助业务提升内存部署密度,提高高水位运行时在线业务性能的稳定性。
erofs 相关支持及优化。
支持 rafsv6 模式下传入 zero-length iovec。
rafsv6 模式下允许回收 dax mapping,以避免 pin 住可能带来的 OOM 和 fuse hang 等问题。
通过 kconfig 限制 rafsv6 仅在安全容器场景使用。
xfs 支持 fsdax reflink & dedupe 支持 xfs fsdax reflink & dedupe,并针对 Tair PMEM 实例做了针对性的优化,如快照源文件的连续性,脏页回写的效率,去除 reverse map btree 的依赖以优化 page fault 时延等。
cgroup writeback 支持 支持 cgroup writeback ,以修复开启 lazytime 场景下,memory cgroup 长期不释放的问题。该问题将导致容器化部署环境下 memory cgroup 数量长时间处于高位,占用内存,以及引发遍历 cgroup 时 sys 过高等。
提供 cgroup v2 IO SLI 增加 blkio cgroup v2 的 IO SLI,包括 wait time,service time,complete time,io queued 和 bytes queued 等。
支持 2M IO 在极端情况下,每个 bio_vec 只包含 1 个 4k page,那么在当前 5.10 内核下只能支持最大 1M IO,额外的处理拆分逻辑在某些场景下会影响性能。
修复在设置 blk-iocost qos 过程中因 race 导致的 ABBA 死锁问题。
支持 tcmu_loop 设备参数可配置 tcmu_loop 设备支持参数可配置,如 can_queue,nr_hw_queues,cmd_per_lun,sg_tablesize 等,当后端设备能力足够大的时候,调大这些参数能明显提升性能。
2.1.1.3 其他特性
2.1.1.3.1 处理器及平台支持
Intel 平台
支持 GNR/SRF 平台
IDXD (DSA/IAA)功能增强
Icelake HWDRC 支持
AMD 平台
AMD LBRv2 支持以及相关 Bugfix 支持
AMD Perf UMC 支持以及相关 Bugfix 支持
AMD Perf DF 支持
AMD Perf ibrs 或其他相关 Bugfix 支持
AMD QoS BMEC 支持
AMD IOMMU io page table 支持
AMD IOMMU PCI segment 支持
AMD IOMMU X2AVIC 及相关 IOMMU Bugfix 支持
Turin 平台支持
ARM 架构
调整 cmdline 默认使能 irqtime_account 特性
添加开关控制 crashkernel 提前预留
MPAM 虚拟化支持
海光
适配海光 4 号 model 7h/10h cpu(PR#3367)(PR#3368)
全面支持海光四号处理器(749X、748X、34XX)的各类特性。
包括全新 CPU 拓扑、x2APIC、微码加载、MCA RAS 功能、DDR5、SR-IOV、QoS、L3 Perf/PMU 以及温度监控等。
新增海光四号安全特性支持:
新增 CSV3 安全虚拟机支持,包括支持热迁移功能,支持硬件保护虚拟机页表,硬件隔离虚拟机内存,修复主机 VMM 无法读写虚拟机内存问题。
CSV3 基于海光四号平台,在前二代 CSV 技术的基础上继续增强,在 CPU 内部实现了虚拟机数据的安全隔离,禁止主机操作系统对虚拟机内存的读写,保证了虚拟机数据的完整性,实现了云计算环境下的数据机密性和完整性的双重安全。
修复 kvm 模块与 ccp 模块之间的依赖关系
优化 CSV3 shared page 管理,包括合并连续页面;使用 rbtree 管理页面等
提供了两个通用的 API,用于加密和解密用户空间进程页
支持海光密钥管理(TKM)虚拟化功能
支持海光 DCU 直通给虚拟机
龙芯
龙芯架构是龙芯中科基于二十年的 CPU 研制和生态建设积累推出的全新完全自主的新架构,具有较好的自主性、先进性与兼容性,包括基础架构部分和向量指令、虚拟化、二进制翻译等扩展部分,近 2000 条指令。
本次更新如下:
支持龙芯 3A5000、3A6000、3C5000、3D5000 等多个基于 loongarch 架构设计的 CPU
增加对上述 CPU 配套的 7A1000/7A2000 桥片,以及桥片中的各种外设 I/O 驱动和显示设备的支持
增加对 Loongarch 2K0500BMC 驱动的支持
在支持 Loongarch 基础架构的基础上,进一步增加对向量指令、虚拟化、二进制翻译等扩展功能的支持
增加对 perf、ftrace、kdump、uprobe、kprobe、kretprobes 等调测工具的支持
飞腾
支持飞腾 S5000C 服务器
2.1.2 设备驱动
引入 nce 网卡驱动,支持北中网芯 N5/N6 系列网卡
支持网迅 10G 网卡 VF 功能
支持 bcache 功能
2.1.3 重要 Bug Fix
修复 perf_cgroup_switch race 问题(PR#2433)
修复 Group Identity 2.0 Queue other time 统计可能为负数的问题(PR#2473)
修复 cfs_rq runtime 统计问题(PR#2477)
修复 cfs_rq->core 可能为 NULL 的问题(PR#2470)
启用声卡相关驱动(CONFIG_SND)。(PR#2591)
修复在开启 cgroup kmem 统计计数时,kfence 会导致内核宕机的问题。(PR#2759)
龙芯架构相关修复。(PR#2627,PR#2733)
erofs 压缩模式稳定性修复。(PR#2787,PR#2692)
erofs over fscache 的稳定性修复。(PR#2796)
SMC 相关稳定性修复。(PR#2605,PR#2877,PR#2894,PR#2887)
修复 BDI 使用 STRICTLIMIT 特性且 BDI 份额为 0 时导致的回写性能下降问题。(PR#2505)
修复 seccomp 内存泄露问题。(PR#2878)
修复用户操作可能导致 ZERO_PAGE 引用计数不正确的问题。(PR#2838)
修复 TCMU 潜在的内存递归回收问题。(PR#2813)
修复 ioasids 子系统迁移内核线程时导致内核 crash 的问题。(PR#2799)
修复在不配置限流规则的情况下 IO 重复统计问题。(PR#2835)
修复 Phytium S2500 和某些 BMC 芯片在短时间内频繁通信时,出现非预期的硬件信号 hang 死的问题。(PR#2800)
修复 Group Identity 和 core scheduling 同时使能时导致内核 panic 的问题。(PR#2585)
将 CFS 带宽控制解除限流从同步改为异步,优化 CPU 数量较大场景下的带宽控制效率。(PR#2290)
修复关闭 core sched 总开关时潜在的 race condition。(PR#2817)
修复 irq 高的场景下 sibidle 统计不准的问题。(PR#2834)
回合高版本 NVMe over RDMA 的修复补丁,增强稳定性。(PR#2824)
修复 nvme_reset 与 nvme_rescan 并发执行出现死锁 hang 住的问题。(PR#2500)
修复 PCIe 驱动 aspm 的 UAF 导致的内核 crash 问题。(PR#2939)
修复飞腾 S5000C 在 AST2600 显卡的设备上显示器花屏的问题。(PR#3232)
修复异步 unthrottle 引起的 warning, 避免因该 warning 引起的调度死锁。(PR#3163)
2.1.4 重要 CVE 修复列表
2.1.5 已知问题
根据 Anolis OS 23.1 版本规划及选型 以及 Anolis OS 23.1 社区版 (GA) 发行声明 , 截止 2024/07/01 日, Anolis OS 23.1 的最新镜像版本为 Anolis OS 23.1 GA, 该镜像中默认只集成了 ANCK 6.6 内核。而在 6.6 内核中, xfs 引入了 nrext64、bigtime、inobtcount 等新特性(5.10 中没有), 且根文件系统默认格式为 xfs, 导致了在 Anolis OS 23.1 GA 镜像中使用 xfs 作为根文件系统时, 安装 ANCK 5.10 内核并重启后无法正常进入系统。
临时解决办法:在镜像安装阶段将根文件系统格式从默认的 xfs 修改成 ext4, 然后再安装 ANCK 5.10 内核, 即可正常切换。
修复版本:预计在 Anolis OS 23.1 QU 版本修复该问题。
2.2 发布 ANCK 4.19-028.1 小版本
发布时间: 2024-06-14
发布链接:
anolis7:https://anas.openanolis.cn/errata/detail/ANBA-2024:0467
anolis8:https://anas.openanolis.cn/errata/detail/ANBA-2024:0468
2.2.1 重要 Bug Fixes
修复了在使用 eBPF 相关工具(如 cilium )时,存在的兼容性问题。(PR#3301)
EROFS 文件系统常驻内存占用优化以及 statfs 功能增强。(PR#3281)
2.3 发布 ANCK 4.19-028.2 小版本
发布时间:2024-06-28
发布链接:
anolis7:https://anas.openanolis.cn/errata/detail/ANBA-2024:0556
anolis8:https://anas.openanolis.cn/errata/detail/ANBA-2024:0555
2.3.1 重要 Bug Fixes
修复可信工具 tpm2-tools 在执行 tpm2_pcrlist 命令时失败的问题。(PR#3403)
2.3.2 kABI/kAPI 策略变更
从 ANCK 5.10-017 版本开始,龙蜥社区只在 minor 版本保证 kABI,在 major 版本之间只保证 kAPI,详情请见龙蜥社区 5.10 kABI:kAPI 策略:
https://anas.openanolis.cn/errata/detail/ANBA-2024:0555
注:以上每个 CVE/ bug 都带有修复补丁的超链接,点击 SIG 主页-月报查看。
相关链接:
Cloud Kernel SIG 主页:
https://openanolis.cn/sig/Cloud-Kernel
注:更多龙蜥 SIG 月度动态可点击这里查看。
版权声明: 本文为 InfoQ 作者【OpenAnolis小助手】的原创文章。
原文链接:【http://xie.infoq.cn/article/ce414f3fa9fedad0bcd10db55】。文章转载请联系作者。
评论