2021.11.08

RCU目标

  • useful forward progress for concurrent readers, even during updates
  • low computation and storage overhead
  • deterministic completion time
2021.11.09

优势

  • 不占空间(1个整形都不要)
  • 不需要高开销的原子指令和内存barrier
  • 大多RCU读和单线程读机器指令几乎一致

RCU Design

主要组成:

  • RCU (read-side) critical sections
  • RCU sync

进入critical sections,禁切换进程

通过所有cpu是否切换进程判断是否退出crictical sections

=》同步各个cpu的是否切换进程的数据会造成cache miss

=》减少切换次数,每schedule lock时统计,batch执行

对内存序的正规要求见引文1

Q1:我最想知道的内存序的问题,它没有谈。

Q2:我最想知道RCU_sync后如何保证没有新的读者?

Using RCU

Wait for Completion

A2:和它用法相关,先删指针,然后RCU_sync,然后删指针指的内容

Reference Counting

Rather than explicitly counting references to a particular data item, the data item’s users execute in RCU critical sections.

我:critical section里也可以执行长时间的工作?

Figure 6的说明:接着有说critical section要相对短时间。RCU不能睡眠。若要睡眠配合传统refcount变量

Figure 7,8:RCU配合传统refcount变量

Type Safe Memory

...

Algorithmic

更改(升级)RCU语义会带来的问题,列举应对经验&技巧