二、背景信息
在公有云上运行混合业务(容器、数据库、AI 推理、Web 服务)时,通用 Linux 发行版的默认内核配置通常无法兼顾所有场景。例如:容器混部时需要按 cgroup 精确限制 CPU 和内存;大内存数据库需要透明大页降低 TLB miss;跨地域数据传输需要 BBR 拥塞控制提升吞吐;生产环境还需要 kdump 在内核崩溃时保留现场。
TencentOS Server 4 的内核针对上述腾讯云场景做了大量优化和默认值调整,使得开箱即用即可覆盖大多数业务。但部分高级特性(如 cgroup v2 IO 控制、eBPF 程序、kdump 转储)仍需用户根据实际业务进行显式配置,才能发挥最大价值。这篇作为总览入口,帮助你快速定位每类特性对应的配置方法。
三、注意事项
·这篇主要基于 TencentOS Server 4( 6.6 内核)编写。部分参数在不同内核小版本可能存在差异,请以实际系统 uname -r 输出为准。
·内核功能配置在生产环境修改前,建议先在测试环境验证。特别是 crashkernel 预留、cgroup 限制等参数一旦设置不当,可能导致系统不可启动或业务被异常终止。
·这篇列出的大部分命令需要 root 权限执行。在容器内执行时,部分 /sys、/proc 接口可能受宿主机 cgroup 限制而不可写,请在宿主机上配置。
四、前提条件
在执行这篇档中任何内核配置、查看或调优命令前,请确认已满足以下条件:
·root 权限:这篇大部分命令需要 root 执行,普通用户请通过 sudo -i 或具有 sudo 权限的账户操作。
·内核配置文件存在:/boot/config-$(uname -r) 必须存在,否则无法用 grep 校验 CONFIG_* 项。
·宿主机环境:涉及 /sys、/proc 的写操作(如 cgroup、THP)请在宿主机执行;在容器内执行时这些接口受宿主机 cgroup 限制,可能只读或不可写。
·已确认内核版本:执行 uname -r,确认输出以 6.6.x 开头。如为 5.4.x,部分特性不可用,详见下文「适用版本」。
·维护窗口:涉及 sysctl、cgroup、BBR 等运行时参数的修改可能影响在线业务,建议在维护窗口操作并准备回滚方案。
五、适用版本
| 系统版本 | 内核系列 | 基础内核版本 | 支持状态 |
| TencentOS Server 4 | Linux 6.6 LTS | 6.6 | 默认版本,全面支持,推荐使用 |
| TencentOS Server 3 | Linux 5.4 LTS | 5.4 | 维护版本 |
CPU 架构支持:x86_64(全面支持)、aarch64(全面支持,部分外设驱动以内核 CONFIG_* 实际值为准)。
查看当前内核版本与架构:
# 查看运行中的内核版本uname -r# 输出:6.6.79-25.8.tl4.x86_64# 查看内核详细信息(含架构、编译器)cat /proc/version# 输出:Linux version 6.6.79-25.8.tl4.x86_64 (gcc …) # 查看CPU架构uname -m# 输出:x86_64
七、调度与进程管理
| 特性 | 支持内核版本 | 业务价值 | 适用场景 |
| EEVDF 调度器 | 6.6 默认启用 | 替代传统 CFS 算法,降低长尾延迟,提升交互类业务的响应速度 | 在线服务、Web 应用、对延迟敏感的业务 |
| PSI(Pressure Stall Information) | 5.4 | 实时监控 CPU、内存、IO 资源压力,帮助快速定位性能瓶颈 | 容器混部、性能调优、容量规划 |
| cgroup CPU 控制 | 全版本 | 以进程粒度限制 CPU 使用,防止单一业务抢占资源 | 多租户隔离、容器资源管理 |
八、内存管理
| 特性 | 支持内核版本 | 业务价值 | 适用场景 |
| 透明大页(THP) | 全版本(6.6 默认开启) | 减少页表开销,提升大内存应用的访问效率 | 数据库、虚拟机、AI 推理 |
| 显式大页(HugeTLB) | 全版本 | 为大内存应用预留固定大页,避免运行时分配延迟 | 数据库(如 Redis、MySQL)、HPC |
| cgroup v2 内存控制 | 5.4+ | 精细化控制容器/进程的内存用量,防止单进程内存泄漏拖垮整机 | 容器编排、混部场景 |
| 多级 LRU | 6.6 默认启用 | 优化内存回收效率,减少不必要的页面交换 | 内存密集型业务 |
九、IO 与存储
| 特性 | 支持内核版本 | 业务价值 | 适用场景 |
| io_uring | 5.1+(6.6 完整支持) | 高性能异步 IO 接口,减少系统调用开销,显著提升 IOPS 和吞吐 | 高并发数据库、网络代理、文件服务 |
| blk-mq 多队列 | 全版本 | 充分利用 NVMe/SSD 多队列能力,提升块设备 IO 性能 | 全闪存储、高 IO 业务 |
| cgroup v2 IO 控制 | 5.4+ | 限制容器/进程的 IO 带宽和 IOPS,防止单业务打满磁盘 | 多租户存储隔离 |
十、网络内核
| 特性 | 支持内核版本 | 业务价值 | 适用场景 |
| eBPF(XDP/TC) | 5.4+(6.6 完整支持) | 内核可编程数据面,实现高性能包处理、流量分析和安全过滤 | DDoS 防护、网络监控、负载均衡 |
| TCP BBR 拥塞控制 | 4.9+ | 替代传统 cubic 算法,在高带宽长延迟链路上提升吞吐 | 跨地域数据传输、公网服务 |
| conntrack 百万级连接 | 全版本 | 支持超大规模并发连接追踪 | 高并发网关、负载均衡 |
十一、安全与隔离
| 特性 | 支持内核版本 | 业务价值 | 适用场景 |
| SELinux | 全版本 | 强制访问控制,提供细粒度的安全策略 | 安全合规、多租户环境 |
| Linux Kernel Lockdown | 5.4+ | 限制内核接口暴露,配合 Secure Boot 保护内核完整性 | 安全合规要求高的场景 |
| Seccomp-BPF | 全版本 | 系统调用过滤,减少容器攻击面 | 容器安全基线 |
| Namespace 完整支持 | 全版本 | 支持 mount/uts/ipc/pid/net/user/cgroup/time 全部 namespace | 容器隔离、沙箱 |
十二、调试与可观测性
| 特性 | 支持内核版本 | 业务价值 | 适用场景 |
| eBPF 可观测工具链 | 5.4+(6.6 完整支持) | 无侵入式内核追踪,定位性能瓶颈和异常行为 | 性能调优、故障排查、安全审计 |
| ftrace | 全版本 | 内核内置追踪机制,分析函数调用关系 | 内核调试、性能分析 |
| perf | 全版本 | CPU profiling、PMU 事件采样 | 性能瓶颈定位 |
| kdump/kexec | 全版本 | 内核崩溃时自动保存内存镜像,供事后分析 | 生产环境稳定性保障 |
十四、内核特性支持版本矩阵
| 特性分类 | 特性 | 6.6 LTS | 5.4 LTS |
| 调度 | EEVDF 调度器 | 默认启用 | 不支持 |
| 调度 | PSI | 支持 | 支持 |
| 内存 | 透明大页 THP | 默认启用 | 支持 |
| 内存 | 多级 LRU | 默认启用 | 不支持 |
| IO | io_uring | 支持 | 支持 |
| 网络 | eBPF (XDP/TC) | 支持 | 支持 |
| 网络 | TCP BBR | 支持 | 支持 |
| 安全 | Kernel Lockdown | 支持 | 支持 |
| 调试 | kdump/kexec | 支持 | 支持 |
十五、内核配置查看接口
| 接口文件 | 说明 |
| /boot/config-$(uname -r) | 内核编译配置(全量) |
| /proc/version | 内核版本信息 |
| uname -r | 运行内核版本号 |
十六、配置示例
注意:警告:
注意:操作涉及查看和修改内核/运行时参数。生产环境修改前,请务必:
注意:1. 先在测试环境验证命令和预期输出;
注意:2. 确认已具备 root 权限并处于维护窗口;
注意:3. 准备回滚命令(如 sysctl -w <参数>=<原值>、echo <原值> > /sys/…);
注意:4. 涉及 crashkernel 预留、cgroup 限制等参数一旦设置不当,可能导致系统不可启动或业务被异常终止。
十七、查看内核版本与配置
1. 确认内核版本(以 TencentOS Server 4 为例 ):
uname -r# 预期输出:6.6.117-45.14.tl4.x86_64
2. 查看内核详细信息(确认编译器和发布版本):
cat /proc/version# 预期输出:Linux version 6.6.117-45.14.tl4.x86_64 (gcc …) …
3. 确认配置文件存在并可读:
ls -l /boot/config-$(uname -r)# 预期输出:-rw-r–r–. 1 root root 273465 … /boot/config-6.6.117-45.14.tl4.x86_64
4. 校验关键功能已编译启用(每条 grep 应有输出,表示 =y 已启用):
grep CONFIG_CGROUPS=y /boot/config-$(uname -r) # cgroup 支持grep CONFIG_BPF=y /boot/config-$(uname -r) # eBPF 支持grep CONFIG_IO_URING=y /boot/config-$(uname -r) # io_uring 支持grep CONFIG_TRANSPARENT_HUGEPAGE=y /boot/config-$(uname -r) # 透明大页# 预期输出:每条命令分别回显 CONFIG_CGROUPS=y / CONFIG_BPF=y / CONFIG_IO_URING=y / CONFIG_TRANSPARENT_HUGEPAGE=y
十八、启用 TCP BBR 拥塞控制(演示示例)
以下演示将运行中内核的默认拥塞控制从 cubic 切换为 bbr,适用于跨地域传输、公网服务场景:
1. 查看当前可用与已选拥塞控制算法:
sysctl net.ipv4.tcp_available_congestion_control# 预期输出:net.ipv4.tcp_available_congestion_control = reno cubic bbr …(应包含 bbr)
2. 若 bbr 不在列表中,则需要加载内核模块:
modprobe tcp_bbrecho tcp_bbr > /etc/modules-load.d/bbr.conf # 开机自动加载# 预期输出:无报错;再次执行 sysctl net.ipv4.tcp_available_congestion_control 应看到 bbr
3. 设置运行时默认算法为 bbr:
sysctl -w net.ipv4.tcp_congestion_control=bbr# 预期输出:net.ipv4.tcp_congestion_control = bbr
4. 持久化配置到 sysctl 配置文件:
echo "net.ipv4.tcp_congestion_control=bbr" > /etc/sysctl.d/99-bbr.confsysctl -p /etc/sysctl.d/99-bbr.conf# 预期输出:net.ipv4.tcp_congestion_control = bbr
5. 验证生效:
sysctl net.ipv4.tcp_congestion_control# 预期输出:net.ipv4.tcp_congestion_control = bbr
十九、启用透明大页(THP)运行时配置(演示示例)
1. 查看当前 THP 状态:
cat /sys/kernel/mm/transparent_hugepage/enabled# 预期输出:[always] madvise never (方括号在 always 表示已全局启用)
2. 设置为 always(立即生效):
echo always > /sys/kernel/mm/transparent_hugepage/enabled# 预期输出:无;再次 cat 应显示 [always] madvise never
3. 持久化(可选,通过 tuned 或 sysctl 服务管理):
echo "echo always > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.localchmod +x /etc/rc.local# 预期输出:无;重启后状态仍为 always
21、Q1:执行 cat /boot/config-$(uname -r) 提示 "No such file or directory"?
A:说明当前内核对应的配置文件未安装。执行安装指令yum install -y kernel-debuginfo-$(uname -r) 或从同版本内核 RPM 包中提取 /boot/config-*;也可使用 zcat /proc/config.gz(若内核编译了 CONFIG_IKCONFIG_PROC)。
22、Q2:grep CONFIG_BPF=y 返回空,但 grep CONFIG_BPF=m 有输出?
A:=m 表示编译为模块,=y 表示内建。功能上均可用,但模块形式需 modprobe 加载后才能使用。校验时请同时检查 =y 和 =m:
grep -E '^CONFIG_BPF=(y|m)' /boot/config-$(uname -r)
23、Q3:在 TencentOS Server 3(5.4 内核)上加载某特性模块失败?
A:该特性可能仅在 Linux 6.6 内核中内建或默认启用。可按以下步骤排查:
·执行 grep CONFIG_<特性> /boot/config-$(uname -r) 确认该特性在当前内核是否已编译。
·若返回 =y,说明已内建,直接使用即可,无需加载模块;若返回 =m,执行 modprobe <模块名> 加载后使用。
·若 grep 无输出,说明当前 5.4.x 内核未编译该特性,部分特性(如 EEVDF 调度器)无法通过模块启用,需升级到 TencentOS Server 4 获取默认支持。
24、Q4:sysctl -w 设置成功,但重启后失效?
A:sysctl -w 仅运行时生效。需写入 /etc/sysctl.d/*.conf 持久化,例如 echo "net.ipv4.tcp_congestion_control=bbr" > /etc/sysctl.d/99-bbr.conf,再执行 sysctl -p /etc/sysctl.d/99-bbr.conf 加载。
25、Q5:在容器内修改 /sys/fs/cgroup/… 提示 "Read-only file system"?
A:容器内 /sys 通常以只读方式挂载,且受宿主机 cgroup 限制。请在宿主机以 root 执行相关 cgroup 配置,容器侧通过 systemd unit 或容器运行时参数(如 docker 的 –cpu-quota)间接设置。