【标题描述】瞬间百万级的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
【附件信息】无
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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论