0

0

LinuxCPU性能调优经验_稳定运行策略总结【技巧】

冷炫風刃

冷炫風刃

发布时间:2026-01-03 15:40:03

|

478人浏览过

|

来源于php中文网

原创

CPU使用率不高但服务响应慢,主因是上下文切换过频或软中断堆积,如NET_RX占满单核导致关键路径阻塞;需用vmstat、/proc/softirqs等工具定位,并检查RPS/RFS配置。

linuxcpu性能调优经验_稳定运行策略总结【技巧】

为什么 top 显示 CPU 使用率不高,但服务响应却很慢

这通常不是 CPU 瓶颈,而是 上下文切换过频软中断(softirq)堆积 导致。比如网卡收包后触发大量 NET_RX 软中断,占满某个 CPU 核,而应用线程被调度到其他核上——看似整体负载低,实际关键路径被阻塞。

  • vmstat 1 观察 cs(context switch)列,持续 > 50000 表示异常频繁
  • cat /proc/softirqs 查看 NET_RXNET_TX 计数,对比各 CPU 核差异
  • 检查是否启用了 RPS(Receive Packet Steering)或 RFS(Receive Flow Steering),未启用时所有软中断默认集中在 CPU 0 上
  • 临时缓解:通过 echo f > /proc/irq/*/smp_affinity_list(需按实际 IRQ 号替换)把网卡中断分散到多核

perf record -e cycles,instructions,cache-misses 跑出来没数据?

perf 默认只采集当前用户的进程事件,且内核需开启 perf_event_paranoid 权限。值为 2 时禁止非 root 采集内核态事件,-1 才允许全权限采样。

  • 先执行 sudo sysctl -w kernel.perf_event_paranoid=-1
  • 确认内核配置支持:zcat /proc/config.gz | grep CONFIG_PERF_EVENTS 应返回 y
  • 若仍无 cache-misses 数据,可能是 CPU 不支持该 PMU 事件(如某些 Atom 或旧 Xeon),改用 perf stat -e cache-references,cache-misses 更稳妥
  • 注意 perf record 默认采样频率为 4000Hz,高负载下可能丢样本,可加 -F 100 降低频率保完整性

调大 /proc/sys/kernel/sched_latency_ns 会让延迟更稳定吗

不会,反而可能加剧尾延迟(tail latency)。这个参数定义的是 CFS 调度器的“调度周期”,增大它意味着单个任务在一个周期内能分到更多时间片,但也会拉长其他任务的等待时间,尤其对小周期、高优先级的实时任务不利。

笔灵AI论文写作
笔灵AI论文写作

免费生成毕业论文、课题论文、千字大纲,几万字专业初稿!

下载
  • 默认值通常是 6000000(6ms),在容器或微服务场景下建议保持默认,或仅微调至 4000000(4ms)以提升响应灵敏度
  • 真正影响稳定性的是 sched_min_granularity_ns:设得太小(如 2ms)则小任务得不到及时响应。推荐值:1000000(1ms)
  • 修改后必须配合观察 /proc/sched_debug 中的 nr_cpusnr_switches 变化,避免误伤吞吐

使用 cpupower frequency-set 切换 governor 后效果不明显

常见原因是用户空间 governor 未真正接管控制权,或者 BIOS 设置了 Intel SpeedStepAMD Cool'n'Quiet 锁定最低频率。

  • 先确认当前生效的 governor:cpupower frequency-info --governor,而非只看 --policy
  • 检查 BIOS 中是否禁用 OS Control Mode(Intel)或 CPPC(AMD),这些选项开启前,Linux 无法写入 P-state 寄存器
  • performance governor 并不等于“一直跑满频”,它只是移除降频限制,实际频率仍受 thermal throttlingpower limit (PL1/PL2) 约束;可用 turbostat -i 1 实时观察 Avg_MHzPkg_%
  • 若用在数据库类低延迟场景,建议搭配 isolcpus=managed_irq,1,2,3 启动参数隔离 CPU,并将关键进程绑到隔离核上

CPU 性能调优最易被忽略的一点:几乎所有参数都依赖 workload 特性。Web 服务看重短请求延迟,批处理关注吞吐,而实时音视频则要求确定性调度——没有通用最优解,只有针对 perf script 输出的 callgraph 和 perf report --sort comm,dso,symbol 定位的真实热点做针对性干预才有效。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
switch语句用法
switch语句用法

switch语句用法:1、Switch语句只能用于整数类型,枚举类型和String类型,不能用于浮点数类型和布尔类型;2、每个case语句后面必须跟着一个break语句,以防止执行其他case的代码块,没有break语句,将会继续执行下一个case的代码块;3、可以在一个case语句中匹配多个值,使用逗号分隔;4、Switch语句中的default代码块是可选的等等。

521

2023.09.21

Java switch的用法
Java switch的用法

Java中的switch语句用于根据不同的条件执行不同的代码块。想了解更多switch的相关内容,可以阅读本专题下面的文章。

404

2024.03.13

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

381

2023.09.04

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

376

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

565

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

473

2023.08.10

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

338

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2069

2023.08.14

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

194

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.5万人学习

Git 教程
Git 教程

共21课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号