摘要 | 第5-7页 |
ABSTRACT | 第7-9页 |
第1章 绪论 | 第17-29页 |
1.1 研究背景 | 第17-18页 |
1.1.1 多核处理器 | 第17-18页 |
1.1.2 多队列网卡 | 第18页 |
1.2 国内外研究现状 | 第18-23页 |
1.3 本文的研究内容及意义 | 第23-25页 |
1.4 术语 | 第25-26页 |
1.5 本文的组织结构 | 第26-29页 |
第2章 非阻塞算法背景 | 第29-39页 |
2.1 非阻塞算法分类 | 第29-30页 |
2.1.1 无等待算法 | 第29页 |
2.1.2 无锁算法 | 第29-30页 |
2.1.3 无障碍算法 | 第30页 |
2.2 基本概念 | 第30-34页 |
2.2.1 原语 | 第30-32页 |
2.2.2 STM | 第32页 |
2.2.3 RCU | 第32-33页 |
2.2.4 ABA | 第33页 |
2.2.5 内存屏障和优化屏障 | 第33-34页 |
2.3 垃圾回收算法 | 第34-37页 |
2.3.1 指针引用计数算法 | 第34页 |
2.3.2 冒险指针算法 | 第34-35页 |
2.3.3 时代回收算法 | 第35-37页 |
2.4 本章小结 | 第37-39页 |
第3章 非阻塞数据结构设计与实现 | 第39-69页 |
3.1 MWRITE设计与实现 | 第39-43页 |
3.1.1 MWrite的设计 | 第39-40页 |
3.1.2 MWrite的实现 | 第40-43页 |
3.1.3 注意事项 | 第43页 |
3.2 非阻塞双链表 | 第43-46页 |
3.2.1 查找 | 第43页 |
3.2.2 插入 | 第43-44页 |
3.2.3 删除 | 第44页 |
3.2.4 实验 | 第44-46页 |
3.3 非阻塞跳表 | 第46-52页 |
3.3.1 跳表简介 | 第46-47页 |
3.3.2 指针标记 | 第47页 |
3.3.3 非阻塞跳表实现 | 第47-50页 |
3.3.4 正确性证明和验证 | 第50-52页 |
3.3.5 实验 | 第52页 |
3.4 无锁数组 | 第52-56页 |
3.4.1 设计与实现 | 第52-53页 |
3.4.2 实验 | 第53-56页 |
3.5 无锁数组哈希表 | 第56-64页 |
3.5.1 数组哈希表 | 第56-59页 |
3.5.2 无锁数组哈希表 | 第59-64页 |
3.6 快速时代垃圾回收算法 | 第64-68页 |
3.6.1 设计与实现 | 第64-66页 |
3.6.2 实验 | 第66-68页 |
3.7 本章小结 | 第68-69页 |
第4章 OS负载均衡优化 | 第69-77页 |
4.1 LINUX负载均衡背景 | 第69-73页 |
4.1.1 Linux进程负载均衡 | 第69-70页 |
4.1.2 调度域负载均衡算法 | 第70-73页 |
4.2 LINUX负载均衡优化方法 | 第73-74页 |
4.2.1 负载均衡算法优化:新任务 | 第73-74页 |
4.2.2 负载均衡算法优化:周期性调度 | 第74页 |
4.3 实验 | 第74-76页 |
4.4 本章小结 | 第76-77页 |
第5章 多进程网络服务器程序优化 | 第77-91页 |
5.1 LINUX网络协议栈的扩展技术 | 第77-82页 |
5.1.1 RSS哈希算法 | 第77-79页 |
5.1.2 RPS与RFS | 第79页 |
5.1.3 XPS | 第79-80页 |
5.1.4 多进程服务器模型 | 第80-82页 |
5.2 多进程服务器模型优化 | 第82-85页 |
5.2.1 设计 | 第82-83页 |
5.2.2 修改网卡驱动 | 第83-84页 |
5.2.3 新REUSEPORT哈希算法 | 第84-85页 |
5.2.4 进程绑定CPU与网卡中断亲和力 | 第85页 |
5.3 基于SOCKET的TCP代理服务器模型优化 | 第85-88页 |
5.3.1 当前代理服务器存在的问题 | 第86-87页 |
5.3.2 优化方案一 | 第87页 |
5.3.3 优化方案二 | 第87-88页 |
5.4 实验 | 第88-89页 |
5.5 本章小结 | 第89-91页 |
第6章 用户态包处理的网络负载均衡框架UVS的设计与实现 | 第91-107页 |
6.1 背景 | 第91-96页 |
6.1.1 网络负载均衡背景 | 第91-93页 |
6.1.2 常见网络负载均衡软件 | 第93-95页 |
6.1.3 网卡工作原理 | 第95-96页 |
6.2 UVS的设计与实现 | 第96-104页 |
6.2.1 框架设计 | 第96-99页 |
6.2.2 零拷贝设计 | 第99-101页 |
6.2.3 多核多进程支持 | 第101-102页 |
6.2.4 基于数组的无锁队列 | 第102-103页 |
6.2.5 IP/TCP/UDP数据包处理 | 第103-104页 |
6.2.6 ARP与路由 | 第104页 |
6.3 实验 | 第104-105页 |
6.4 本章小结 | 第105-107页 |
第7章 总结 | 第107-109页 |
7.1 本文的主要工作和贡献 | 第107-108页 |
7.2 未来的研究工作 | 第108-109页 |
参考文献 | 第109-117页 |
致谢 | 第117-119页 |
在读期间发表的学术论文与取得的研究成果 | 第119页 |