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语义会带来的问题,列举应对经验&技巧