debug占用很高system的进程

在排查线上系统负载过高时( top 显示load ),发现CPU实际上还有空闲(idle约40%),然而Load极高,并且CPU使用率中 use 仅占 40% ,剩下的CPU资源约有20%被 system 吃掉了:

../../_images/top_high_load.png

按一下 1 可以看到每个CPU核心都有极高(20%)的sys消耗:

../../_images/top_high_load_sys.png
  • 使用 sar 命令可以概括上述统计信息:

    sar -u 5
    

显示:

Linux 4.19.91-007.ali4000.alios7.x86_64 (haiguangxdn011070025023.stl)   08/10/2021      _x86_64_        (128 CPU)

04:54:06 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
04:54:11 PM     all     43.73      0.01     18.10      0.00      0.00     38.16
04:54:16 PM     all     40.95      0.00     16.54      0.00      0.00     42.50
04:54:21 PM     all     41.53      0.01     15.76      0.00      0.00     42.70
04:54:26 PM     all     45.41      0.00     18.05      0.00      0.00     36.53
04:54:31 PM     all     37.84      0.00     15.65      0.00      0.00     46.51
04:54:36 PM     all     37.46      0.24     16.84      0.00      0.00     45.46
04:54:41 PM     all     39.63      0.59     19.08      0.00      0.00     40.70
04:54:46 PM     all     41.19      0.13     17.72      0.00      0.00     40.96
04:54:51 PM     all     39.89      0.13     16.74      0.00      0.00     43.24
04:54:56 PM     all     41.42      0.01     16.46      0.00      0.00     42.10
^C

04:55:10 PM     all     42.26      0.01     18.18      0.00      0.00     39.54
Average:        all     41.30      0.09     17.40      0.01      0.00     41.20

这种CPU us 极低,但是 sys 极高情况,通常意味着系统出现了死锁(锁等待),可以通过 Linux “魔力” 系统请求组合键 SysRq 的组合键 t 将当前进程的任务信息dump到控制台检查:

echo t > /proc/sysrq-trigger

在这个案例中,出现 “Bad RIP value”含义

参考