内核功能与接口概述

如果您对Linux的内核系统有一定的了解,并且需要使用Linux内核功能,可以通过本文了解Alibaba Cloud Linux已支持的内核功能与接口。

内存

文档链接

支持版本

说明

Memcg Exstat功能

  • Alibaba Cloud Linux 2内核版本4.19.91-18.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

Alibaba Cloud Linux所支持的Memcg Exstat功能,相较于社区版内核额外在cgroup v1接口支持了memory.events、memory.events.local及memory.stat接口,并增加了memcg全局最低水位调整产生的延迟统计和后台异步回收产生的延迟统计。

Memcg全局最低水位线分级

  • Alibaba Cloud Linux 2内核版本4.19.91-18.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

Alibaba Cloud Linux新增了memcg全局最低水位线分级功能。在global wmark_min的基础上,将资源消耗型任务的global wmark_min上移,使其提前进入直接内存回收。将时延敏感型业务的global wmark_min下移,使其尽量避免直接内存回收。这样当资源消耗型任务瞬间申请大量内存的时候,会通过上移的global wmark_min将其短时间抑制,避免时延敏感型业务发生直接内存回收。等待全局kswapd回收一定量的内存后,再解除资源消耗型任务的短时间抑制。

cgroup v1接口支持memcg QoS功能

  • Alibaba Cloud Linux 2内核版本4.19.91-18.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

内存子系统服务质量(memcg QoS)可以用来控制内存子系统(memcg)的内存使用量的保证(锁定)与限制。在社区版内核中只有cgroup v2接口支持该功能,Alibaba Cloud Linux中新增cgroup v1接口支持memcg QoS的相关功能。

Memcg后台异步回收

  • Alibaba Cloud Linux 2内核版本4.19.81-17.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

Alibaba Cloud Linux增加了memcg粒度的后台异步回收功能。该功能的实现不同于全局kswapd内核线程的实现,并没有创建对应的memcg kswapd内核线程,而是采用了workqueue机制来实现。

Memcg OOM优先级策略功能

  • Alibaba Cloud Linux 2内核版本4.19.91-18.al7及以上

  • Alibaba Cloud Linux 3内核版本5.10.60-9.al8及以上

Alibaba Cloud Linux新增memcg OOM优先级策略功能。该功能在进行OOM操作时,会首先判定cgroup的优先级,选择低优先级的cgroup进行OOM操作。

THP reclaim功能

  • Alibaba Cloud Linux 2内核版本4.19.91-24.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

Alibaba Cloud Linux增加了THP reclaim功能,用于解决因透明大页THP带来的内存问题(例如OOM)。

代码大页

  • Alibaba Cloud Linux 2内核版本4.19.91-25及以上

  • Alibaba Cloud Linux 3内核版本5.10.112-11及以上

Alibaba Cloud Linux支持代码大页功能。该功能主要为大代码段业务服务,您可以通过该功能将应用程序和动态链接库的可执行部分放入到大页中,降低程序的iTLB miss,提升CPU的2 MB iTLB利用率,从而提升程序性能。

捕获内核的内存污染问题(KFENCE)

Alibaba Cloud Linux 3内核版本5.10.84-10(x86架构)和5.10.134-16(ARM架构)及以上

Alibaba Cloud Linux 3支持KFENCE功能,它能够灵活动态开关KFENCE和全量捕获内存污染问题,从而兼顾线上探测和线下调试。

Page Cache限制功能

Alibaba Cloud Linux 3内核版本5.10.134-14及以上

Alibaba Cloud Linux 3增加了Page Cache(文件缓存)限制功能,用于解决因Page Cache无限制使用带来的系统稳定性问题,例如业务抖动、预期外的内存溢出OOM等。

代码多副本功能

Alibaba Cloud Linux 3内核版本5.10.112-11及以上

在NUMA架构(尤其是ARM实例)中,不同NUMA节点具有各自的本地内存,当一个NUMA节点上的程序或进程需要访问其他NUMA节点的代码段时,就会引入额外的延迟和性能开销。通过代码多副本功能,可以将远程节点的代码段复制到本地节点,避免了跨节点访问,从而解决NUMA架构中因跨节点访问带来的性能延迟问题。

网络

文档链接

支持版本

说明

共享内存通信(SMC)使用说明

Alibaba Cloud Linux 3内核版本5.10.60-9.al8.x86_64及以上

