HUAWEI CLOUD EULEROS-内核异常事件分析指南:RCU(Read-Copy Update) stall
RCU(Read-Copy Update) stall
RCU stall是一种rcu宽限期内rcu相关内核线程没有得到调度的异常。
- 原理
在RCU机制中,reader不用等待,可以任意读取数据,RCU记录reader的信息;writer更新数据时,先复制一份副本,在副本上完成修改,等待所有reader退出后,再一次性地替换旧数据。
writer需要等所有reader都停止引用“旧数据”才能替换旧数据。这相当于给了这些reader一个优雅退出的宽限期,这个等待的时间被称为grace-period,简称GP。
当reader长时间没有退出,writer等待的时间超过宽限期时,即上报RCU Stall。
- 触发方法
内核在Documentation/RCU/stallwarn.txt文档列出了可能触发RCU stall的场景:cpu在rcu reader临界区一直循环,cpu在关闭中断或关闭抢占场景中一直循环等。