| 摘要 | 第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页 |