systemd-journald 与 irq/xxx-aerdrv 进程 CPU/IO 占用过高:有硬件问题的 Debian 小服务器屏蔽 PCIe 高级错误报告(AER)以降低异常 CPU 占用

手边接触到一个安装了 Debian 的 x86 机器,在全新安装 Debian 13 后,出现异常症状:login 输入正确凭据登录后,显示 motd,但终端假死并在一分钟后强制登出;屏幕大量显示 Failed to start systemd-journald service;top 显示 systemd-journald 和 irq/120-aerdrv 两个进程大量占用 CPU,且硬盘 IO 异常。

这台机器已知存在硬件问题,表现为电源管理异常、睿频时机器断电。在苟延残喘、不考虑进行硬件维修的前提,寻求软件方法缓解此问题,目的是使其能正常运行 Debian(哪怕不那么稳定)。

Rescue Mode 检查日志文件,解析前因后果:

AER 是 PCIe 总线支持一种高级的错误报告机制,当链路或设备发生错误(即使是可纠正的错误)时,硬件会记录错误状态,内核的 AER 驱动会读取这些状态并生成详细的日志信息。

设备内核抛出巨巨巨量 PCIe 硬件错误,由 120-aerdrv 表达某些硬件存在问题(后续查清是 GPU 坏了),问题由 systemd-journald 保存到本地日志,但错误发生速度远大于日志写速度,导致硬盘写排队;且大量垃圾日志的分析拖累了整机 CPU 工作。

最终发现的解决方案是:在 Debian 系统启动之前,声明禁用 PCI 高级错误报告(Advanced Error Reporting, AER)功能,可以通过为 GRUB 启动项添加 pci=noaer 解决。完整解决流程附在博文下方。

使用 pci=noaer 本质上是一种屏蔽症状而非解决问题根源的方法。这个参数只是让内核“闭嘴”,并不会修复导致错误产生的根本硬件或固件问题。如果错误源于有缺陷的硬件,问题依然存在,只是不再被记录。禁用 AER 意味着放弃了内核对于 PCIe 硬件错误的监控和报告能力。如果未来 PCIe 设备真的出现了严重的、不可纠正的硬件故障,系统将无法通过 AER 机制提供详细的诊断信息。

处理流程

进入 root 账户,接下来流程必须使用 root 账户处理。

su

编辑 /etc/default/grub 文件,更新文件内容:

vim /etc/default/grub

将该文件中的 GRUB_CMDLINE_LINUX_DEFAULT 值添加一个 pci=noaer,

假设原本是 GRUB_CMDLINE_LINUX_DEFAULT=”quiet pci=noaer”,那么改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet pci=noaer"

更新 GRUB 设置:

/usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg

重启机器:

/sbin/reboot

重启后,检查 Debian 是否正常按 pci=noaer 启动:

cat /proc/cmdline

若输出信息有 pci=noaer,那么更改已生效。此时异常占用理应缓解。

本作品(《systemd-journald 与 irq/xxx-aerdrv 进程 CPU/IO 占用过高:有硬件问题的 Debian 小服务器屏蔽 PCIe 高级错误报告(AER)以降低异常 CPU 占用》)采用知识共享署名 4.0 国际许可协议进行许可。转载需注明来源(作者 氧化某人,原文链接 https://www.yang1120.com/archives/791)。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