愚蠢的 RCU 技巧:内核使用 RCU 的读密集程度如何?

主要观点:RCU 是一种专门的同步机制,常用于读操作远多于写操作的情况。通过不同的方法如 ftrace、修改内核代码或使用 bpf 工具 bpftrace 可研究 Linux 内核中 RCU 的使用情况。
关键信息

  • 给出多种 bpftrace 脚本用于测量 RCU 的相关数据,如读取侧关键段数量、 grace-period 延迟、synchronize_rcu()延迟等。
  • 不同系统状态(空闲、忙碌)下 RCU 的相关数据差异明显,忙碌系统读操作更密集。
  • 可通过 call_rcu()调用次数粗略估计更新次数。
    重要细节
  • bpftrace 可通过 -e 参数和一系列 tracepoint/program 对来编译并加载内核模块进行测量。
  • grace-period 延迟多数在 4 - 8 毫秒内完成,synchronize_rcu()延迟倾向于较长但无明显拖尾。
  • synchronize_rcu_expedited()多数在几百微秒内完成,有少数拖尾到十毫秒左右。线性直方图可更详细展示不同延迟范围的分布情况。
阅读 19
0 条评论