398 Star 1.4K Fork 1.3K

GVPopenEuler / kernel

 / 详情

【RCU】修复rcu callback过多导致softlockup

已完成
缺陷 成员
创建于  
2022-08-04 15:23

【标题描述】瞬间百万级的call_rcu(),导致在软中断中执行的rcu_do_batch()长时间不能结束,该核的进程无法被调度执行,无法经历qs,进而引发softlockup或rcu stall等问题。
【环境信息】
硬件信息:硬件无关
软件信息:openEuler-1.0-LTS 4.19 rcu模块
【问题复现步骤】
在压力场景下快速产生足够多的call_rcu调用(百万级),且call_rcu回调钩子的处理耗时较长。正常情况下极难复现。可打开kasan等维测有意放大cbs的处理时长,或直接在关软中断的情况下,一次性连续call_rcu挂入百万级的cbs。
出现概率(是否必现,概率性错误):极低,几乎不可能
【预期结果】
修改后:
[ 109.934454] Total 5242880 nodes allocated
[ 112.127755] nr_slabs=5242880, bl=40960, nr_do_batch=503, max_nr_one_batch=224157

在当前CPU非idle进程的情况下,最多执行10000个cbs即退出软中断;在idle进程的情况下,则直到所有cbs处理完才退出软中断。

【实际结果】
修改前:
[ 547.679938] Total 5242880 nodes allocated
[ 549.815203] nr_slabs=5242880, bl=40960, nr_do_batch=2, max_nr_one_batch=5232708

【附件信息】无

评论 (1)

ThunderTown 创建了缺陷

Hi thundertown, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here.
If you have any questions, please contact the SIG: Kernel, and any of the maintainers: @YangYingliang , @成坚 (CHENG Jian) , @jiaoff , @zhengzengkai , @刘勇强 , @wangxiongfeng , @朱科潜 , @WangShaoBo , @lujialin , @wuxu_buque , @Xu Kuohai , @冷嘲啊 , @Lingmingqiang , @yuzenghui , @岳海兵 , @juntian , @OSSIM , @陈结松 , @whoisxxx , @koulihong , @刘恺 , @hanjun-guo , @woqidaideshi , @Chiqijun , @Kefeng , @ThunderTown , @AlexGuo , @kylin-mayukun , @Zheng Zucheng , @柳歆 , @Jackie Liu , @zhujianwei001 , @郑振鹏 , @SuperSix173 , @colyli , @Zhang Yi , @htforge , @Xie XiuQi

openeuler-ci-bot 添加了
 
sig/Kernel
标签
ThunderTown 修改了描述
ThunderTown 修改了标题
Qiuuuuu 通过src-openeuler/kernel Pull Request !700任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(2)
5329419 openeuler ci bot 1632792936
C
1
https://gitee.com/openeuler/kernel.git
git@gitee.com:openeuler/kernel.git
openeuler
kernel
kernel

搜索帮助