Alibaba Cloud Linux 3操作系统增加了对SMC-R的支持,基于阿里云弹性RDMA技术,实现对TCP应用透明无损的替换,为内存数据库、RPC、大文件传输等场景提供相比TCP更好的性能。

TCP-RT功能的配置说明

  • Alibaba Cloud Linux 2内核版本4.19.91-21.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

Alibaba Cloud Linux支持TCP层的服务监控功能(TCP-RT)。TCP-RT本质是一种trace方式。通过在内核TCP协议栈中相应的位置设置埋点,可以在单个连接上只有一个并发请求与响应的场景下识别出请求与响应,进而获取请求在协议栈中接收的时间及服务进程处理过程中的耗时等数据信息。此外,TCP-RT还支持在内核系统中做统计分析,定期输出指定连接的统计信息。

修改TCP TIME-WAIT超时时间

  • Alibaba Cloud Linux 2内核版本4.19.43-13.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

在Linux的内核中,TCP/IP协议的TIME-WAIT状态持续60秒且无法修改。但在某些场景下,例如TCP负载过高时,适当调小该值有助于提升网络性能。因此Alibaba Cloud Linux新增内核接口,用于修改TCP TIME-WAIT超时时间。

关闭IPVS的estimation功能解决网络抖动问题

  • Alibaba Cloud Linux 2内核版本4.19.91-22及以上

  • Alibaba Cloud Linux 3内核版本5.10.134-14及以上

使用Linux的IPVS模块时,IPVS会默认启用其estimation功能,当服务器规格较大且Service数量多时(例如,容器Kubernetes大规模集群场景),该功能可能导致服务端的网络请求出现几十到上百毫秒的延时或引起网络抖动。Alibaba Cloud Linux镜像提供了关闭IPVS的estimation功能的能力,若您不依赖estimation统计数据包数、连接数等信息,建议关闭IPVS的estimation功能,以消除由于统计带来的额外开销和抖动问题。

vtoa使用说明

Alibaba Cloud Linux 3内核5.10.134-15及以上版本

在DDoS高防等FullNAT场景下,客户端地址会被转换成FullNAT节点的地址。安装了vtoa的后端服务器可以在Alibaba Cloud Linux 3(内核5.10.134-15及以上版本)上基于TOA调用getsockoptgetpeername,获取真实的客户端地址。支持IPv4和IPv6。

存储

文档链接

支持版本

说明

启用cgroup writeback功能

  • Alibaba Cloud Linux 2内核版本4.19.36-12.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

Alibaba Cloud Linux对内核接口cgroup v1增加了控制群组回写(cgroup writeback)功能。该功能使您在使用内核接口cgroup v1时,可以对缓存异步I/O (Buffered I/O) 进行限速。

配置blk-iocost权重限速

  • Alibaba Cloud Linux 2内核版本4.19.81-17.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

Alibaba Cloud Linux支持基于成本模型(cost model)的权重限速功能,即blk-iocost功能。该功能是对内核中IO子系统(blkcg)基于权重的磁盘限速功能的进一步完善。

Block IO限流增强监控接口

  • Alibaba Cloud Linux 2内核版本4.19.81-17.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

为了更方便地监控Linux block IO限流,Alibaba Cloud Linux增加相关接口,用于增强block IO限流的监控统计能力。

JBD2优化接口

  • Alibaba Cloud Linux 2内核版本4.19.81-17.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

JBD2作为ext4文件系统的内核线程,在使用过程中常会遇到影子状态(BH_Shadow),影响系统性能。为解决使用JBD2过程中出现的异常,Alibaba Cloud Linux对JBD2进行了优化。

跨目录配额创建硬链接

  • Alibaba Cloud Linux 2内核版本4.19.91-18.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

默认情况下,ext4文件系统中存在约束,不允许跨目录配额创建硬链接。但在实际中,某些特定场景有创建硬链接的需求,因此Alibaba Cloud Linux提供定制接口,该接口能够绕过ext4文件系统中的约束,实现跨目录配额创建硬链接。

追踪IO时延

  • Alibaba Cloud Linux 2所有内核版本

  • Alibaba Cloud Linux 3所有内核版本

Alibaba Cloud Linux优化了IO时延分析工具iostat的原始数据来源/proc/diskstats接口,增加了对设备侧的读、写及特殊IO(discard)等耗时的统计,此外还提供了一个方便追踪IO时延的工具bcc。

