摘要 | 第7-9页 |
Abstract | 第9-10页 |
第一章 引言 | 第11-15页 |
1.1 研究背景 | 第11-12页 |
1.2 本文工作 | 第12-13页 |
1.3 全文结构 | 第13-15页 |
第二章 多核同步机制概述 | 第15-34页 |
2.1 影响多核同步性能的硬件特性 | 第16-20页 |
2.1.1 高速缓存一致性 | 第17-18页 |
2.1.2 内存一致性模型 | 第18-19页 |
2.1.3 原子指令 | 第19-20页 |
2.2 可伸缩性问题的模型 | 第20-24页 |
2.2.1 基于线程间交互的可伸缩性模型 | 第20-22页 |
2.2.2 第一类可伸缩性问题 | 第22-23页 |
2.2.3 第二类可伸缩性问题 | 第23页 |
2.2.4 可伸缩性指标 | 第23-24页 |
2.3 基于改进实现的优化 | 第24-28页 |
2.3.1 MCS锁 | 第25-26页 |
2.3.2 大读者锁 | 第26-27页 |
2.3.3 基于SNZI的读写锁 | 第27-28页 |
2.3.4 其他工作 | 第28页 |
2.4 基于弱化语义的优化 | 第28-31页 |
2.4.1 RCU | 第28-30页 |
2.4.2 序列锁 | 第30页 |
2.4.3 Radix区间锁 | 第30-31页 |
2.5 性能和语义约束的权衡取舍 | 第31-34页 |
2.5.1 同步原语性能和语义上的发展小结 | 第31-32页 |
2.5.2 本文的主要探究方向 | 第32-34页 |
第三章 PRWLock:无内存屏障的高可伸缩读写锁 | 第34-56页 |
3.1 现存读写锁的性能问题 | 第34-35页 |
3.1.1 共享状态 | 第34-35页 |
3.1.2 内存屏障 | 第35页 |
3.2 PRWLock的硬件特性依赖 | 第35-39页 |
3.2.1 核间消息传递 | 第35-36页 |
3.2.2 内存屏障与共享内存陈旧化 | 第36-37页 |
3.2.3 内存一致性 | 第37-39页 |
3.3 PRWLock基本设计 | 第39-41页 |
3.3.1 读写者一致的达成 | 第39-40页 |
3.3.2 拖延写者的读者处理 | 第40-41页 |
3.3.3 支持睡眠读者 | 第41页 |
3.4 PRWLock具体算法 | 第41-46页 |
3.4.1 读锁获取 | 第41-43页 |
3.4.2 读锁释放 | 第43页 |
3.4.3 读锁被动主动转换 | 第43页 |
3.4.4 写锁获取 | 第43-45页 |
3.4.5 汇报状态核间中断的响应 | 第45页 |
3.4.6 写锁释放 | 第45页 |
3.4.7 读写同步举例 | 第45-46页 |
3.5 操作系统内核实现 | 第46-48页 |
3.5.1 锁域上线及下线 | 第47-48页 |
3.5.2 任务上线及下线 | 第48页 |
3.5.3 读写锁升级和降级 | 第48页 |
3.6 用户态实现 | 第48-50页 |
3.7 性能和适用性分析 | 第50-52页 |
3.7.1 内存屏障 | 第50页 |
3.7.2 写者开销 | 第50-51页 |
3.7.3 适用场景及硬件要求 | 第51-52页 |
3.8 PRWLock的实现与应用 | 第52-53页 |
3.8.1 Linux内核可伸缩性优化 | 第52-53页 |
3.8.2 用户态程序的可伸缩性优化 | 第53页 |
3.9 基于PRWLock思想的其他同步原语优化 | 第53-56页 |
3.9.1 完全被动的读写锁PRWLock-Pure | 第53-55页 |
3.9.2 低写延迟的PRWRCU | 第55-56页 |
第四章 PWake:分布式并行唤醒机制 | 第56-61页 |
4.1 传统集中式等待机制性能问题 | 第56-57页 |
4.1.1 等待队列竞争 | 第56-57页 |
4.1.2 集中唤醒 | 第57页 |
4.2 PWake的硬件特性依赖 | 第57-58页 |
4.3 PWake的基本设计 | 第58-59页 |
4.4 PWake的应用 | 第59-61页 |
4.4.1 与PRWLock的组合 | 第59-60页 |
4.4.2 其他应用 | 第60-61页 |
第五章 实验与分析 | 第61-70页 |
5.1 实验环境设置 | 第61页 |
5.2 内核PRWLock性能 | 第61-65页 |
5.2.1 基准程序 | 第62页 |
5.2.2 Histogram性能 | 第62-63页 |
5.2.3 Metis性能 | 第63-64页 |
5.2.4 Psearchy性能 | 第64-65页 |
5.3 PWake的性能提升 | 第65-66页 |
5.4 用户态PRWLock性能 | 第66-70页 |
5.4.1 极限压力测试 | 第66-67页 |
5.4.2 PRWRCU的写者性能测试 | 第67-68页 |
5.4.3 用户态程序的性能优化 | 第68-70页 |
第六章 总结 | 第70-72页 |
6.1 创新与贡献 | 第70-71页 |
6.2 进一步的研究设想 | 第71-72页 |
6.2.1 性能权衡取舍的考虑 | 第71页 |
6.2.2 本文提出方法的推广 | 第71-72页 |
参考文献 | 第72-76页 |
致谢 | 第76-77页 |