0

0

Linux CPU抖动问题_抖动来源分析

舞夢輝影

舞夢輝影

发布时间:2026-03-16 12:40:35

|

832人浏览过

|

来源于php中文网

原创

Linux CPU抖动是多因素叠加导致的响应延迟突增,需区分软中断压核、内存颠簸、cgroup开销过大及定时任务干扰四类根因,各自有对应诊断命令与修复策略。

linux cpu抖动问题_抖动来源分析

Linux CPU抖动通常不是单一原因造成,而是多个层面问题叠加触发的响应延迟突增现象。关键要区分是“软中断压核”“内存颠簸”“cgroup开销过大”,还是“定时任务干扰”——它们表现相似(如%si飙升、RTT波动、sys占比异常),但根因和修复路径完全不同。

软中断不均导致的CPU抖动

当网卡收包压力集中到某一个CPU核时,该核的NET_RX软中断会持续占用大量时间,表现为top中%si长期超10%,perf top看到net_rx_action高频出现。

  • cat /proc/interrupts | grep eth0确认硬中断是否只打在单个CPU上
  • 检查/proc/softirqs中NET_RX列,看是否存在某CPU数值比其他高10倍以上
  • 若RPS未启用,可手动开启:echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus(按实际CPU数调整掩码)
  • net.core.netdev_budget不宜盲目调大;千兆网建议60–120,万兆120–240,并同步增大net.core.netdev_max_backlog

内存系统性颠簸(thrashing)

这不是CPU忙,而是CPU空转却响应极慢——因为大量时间花在页面换入换出上。典型特征是free显示内存几乎耗尽、swap使用率上升、pgpgin/pgpgout值剧烈跳动。

课游记AI
课游记AI

AI原生学习产品

下载
  • 运行vmstat 1 10,关注si(swap in)和so(swap out)列是否持续非零
  • cat /proc/vmstat | grep -E "pgpgin|pgpgout|pgmajfault"观察缺页频率是否陡增
  • pgmajfault每秒数百次,说明工作集远超物理内存,需减少并发进程数或优化应用内存驻留行为
  • 避免全局置换策略滥用,对关键服务可考虑memcg限制+LRU隔离

cgroup数量过多引发内核开销抖动

尤其在容器密度高的宿主机上,memory子系统遍历成千上万个cgroup会显著拖慢memcg_stat_show等内核函数,导致sys CPU飙升、请求延时毛刺明显。

  • 执行cat /proc/cgroups,重点关注memory行的num_cgroups是否超过1000
  • perf record -a -g sleep 10 && perf report,若memcg_stat_showmem_cgroup_iter占比超20%,基本可锁定
  • 清理闲置cgroup:删除无用容器后,确保其cgroup目录被自动回收(检查/sys/fs/cgroup/memory/下残留)
  • 生产环境建议控制cgroup层级≤10,总数≤1000,避免嵌套过深或命名爆炸

外部周期性干扰源

看起来像CPU抖动,实则是计划任务、监控采集、日志轮转等每分钟/每5秒规律性触发造成的假象。这类问题常被忽略,因为top、htop等工具刷新间隔太长,看不出瞬时峰值。

  • sar -u 1 60抓取1秒粒度的CPU使用率,观察是否呈现严格周期性尖峰
  • 检查crontab -l/etc/cron.d/下是否有高频任务,尤其是涉及find、grep、journalctl等I/O密集型命令
  • 查看/var/log/cron确认执行时间点是否与抖动时刻吻合
  • 对低配机器,可将非关键cron任务错峰执行,或改用anacron降低并发压力

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

931

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

32

2025.12.06

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1564

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

716

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

300

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

801

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

588

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

570

2023.07.20

C++多线程并发控制与线程安全设计实践
C++多线程并发控制与线程安全设计实践

本专题围绕 C++ 在高性能系统开发中的并发控制技术展开,系统讲解多线程编程模型与线程安全设计方法。内容包括互斥锁、读写锁、条件变量、原子操作以及线程池实现机制,同时结合实际案例分析并发竞争、死锁避免与性能优化策略。通过实践讲解,帮助开发者掌握构建稳定高效并发系统的关键技术。

2

2026.03.16

热门下载

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

精品课程

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

共48课时 | 10.7万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

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

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