电压瞬时跌落会引发硬件复位、pcie中断等故障,内核日志中出现“acpi: low voltage”等关键词;可用dmesg -t或-t -h筛选相关报错,结合journalctl按时间戳定位上下文,并检查/var/log/kern.log等持久化日志追溯历史异常。

电压瞬时跌落(brownout)可能引发硬件复位、PCIe链路中断、内存校验失败或电源管理模块异常,这类问题会在内核日志中留下特定痕迹,如“ACPI: Low voltage”、“pcieport 0000:00:1c.0: AER: Uncorrectable error”、“EDAC MC0: UE”或“thermal thermal_zone0: critical temperature reached”等关键词,需结合时间戳与硬件上下文交叉定位。
用 dmesg 快速筛查电压相关内核报错
执行 dmesg -T | grep -i "brown\|volt\|under\|over\|thermal\|reset\|aer\|edac\|critical",该命令以人类可读时间戳输出全部内核消息,并过滤出与电压波动强相关的术语。注意:-T 参数依赖系统时钟同步,若系统刚上电未同步,时间可能不准,此时改用 dmesg -H(带相对时间前缀)更可靠。
若输出为空但怀疑存在隐性问题,补查低优先级消息:dmesg -T --level=debug,info | grep -i "acpi\|power\|regulator\|pstate",因为部分主板厂商驱动将电压告警设为 info 级别而非 warn/err。
【必须加 sudo 才能获取完整 ACPI 和电源子系统日志】
用 journalctl 锁定故障发生时刻的完整上下文
电压跌落通常伴随系统短暂卡顿或设备离线,这类事件在 journalctl 中往往与内核消息、固件日志、udev 事件紧密相邻。先找出可疑时间点:
第一步:运行 sudo journalctl -b -o short-monotonic | grep -E "(reset|offline|link.*down|throttling)" | head -5,提取本次启动中最早出现的硬件异常事件及其单调时间戳(如 [ 12.345678])。
第二步:以该时间戳为中心,前后各扩展 3 秒查看全景:sudo journalctl -b --since="12.345678" --until="12.348678" -o short-monotonic。这能暴露 ACPI firmware 报告的电压采样值、thermal throttling 触发链、以及是否紧随 CPU frequency scaling 调整之后发生——三者共现是电压不稳的典型证据。
第三步:若发现 “ACPI Error: No handler for Region [EC]” 或 “ec: EC_CMD/EC_SC access denied”,说明嵌入式控制器通信异常,极可能是电压跌落导致 EC 复位失败,需重点检查 EC 固件版本与主板供电设计。
检查持久化日志文件中的历史电压异常记录
方法一:直接读取 /var/log/kern.log(Debian/Ubuntu 默认启用)或 /var/log/messages(RHEL/CentOS 默认路径),执行:sudo grep -i "voltage\|brownout\|under-voltage" /var/log/kern.log | tail -15。该文件由 rsyslog/syslog-ng 持久化写入,不受 dmesg 环形缓冲区覆盖影响,适合回溯数天前的偶发跌落事件。
方法二:若系统启用了内核日志持久化到 /var/log/dmesg,运行 sudo zcat /var/log/dmesg.*.gz 2>/dev/null | grep -i "reset\|power\|volt" || sudo cat /var/log/dmesg | grep -i "reset\|power\|volt",覆盖压缩归档与当前文件两种情况。
注意:某些嵌入式或服务器 BIOS 将电压采样日志写入 /sys/firmware/acpi/buffers/ 下的二进制 buffer,此时需配合 acpidump 和 iasl 解析 DSDT,普通运维无需操作此步骤。











