linux死机
请教,我用的MT7621双核CPU,经常出现stall on CPU的情况,
<3>INFO: rcu_sched_state detected stall on CPU 0 (t=2500 jiffies)
<3>INFO: rcu_bh_state detected stalls on CPUs/tasks: { 0} (detected by 2, t=2503 jiffies)
...
整个系统都hang住了,无法工作,也不重启。
cpu执行的指令和数据是从L1高速缓存的指令缓存和数据缓存中获取,一旦cpu要执行的指令或数据无法从高速缓存中获取,就会产生cpu stall。你这种情况是程序要求的cpu性能要高于你现在使用的cpu。
再补充一点,当cpu无法从高速缓存中获取指令或数据,那么只有从内存中获取,而这种会浪费很长时间的,所以你的程序会hang住,考虑玩个小程序吧,或者非要玩这个大程序,换个牛逼手机吧。
某个核调度出了问题,跟softlockup有点像。可能是spinlock关抢占。或者fifo死循环。
如果是前者,得查死锁回溯;
我们的业务模型会在某几个cpu上fifo死循环,没办法,目前的临时解决方法是配置了CONFIG_NO_HZ_FULL 。
CONFIG_NO_HZ_FULL的好处是,如果运行的进程只有一个,RCU也会认为该cpu经过了一个grace period,不会出死锁。
————————————————
版权声明:本文为CSDN博主「mozun1」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mozun1/article/details/56290043
<3>INFO: rcu_sched_state detected stall on CPU 0 (t=2500 jiffies)
<3>INFO: rcu_bh_state detected stalls on CPUs/tasks: { 0} (detected by 2, t=2503 jiffies)
...
整个系统都hang住了,无法工作,也不重启。
cpu执行的指令和数据是从L1高速缓存的指令缓存和数据缓存中获取,一旦cpu要执行的指令或数据无法从高速缓存中获取,就会产生cpu stall。你这种情况是程序要求的cpu性能要高于你现在使用的cpu。
再补充一点,当cpu无法从高速缓存中获取指令或数据,那么只有从内存中获取,而这种会浪费很长时间的,所以你的程序会hang住,考虑玩个小程序吧,或者非要玩这个大程序,换个牛逼手机吧。
某个核调度出了问题,跟softlockup有点像。可能是spinlock关抢占。或者fifo死循环。
如果是前者,得查死锁回溯;
我们的业务模型会在某几个cpu上fifo死循环,没办法,目前的临时解决方法是配置了CONFIG_NO_HZ_FULL 。
CONFIG_NO_HZ_FULL的好处是,如果运行的进程只有一个,RCU也会认为该cpu经过了一个grace period,不会出死锁。
————————————————
版权声明:本文为CSDN博主「mozun1」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mozun1/article/details/56290043
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2019-11-28 linux 计算机加法
2019-11-28 subprocess
2019-11-28 纯虚函数==0
2019-11-28 关键字
2017-11-28 MODBUS协议
2017-11-28 .net反编译工具