
CloudKernelSIG(SpecialInterestGroup):支撑龙蜥内核版本的研发、发布和服务,提供生产可用的高性价比内核产品。本月度动态综合汇总了5月和4月双月项目动态:01SIG整体......
CloudKernelSIG(SpecialInterestGroup):支撑龙蜥内核版本的研发、发布和服务,提供生产可用的高性价比内核产品。
本月度动态综合汇总了5月和4月双月项目动态:
01SIG整体进展5月1.。
2.。
4月1.5.10新增Intel、海光、sw64相关特性支持。
2.6.6新增海光相关特性支持。
3.CloudKernelCI门禁增强。
02具体进展5月2.1ANCK发布6.6.25-002版本2.1.1新特性
2.1.1.1社区特性
存储
EROFS支持subpage压缩块。
支持块大小不等于页大小的压缩镜像,例如4k的块大小压缩镜像用在64K页面内核中。
支持fscache/cachefiles的按需加载模式下的故障恢复特性。
支持fscache/cachefiles的按需加载模式下的故障恢复特性,从而支持erofs基于fscache的容器镜像按需加载方案的故障恢复特性,确保daemon在故障恢复期间,容器内对容器镜像的正常访问不受影响。
架构
ARM64平台下MPAM特性支持。
ARMMPAM硬件特性提供了对Cache和内存带宽等资源进行资源隔离和监控。通过引入ARM社区MPAM驱动和resctrl文件系统重构,提供了MPAM硬件特性的用户态接口支持,在OS层实现了CPU和进程粒度的Cache和内存带宽隔离。
添加ARM64平台下SDEIwatchdog支持。
在ARM64平台引入了基于SDEI的NMIwatchdog,实现Linux内核hardlockup检测机制。
2.1.1.2龙蜥自研存储
1.提供userns安全增强的sysctl接口。
2.提供sysctl接口用于控制userns嵌套深度、以及非特权用户新增userns权限。
3.支持vring_force_dma_api启动参数。
4.针对某些要求vring_use_dma_api()无条件返回true的场景,提供vring_force_dma_api启动参数;如果virtio_ring是以模块的形式,则为virtio__force_dma_api=1。
5.cgroupv1支持iocost特性。
6.iocost是Linux社区主线推荐的IO权重隔离特性,但社区主线仅在cgroupv2中支持;我们在cgroupv1下支持iocost特性使能,同时提供接口用于iocost过程调度的观测。
7.cgroupv1支持writebackIO限流特性。
8.大多数业务场景使用bufferIO,这意味着下发到设备的IO实际由后台writeback线程完成。社区主线内核仅在cgroupv2中支持writebackIO限流;我们通过构建一棵radixtree将cgroupv1下memcg和blkcg进行关联,从而实现cgroupv1下的writebackIO限流。
9.支持enable_context_readahead接口。
10.内核中contextreadahead是一种启发式算法,在某些随机性非常高的场景会引入额外的无效预读,进行影响业务性能。我们提供enable_context_readahead接口可用于显示关闭contextreadahead。为了保持与主线内容的行为兼容,该接口默认为1,即开启contextreadahead。
11.ext4和jbd2特性增强。
12.针对ext4和jbd2在业务场景下遇到的问题进行增强,主要包括:hardlink约束放宽,jbd2后台checkpoint,jbd2慢事务追踪,jbd2统计信息增强,优化jbd2buffercopy-out等。
13.支持IOhang检测。
14.IOhang是指在系统运行过程中,因某些IO耗时过长而引起的系统不稳定甚至宕机。我们通过扩展核心数据结构,在较小的系统开销下,提供快速定位并检测IOhang的能力。
15.支持percpusqthread和us级的sqthreadsubmitidle。
16.io_uringsqthread的idle状态判断逻辑是毫秒级的,但对于一些低负载情况下,不希望该线程抢占过多cpu资源,因此提供了us级的idle判断能力;增加了percpusqthread的能力,允许线程根据cpu号,绑定至特定的sqthread上,sqthread将在各个io_uring上下文间切换,减少了进程上下文切换,实现sqthread共享。
17.blk-throtling统计增强。
18.在容器等业务场景下,希望提供更多的io相关的统计信息。提供了对特定cgroup的IO延迟和IO完成量的统计,添加到cgroupV1和cgroupV2中;在cgorupV1中添加层次化throtling支持。
19.TCMU读写性能优化。
20.利用增加ioctl减少内存拷贝次数、去除锁操作等操作提升TCMU读写性能,并且支持相关打开与关闭的配置。
21.tcmloop设备支持2M大IO。
22.在某些用户场景,我们需要写入2M大IO且期望不被拆分。但在最坏的情况下,每个bio_vec仅包含4k数据,无法满足要求。因此我们将BIO_MAX_PAGES回退到512,同时支持tcmloop设备可配置sg_tablesize参数,以支持2M大IO不拆分场景。
23.提供一种受控的fuse挂载点跨mountnamespace传播的能力。
24.支持非特权sidecar容器中的fuse挂载点传播到app容器内,从而提供了一种后端存储通过fuse接入云原生容器的存储解决方案。
25.支持fuse请求重发。
26.fusedaemon在故障恢复之后,可以请求对故障期间的请求进行重发。
内存
1.对上游KFENCE内核内存污染检测功能的增强。
2.内核及驱动的内存污染问题排查一直非常棘手,尤其是在线上的场景。龙蜥基于上游KFENCE采样式检查的特性,自研了动态开关、全量检测、order-0page检测等功能,确保在支持的内存类型范围内几乎100%抓到根因。
调度
1.支持调度统计增强与容器资源视图增强。
2.调度统计增强:支持cgroup级别的调度延迟,平均负载,运行时间,排队时间等统计数据。
3.容器资源视图增强:提供了容器资源视图功能的相关接口,实现对容器资源的可见性增强,让容器内进程看到的cpu、memory等资源信息为cgroup配置的资源信息,而非宿主机的信息。
4.支持基于acpu的算力稳定特性。
5.通过统计任务在运行时HT对端空闲/繁忙的时间,来校准任务使用的算力,使任务在每个调度周期都获得相对稳定的算力,仅限于在使用coresched特性的情况下使用。
6.支持cpuHT对端运行时间统计特性。
7.HT对端有其他任务运行时会影响任务的计算性能,该特性可以统计任务及cgroup在运行时HT对端运行时间以及空闲时间。
8.cpuburst特性增强。
9.上游内核的cpuburst仅允许最多一倍quota的cpu资源突发使用,龙蜥内核解除了这个限制,允许将burst设置为任意值,从而在更长远的尺度上改善性能。
架构
1.支持CMNPMU的perfmetric功能。
2.CMNPMU驱动提供了很多PMU事件,这些事件可以通过一定的计算方式得到如slcmissrate等指标,将这些指标采集能力支持到perf工具中,以降低用户分析性能问题的门槛。
3.Arm64支持线性区动态拆分并解决kfence动态使能和内存RAS的问题。
4.在兼具rodata、kfence、crashkernel和内存错误隔离等特性的同时支持内核线性区页表的块映射和连续映射,减少地址翻译阶段tlbmiss率,从而提高了arm64服务器在运行时的性能。
2.1.1.3其他1.kconfig调整。
2.联系社区众理事和参与者,采纳来自不同行业专家的意见和建议,充分考虑系统兼容性、稳定性以及易用性,对kconfig进行重新规划和决策。
2.1.2处理器及平台支持
支持龙芯平台。
龙芯架构包括基础架构部分和向量指令、虚拟化、二进制翻译等扩展部分,近2000条指令。
支持龙芯3A5000、3A6000、3C5000、3D5000等多个基于loongarch架构设计的CPU。
增加对上述CPU配套的7A1000/7A2000桥片,以及桥片中的各种外设I/O驱动和显示设备的支持。
增加对Loongarch2K0500BMC驱动的支持。
在支持Loongarch基础架构的基础上,进一步增加对向量指令、虚拟化、二进制翻译等扩展功能的支持。
增加对ebpf、perf、ftrace、kdump、uprobe、kprobe、kretprobes等调测工具的支持。
增加对livepatch的支持。
支持intelGNR/SRF平台。
支持新的CPU拓扑(4coresshareL2)。
支持/AVX新指令。
支持CodeSWPrefetch新指令。
支持GNR/SRFPM特性。
支持GNR/SRFRAS特性。
支持GNR/SRFPMU特性。
支持/IAA/QAT等加速器特性。
支持IOMMU/Vt-dPMU特性。
支持RDT新特性。
支持LAM/LASS新特性。
支持兆芯平台支持。
全面支持兆芯CPU内核特性:支持全新CPU拓扑,支持全新指令集ZXPAUSE,支持PMU,HDAC,GPIO,温度监控等。
兆芯安全特性支持:支持兆芯SM2,SM3,SM4算法以及兆芯AES,SHA算法。
支持海光CPU。
新增海光四号支持。
全面支持海光四号处理器(749X、748X、34XX)的内核特性。包括全新CPU拓扑、x2APIC、微码加载、MCARAS功能、DDR5、SR-IOV、QoS、L3Perf/PMU以及温度监控等。
海光安全特性支持。
新增CSV/CSV2机密虚拟机启动/迁移、机密容器支持。新增CSV3安全虚拟机,支持热迁移功能,支持硬件保护虚拟机页表,硬件隔离虚拟机内存,主机VMM无法读写虚拟机内存。新增海光密码学加速器国密支持新增海光TPM/TCM/TDM/TPCM可信功能支持新增海光TKM密钥管理虚拟化以及隔离功能支持新增海光加速卡DCU的虚拟机直通支持。
支持飞腾服务器平台。
全面支持飞腾服务器芯片(FT2000/64、S2500)的各类特性,包括全新微处理器核心、CPU跨路中断处理、Kdump功能、IOMMU透访、、DDR5、C2C等技术特性,以及飞腾服务器芯片平台配合飞腾自研BMC芯片使用时的KVM显示功能。
支持芯启源多款网卡。
支持多PF特性网卡,涵盖GX系列2x10G,2x25G及4x10G三款网卡。
txgbe、ngbe驱动功能增强
txgbe、ngbe驱动功能增强,包括ethtool支持、flowcontrol支持。
2.1.3设备驱动
添加dwc_rootportPMU驱动
添加dwc_rootportPMU驱动,使perf工具可以采集到硬件支持的PMU事件,用于分析PCIerootport性能。
支持澜起Mont-TSSE高速加密算法加速器。
接口。
基于SR-IOV的虚拟化,16个VF,每个VF支持4个环对。
32个对称和6个非对称加密加速引擎。
总处理吞吐量高达200Gbps。
国际主流国密算法:SM2/3/4、AES、SHA256/384/512。
兆芯SerialATAIDE模式支持。
使用这个驱动程序,SerialATA设备可以在兆芯处理器上以IDE模式运行。
支持QATintree驱动。
回合上游针对IntelQAT硬件加速器intree驱动。
2.1.4重要BugFix
修复fuse在某些配置模式下不兼容filehandle但未显式声明造成的兼容性问题。(PR2966)
修复USB驱动从vfio-pci卸载UHCI时的内核空指针问题。(PR2696)
修复兆芯CPUCRC32C指令低性能问题。(PR2917)
一些增强海光CSV/CSV2可用性和稳定性的修复补丁。(PR2983)
修复某些海光C86-4GCPU无法正确设置psp_master的问题。(PR2975)
删除海光国密算法中,重复的SM4-HS定义。(PR3144)
修复在mountresctrl文件系统时存在的潜在内存越界访问问题。(PR9129)
当前版本的内核飞腾服务器芯片S5000C配合飞腾自研BMC芯片使用时存在KVM显示异常的问题。(BZ2212)
支持NVMeoverTCP高性能存储。(PR2618)
2.2.3处理器及平台支持
海光
海光四号cpu支持
增加对海光四号cpu的基础支持,可以在海光四号平台正常运行内核
2.2.4重要BugFixes
GroupIdentity模块相关Bugfix。(PR1923,PR2299)
修复了动态cpu隔离接口的内存泄漏的问题。(PR2689)
修复了nfsv3客户端访问重启后服务端可能造成的服务端宕机问题。(PR1802)
回合社区主线k8s挂载tmpfs文件系统的挂载点(newshm)目录安全下文(system_u:object_r:adjtime_t:s0)不正确,导致启动容器启动失败的bugfix。(PR1669)
ext4文件系统相关BugFixes。(PR1056,PR1066)
修复virtiofs开启daxpagestruct延迟初始化后热插拔导致内核hang住问题。(PR1987)
修复了blk-iocost模块中写时出现的ABBA死锁问题。(PR2507)
回合社区主线virtio-blk'sdicard命令会导致kernelpanic的bugfix。(PR1702)
bond网卡支持在所有子slave接口上广播ARP。(PR1083)
支持RDMA-CM与TCP的portrange隔离,以应对潜在的RDMAport和TCPport的冲突问题。(PR1851)
修复nvme盘在创建IO队列失败时,内核使用的IO队列数与实际创建的IO队列数不匹配,引发内核访问空指针宕机的问题。(PRPR2049)
修复在仅支持48-bitguestaddresswidth的IOMMU硬件上,当开启IOMMU时,IOMMU驱动bug导致系统panic的问题。问题原因在于驱动在处理这类IOMMU硬件时,IOMMUdriver混淆了agaw的概念。根据spec描述,agaw应该是mgaw和sagaw的最小值,并不直接等于magaw。(PR1638)
回合社区主线修复megaraid_sas驱动加载失败的问题。(PR2075)
修复BPFILTER模块会导致内核crash的问题。(PR1922)
修复了PhytiumS2500和某些BMC芯片在短时间内频繁通信时,出现非预期的硬件信号hang死的问题。(PR2287)
修复了多进程同时启动QEMU加密虚拟机,在读写PSP寄存器时出现RaceCondition导致PSPhang死的问题。(PR1439)
CVE-2020-14331(PR1152)
CVE-2020-25671(PR1149)
CVE-2021-3759(PR1550)
CVE-2021-43976(PR847)
CVE-2022-0002(PR1009)
CVE-2022-1184(PR395)
CVE-2022-1729(PR1416)
CVE-2022-20141(PR876)
CVE-2022-20422(PR1733)
CVE-2022-20566(PR966)
CVE-2022-2503(PR875)
CVE-2022-2663(PR916)
CVE-2022-2964(PR920)
CVE-2022-3061(PR1354)
CVE-2022-3108(PR1052)
CVE-2022-3169(PR548)
CVE-2022-3239(PR549)
CVE-2022-33740(PR1058)
CVE-2022-33742(PR553)
CVE-2022-33981(PR552)
CVE-2022-3424(PR942)
CVE-2022-3524(PR1044)
CVE-2022-3542(PR938)
CVE-2022-3564(PR942)
CVE-2022-3566(PR959)
CVE-2022-3594(PR1736)
CVE-2022-3628(PR941)
CVE-2022-3635(PR2360)
CVE-2022-3707(PR2588)
CVE-2022-39189(PR939)
CVE-2022-40307(PR1522)
CVE-2022-41218(PR1349)
CVE-2022-41849(PR1727)
CVE-2022-41858(PR1159)
CVE-2022-42703(PR947)
CVE-2022-42896(PR946)
CVE-2022-4378(PR2139)
CVE-2022-45934(PR1345)
CVE-2022-47929(PR1172)
CVE-2023-0045(PR2314)
CVE-2023-0266(PR1497)
CVE-2023-0458(PR1709)
CVE-2023-0461(PR1503)
CVE-2023-0597(PR2366)
CVE-2023-1073(PR1498)
CVE-2023-1076(PR1459)
CVE-2023-1078(PR2353)
CVE-2023-1095(PR1389)
CVE-2023-1206(PR1500)
CVE-2023-1390(PR1575)
CVE-2023-1611(PR1673)
CVE-2023-1670(PR1771)
CVE-2023-1838(PR1571)
CVE-2023-1989(PR1578)
CVE-2023-2002(PR2377)
CVE-2023-20593(PR2027)
CVE-2023-2162(PR1735)
CVE-2023-2269(PR1518)
CVE-2023-23454(PR1495)
CVE-2023-23559(PR1694)
CVE-2023-26545(PR1779)
CVE-2023-28328(PR2346)
CVE-2023-28772(PR1777)
CVE-2023-3006(PR1867)
CVE-2023-30772(PR2007)
CVE-2023-31083(PR1908)
CVE-2023-31085(PR2040)
CVE-2023-3117(PR2106)
CVE-2023-31436(PR2573)
CVE-2023-3161(PR2041)
CVE-2023-3220(PR1637)
CVE-2023-3268(PR2362)
CVE-2023-34256(PR1882)
CVE-2023-3567(PR1786)
CVE-2023-35823(PR2320)
CVE-2023-35825(PR2319)
CVE-2023-3609(PR2001)
CVE-2023-3776(PR2016)
CVE-2023-39192(PR2092)
CVE-2023-4132(PR2352)
CVE-2023-4385(PR2348)
CVE-2023-45863(PR2542)
CVE-2023-4623(PR2345)
CVE-2023-51779(PR2581)
CVE-2023-6931(PR2621)
CVE-2024-0607(PR2860)
CVE-2024-22099(PR2926)
CVE-2024-24855(PR2928)
CVE-2024-26597(PR3053)
支持IntelRDTL2/L3non-contiguousmask。(PR3072)
2.1.2海光平台
支持海光DCU虚拟机直通。(PR3059)
2.1.3sw64平台
sw平台兼容性增强、相关bug修复。(PR3076,PR3049,PR3004)
支持海光CSVresueasid功能。(PR2975)
2.2.2CloudKernelCI门禁增强
CloudKernel代码Review规则增强:CI会以PR修改的文件为粒度,自动匹配各领域Maintainer进行CodeReview。只有当PR文件Review比例超过一定阈值后才能合入。不足时会CI会告警提示,当您遇到如下告警时可以通过主页的SIG群联系我们。
03重要议题5月3.15.10kABI:kAPI策略
,例如5.10.134-16和5.10.134-16.1,为upstream版本,major版本是会合入大量feature和bugfix的主演进版本,minor版本为只合入bugfix的版本。
3.1.1Major版本kABI/kAPI策略
龙蜥社区内核major版本之间不保证kABI,只保证kAPI,OOT驱动需要在每个major版本都构建一次。
3.1.2Minor版本kABI/kAPI策略
龙蜥社区的minor版本会保证与major版本的kABI兼容,保证的白名单列表存储在。
CloudKernelSIG主页: