硬件看门狗:主板上的倒计时复位电路

背景 homelab 里的 r86s(R86S 小主机,Celeron N5100,跑 Proxmox VE)偶尔整机卡死。卡死后机器既不会自己恢复,也不会留下日志,前几次分别过了约 10.5 小时和 4 小时才被人发现并重启。排查过程见 R86S IRQ 16 nobody cared。 在修不了根因(BIOS 没有更新、microcode 已是最新)的情况下,第一件要做的事是让机器卡死后能自动恢复,这就是硬件看门狗的用途。这篇记录硬件看门狗是什么、Linux 和 Proxmox 怎么用它,以及它在 r86s 这次排查里起的作用。 看门狗是什么 看门狗(watchdog timer,WDT)是一个独立于 CPU 运行的倒计时器: 软件启动看门狗,设一个超时时间,比如 10 秒; 软件定期"喂狗"(kick / pet),每次喂狗把倒计时重置回 10 秒; 如果软件卡死、没人喂狗,倒计时走到 0,看门狗就直接拉复位信号,把整台机器重启。 关键在于独立:倒计时由芯片组里的电路自己走,不依赖 CPU 执行任何指令。CPU 死锁、内核卡死、关了中断,它都照样倒数,照样复位。这一点是软件手段做不到的。 这个思路最早来自嵌入式和工控领域:无人值守的设备死机了没人去按电源键,必须自己恢复。单片机几乎都内置看门狗。 硬件看门狗在哪里 它通常不是一块单独的板卡或模块,而是集成在芯片里的一小块电路。x86 机器上常见的几种: 位置 例子 Linux 驱动 Intel 芯片组(ICH/PCH)里的 TCO 定时器 从 1999 年的 ICH 一直到现在的 PCH,包括 Jasper Lake iTCO_wdt AMD 芯片组(FCH)里的 TCO 定时器 大部分 AMD 平台 sp5100_tco 主板上的 Super I/O 芯片 ITE IT87xx、Nuvoton NCT67xx、Fintek F718xx it87_wdt、w83627hf_wdt、f71808e_wdt 服务器的 BMC IPMI 看门狗 ipmi_watchdog ARM SoC 树莓派的 BCM2835 bcm2835_wdt 所以"几乎所有 x86 主板都有"是成立的,至少芯片组里会有一个 TCO 定时器。但"有"不等于"能用": ...

Created 10106-10-10 · Updated 10106-10-10 · 5 min · 1038 words · -

Hardware

Hardware QNAP TS453B mini Dell Wyse 5070 R86S Dell Inspiron N4050 Intel J4105 软路由 Celeron J3455 Mini PC(备用软路由) SONY WF-1000XM3 CanoKey K375S ROCK 5B Mitsubishi Outlander MacBook Air Nuphy Air75 DELL U2723QX Apple Watch Series 8 WH-1000XM5 AM40 高尔夫(进口) 2019款 1.8TSI 旅行版 nexus 7 2013 畅网微控 n100 Ruckus R310, 优科 beelink SER8 Dell U2412Mb keychron Q5HE Nintendo Switch2 Celeron J3455 Mini PC 备用软路由小主机。硬件详情见 Celeron J3455 Mini PC。 beelink SER8 AMD 8845HS AMD Radeon 780M ROCK 5B https://wiki.radxa.com/Rock5 ...

Created 13136-01-13 · Updated 23236-07-23 · 5 min · 1004 words · W10N

Celeron J3455 Mini PC: 备用软路由

用途 Homelab 备用软路由小主机。2026-07-23 用 Arch Linux 安装 ISO(live)从 U 盘引导后盘点硬件。 规格摘要 项目 详情 CPU Intel Celeron J3455 @ 1.50GHz(Apollo Lake,4 核 / 无超线程,睿频最高 2.3GHz) 虚拟化 VT-x(vmx) AES-NI 有 内存 4 GB DDR3-1600(系统可见约 3.7 GiB) 存储 BIWIN mSATA SSD 32 GB(SATA 3.2,序列号 2111025802427) 网卡 双口 Intel I226-IT 2.5G(驱动 igc) 显卡 Intel HD Graphics 500 BIOS AMI Aptio CRB 5.12(2023-07-12) DMI OEM 默认字符串(Default string / board Aptio CRB) 网卡 接口 PCI MAC 备注 enp1s0 01:00.0 I226-IT 00:60:e0:9b:bc:e5 探测时已连接,协商 2500Mb/s Full enp2s0 02:00.0 I226-IT 00:60:e0:9b:bc:e6 探测时无链路 存储现状(装系统前) 内置 /dev/sda 非空盘,已有分区: ...

Created 23236-07-23 · Updated 23236-07-23 · 2 min · 229 words · -

SIMD 指令与缓存局部性

SIMD:一条指令同时处理多个数据 SIMD 全称 Single Instruction Multiple Data(单指令多数据),是 Flynn 分类法里的一种:一条指令同时对一组数据执行相同的操作,属于数据并行。与之相对的是普通的标量指令(SISD,Single Instruction Single Data),一条指令只处理一个数据。 CPU 指令集里的指令并不是都能批量操作数据的:只有一部分特定操作(加减乘除、位运算如异或/与/或、比较、移位等)才提供了"批量版本",这部分指令就叫 SIMD 指令;分支跳转这类指令就没有对应的 SIMD 形式。批量操作的前提是数据要打包进宽寄存器——比如一个 256 位的 YMM 寄存器可以看作 8 个 32 位整数拼在一起,一条 SIMD 指令对这个寄存器操作时,是把 8 个"数据槽"同时各自执行同一个操作(8 次加法或 8 次异或同时完成),而不是把整个 256 位当成一个数来算。这一整批 SIMD 指令加上背后的宽寄存器,合在一起就构成了一个 SIMD 指令集扩展。 现代 CPU 都提供了专门的向量寄存器和向量指令集来支持 SIMD: 架构 指令集 寄存器宽度 x86 SSE / SSE2 128 位 x86 AVX / AVX2 256 位 x86 AVX-512 512 位 ARM NEON 128 位 ARM SVE 可变长(128~2048 位) 举个例子,如果要对两个长度为 4 的 float 数组逐元素相加,用标量指令需要 4 次加法;如果用 128 位的 SSE 寄存器(正好能装下 4 个 32 位 float),一条向量加法指令就能同时算完这 4 组加法,吞吐量提升了 4 倍。 ...

Created 13136-07-13 · Updated 14146-07-14 · 2 min · 243 words · -