麒麟V10开机提示CPU停滞Soft Lockup怎么排查

阿磊吖_5637

阿磊吖_5637

2026-10-26

897人浏览

原创

软锁告警表明cpu核心在内核态被长期独占,非瞬时抖动:需先用dmesg确认告警频次与固定cpu编号;再据宿主机或虚拟机环境分别检查bios c-state或vcpu绑定;继而提取call trace定位根因(如multi_cpu_stop或clear_page);最后通过启动参数调整、内核特性禁用或docker资源限制实现临时规避与持久修复。

麒麟v10开机提示cpu停滞soft lockup怎么排查

银河麒麟V10开机过程中出现“CPU stalled for N seconds”或内核日志反复报“watchdog: BUG: soft lockup - CPU#X stuck for 22s!”,说明某个CPU核心在内核态被长时间独占,看门狗线程未能按时更新心跳,系统已触发软锁告警——这不是偶然卡顿,而是任务在中断上下文、自旋锁区域或驱动初始化中陷入死循环或无限等待。

第一步:确认是否真为软锁而非瞬时抖动

开机后若能进入系统,立刻打开终端执行:
sudo dmesg -T | grep -i "soft\|watchdog" | tail -20
重点观察时间戳是否密集连续(如1分钟内出现5次以上)、是否固定在某一个CPU编号(如CPU#3)、以及卡住的进程名是否稳定(如nginx、migration/X、runc:[2:INIT])。若仅出现1~2次且间隔超5分钟,可能是偶发调度延迟,暂不需深度干预。

第二步:区分宿主机与虚拟机环境

方法一:物理机环境(含国产化整机)
检查BIOS/UEFI中是否启用C-states(尤其是C6/C7深度睡眠状态),部分飞腾FT-2000+/鲲鹏920平台在C-state退出异常时会导致watchdog失准。进入BIOS → Advanced → CPU Configuration → C-State Control → 设为Disabled。
【关键前提】此操作需重启生效,且关闭后整机功耗会上升约8%~12%,仅用于排查阶段。

方法二:VMware虚拟机环境
执行virsh list --all确认当前运行的虚拟机;对疑似问题VM执行virsh vcpuinfo ,查看vCPU绑定状态。若显示“CPU Affinity: yyyy”,其中y数量少于vCPU总数,说明存在vCPU未分配到物理核心——这会导致调度器反复尝试迁移线程,极易触发soft lockup。

第三步:定位卡死进程与调用栈

① 若系统尚可响应(未完全冻结),立即执行:
sudo cat /proc/sys/kernel/softlockup_panic
返回0表示仅告警不宕机,返回1则已配置为panic,此时必须优先查coredump或vmcore。

Vizard
Vizard

Vizard是一款把长视频自动剪成短视频、字幕片段和社媒内容的 AI 视频编辑工具。

下载

② 进入TTY终端(Ctrl+Alt+F2),执行:
sudo dmesg -T | awk '/soft lockup/,+5' | grep -E "(Comm:|pc :|lr :|Call trace:)"
这一行命令精准提取软锁发生时的进程名、程序计数器地址和调用链,避免被海量日志淹没。

③ 对比两次软锁的Call trace是否一致:
若每次都是multi_cpu_stop+0xe0/0x170 → cpu_stopper_thread,则大概率是内核热插拔CPU逻辑缺陷,需升级至ky10-sp3-202609补丁包;
若总是clear_page+0x10/0x24 → __cpu_clear_user_page,则指向内存清零函数在ARM64平台遭遇TLB失效死循环,应禁用内核参数page_alloc.shuffle。

第四步:临时规避与持久修复

方法1:启动参数级临时缓解
开机进GRUB菜单 → 按e编辑 → 在linux行末尾添加:
softlockup_panic=0 watchdog_thresh=30 nohz_full=0
其中softlockup_panic=0防止自动重启,watchdog_thresh=30放宽阈值避免误报,nohz_full=0禁用无节拍模式(该模式在多vCPU虚拟机中极易引发软锁)。

方法2:永久禁用高风险内核特性
编辑/etc/default/grub,找到GRUB_CMDLINE_LINUX行,在引号内追加:
intel_idle.max_cstate=1 rcu_nocbs=0-63
前者强制Intel平台只使用C1浅层睡眠,后者关闭RCU回调卸载到指定CPU(适用于64核鲲鹏机器),保存后执行sudo grub2-mkconfig -o /boot/grub2/grub.cfg并重启。

方法3:针对Docker/runc场景专项处理
若软锁总伴随runc:[2:INIT]或containerd-shim,执行:
echo 'kernel.softlockup_panic = 0' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
同时在/etc/docker/daemon.json中添加:
{"default-ulimits": {"cpu": {"Name": "cpu", "Hard": 100000, "Soft": 100000}}}
限制单容器CPU配额,避免其长期霸占某核心。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

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

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

20

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

20

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

20

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

20

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

20

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

20

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

100

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

20

16

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.9万人学习