记一次国产ARM架构长城服务器宕机排查

环境:

  • 型号: GreatWall DF723
  • CPU: Phytium FT-2000+/64 CORE Little Endian
  • 架构: aarch64
  • 内存容量: 128G
  • 系统: 麒麟V10 Kylin Linux Advanced Server V10 (Tercel)
  • 内核版本: 4.19.90-17.5.ky10.aarch64

症状

服务器1-2天内必宕机,并且部分进程CPU均为100%,且调度大量进程状态为R(Running),无法及时让出CPU给其他进程
且有大量watchdog: BUG: soft lockup - CPU#0 stuck for 67s! [migration/0:13] soft lockup 消息

初步排查

查看dmesg消息,发现大量rcu: INFO: rcu_sched detected stalls on CPUs/tasks: 报告CPU处于stalls状态
起初以为是内核某个线程死循环,无法让出CPU导致的内核BUG,使用yum install kernel升级内核后,症状依旧

锁定症状

dmesg里存在大量

1
2
3
4
5
6
rcu:    10-...0: (8 GPs behind) idle=7de/1/0x4000000000000000 softirq=392353/392353 fqs=2586
rcu: (detected by 7, t=6002 jiffies, g=18508537, q=6922)
rcu: 10-...0: (8 GPs behind) idle=7de/1/0x4000000000000000 softirq=392353/392353 fqs=9430
rcu: (detected by 5, t=24007 jiffies, g=18508537, q=28198)
10代表CPU10 进入了 stalls 状态
detected by 7,5 表示被CPU7,CPU5检测到

消息,证明CPU10出问题了
使用 echo 0 >/sys/bus/cpu/devices/cpu10/online 下线CPU10
后续再未出现该症状,国产的CPU可能还是有兼容性问题