检测文件系统和块层的IO hang

  • Alibaba Cloud Linux 2所有内核版本

  • Alibaba Cloud Linux 3所有内核版本

IO hang是指在系统运行过程中,因某些IO耗时过长而引起的系统不稳定甚至宕机。为了准确检测出IO hang,Alibaba Cloud Linux扩展核心数据结构,增加了在较小的系统开销下,快速定位并检测IO hang的功能。

如何配置文件系统的context readahead预读以提升文件访问性能

  • Alibaba Cloud Linux 3

  • Alibaba Cloud Linux 2(内核4.19.91-18及以上版本)

Linux系统采用预读(readahead)技术以加速文件缓存访问(buffer IO)模式。同时,系统还支持上下文预读(context readahead),旨在优化多个交错顺序数据流场景下的文件访问性能。然而,在某些随机访问场景中,上下文预读算法可能出现误判,导致读取过多实际不需要的页面。在这类场景下,关闭上下文预读算法能显著提升应用性能。

配置tcm_loop设备参数

Alibaba Cloud Linux 3内核5.10.134-17及以上版本

TCM是Linux IO Target即LIO的别称,是内核态的iSCSI target。TCMU(TCM in Userspace)是LIO的用户态实现,允许用户程序方便地对接各种用户态后端实现。基于TCMU框架和LIO loopback即tcm_loop模块,可以很方便地实现用户态iSCSI target。

监控

文档链接

支持版本

说明

内核统一异常框架(UKFEF)

Alibaba Cloud Linux 3内核版本5.10.60-9.al8及以上

Alibaba Cloud Linux 3在内核版本5.10.60-9.al8增加了UKFEF(Unified Kernel Fault Event Framework),用于统计可能导致风险的系统异常事件,并统一格式输出事件报告。

在cgroup v1接口开启PSI功能

  • Alibaba Cloud Linux 2内核版本4.19.81-17.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

Alibaba Cloud Linux为cgroup v1接口提供了PSI功能。PSI(Pressure Stall Information)是一个可以监控CPU、内存及IO性能异常的内核功能。

调度

文档链接

支持版本

说明

在cgroup v1接口开启CPU Burst功能

  • Alibaba Cloud Linux 2内核版本4.19.91-22.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

Alibaba Cloud Linux为cgroup v1接口提供了CPU Burst功能。CPU Burst功能允许容器被CPU限流时,突发使用CPU资源,进而提升容器性能、降低系统的延迟指标。

Group Identity功能说明

  • Alibaba Cloud Linux 2内核版本4.19.91-24.al7及以上

  • Alibaba Cloud Linux 3内核版本5.10.46-7.al8及以上

Alibaba Cloud Linux支持Group Identity功能,您可以通过该功能为每一个CPU cgroup设置不同的身份标识,以区分不同CPU cgroup中进程任务的优先级。

兼容性

文档链接

支持版本

说明

/proc/meminfo文件中的统计信息变更说明

  • Alibaba Cloud Linux 2内核版本4.19.91-22.al7及以上

  • Alibaba Cloud Linux 3所有内核版本

Alibaba Cloud Linux操作系统在内核4.19.91-22.al7及其之后的版本中,/proc/meminfo文件内的匿名页状态统计信息Active(anon)Inactive(anon)发生了变化。如果您的应用程序正在使用该统计信息,统计信息的变化会导致变更前后查询到的数据不一致。

其他

文档链接

支持版本

说明

增强容器资源可见性

  • Alibaba Cloud Linux 2内核版本4.19.91-22.2.al7及以上

  • Alibaba Cloud Linux 3内核版本5.10.46-7.al8以及上

Alibaba Cloud Linux在内核层面提供了容器资源视图功能的相关接口,实现对容器资源的可见性增强。

Alibaba Cloud Linux的user namespace安全加固

  • Alibaba Cloud Linux 3所有内核版本

  • Alibaba Cloud Linux 2所有内核版本

Linux支持用户命名空间(user namespace)特性,以实现进程在不同用户命名空间中拥有不同的用户ID(user id)与组ID(group id),进而实现权限隔离。然而,开启用户命名空间会增加系统面临权限提升攻击的风险(攻击者可能通过系统漏洞实现权限提升,从而获得特权权限,逃脱系统的权限控制)。