摘要 | 第5-6页 |
Abstract | 第6-7页 |
第一章 引言 | 第11-17页 |
1.1 研究背景和研究现状 | 第11-14页 |
1.2 拟解决的问题 | 第14-15页 |
1.3 论文组织和安排 | 第15-17页 |
第二章 Linux内核网络协议栈架构 | 第17-25页 |
2.1 Linux网络协议栈架构 | 第17-19页 |
2.1.1 系统组成 | 第17-18页 |
2.1.2 Linux协议栈数据包处理流程 | 第18-19页 |
2.2 影响数据包接收性能的因素 | 第19-21页 |
2.2.1 中断处理 | 第19-20页 |
2.2.2 数据包拷贝 | 第20-21页 |
2.2.3 上下文切换和数据校验 | 第21页 |
2.3 改进思路 | 第21-25页 |
2.3.1 轮询代替中断 | 第21-23页 |
2.3.2 NUMA架构的使用 | 第23-24页 |
2.3.3 设置CPU亲和 | 第24-25页 |
第三章 现有解决方案及分析 | 第25-33页 |
3.1 基于用户态的零拷贝技术 | 第25-26页 |
3.1.1 为什么需要零拷贝技术 | 第25页 |
3.1.2 零拷贝技术原理 | 第25-26页 |
3.2 主流零拷贝数据接收方案 | 第26-30页 |
3.2.1 netmap | 第26-28页 |
3.2.2 PF_RINGZC | 第28页 |
3.2.3 DPDK | 第28-30页 |
3.3 前期选型测试 | 第30-33页 |
第四章 高IO下天文数据采集框架 | 第33-59页 |
4.1 Linux内核协议栈的调优尝试 | 第33-36页 |
4.1.1 内核网络相关参数调优 | 第33-34页 |
4.1.2 优化结果测试 | 第34-36页 |
4.2 设计目标 | 第36-37页 |
4.3 数据采集系统架构 | 第37-39页 |
4.4 用户态协议栈无关层的实现 | 第39-46页 |
4.4.1 系统初始化 | 第39-40页 |
4.4.2 端口及报文收发控制 | 第40-41页 |
4.4.3 Buffer管理 | 第41-42页 |
4.4.4 无锁环形缓冲管理 | 第42-46页 |
4.5 用户态协议栈的协议实现 | 第46-59页 |
4.5.1 以太网帧解析 | 第47-49页 |
4.5.2 ARP协议报文的解析及处理 | 第49-52页 |
4.5.3 IP报文的解析 | 第52-55页 |
4.5.4 ICMP报文的处理 | 第55-56页 |
4.5.5 UDP报文的解析及处理 | 第56-59页 |
第五章 GPU-CPU天文数据并行异构处理框架 | 第59-71页 |
5.1 基于GPU的CUDA编程 | 第59-60页 |
5.2 CPU-GPU调度 | 第60-63页 |
5.2.1 锁页内存和零拷贝内存 | 第61-62页 |
5.2.2 使用零拷贝方式建立内存地址映射 | 第62-63页 |
5.2.3 效果测试 | 第63页 |
5.3 DPDK+CUDA异构并行处理的实现 | 第63-68页 |
5.3.1 DPDK+CUDA混合编译 | 第63-65页 |
5.3.2 DPDK+CUDA实现单生产者多消费者处理数据 | 第65-68页 |
5.4 GPU对数据的处理 | 第68-71页 |
5.4.1 ROACH2数据格式 | 第68-69页 |
5.4.2 CUDA并行解码的实现 | 第69-71页 |
第六章 系统测试与分析 | 第71-81页 |
6.1 测试系统配置 | 第71-72页 |
6.2 测试前准备 | 第72-75页 |
6.2.1 操作系统配置 | 第72-73页 |
6.2.2 DPDK环境部署 | 第73-74页 |
6.2.3 NUMA绑定 | 第74-75页 |
6.3 测试结果 | 第75-78页 |
6.3.1 数据接收能力测试 | 第75-77页 |
6.3.2 数据实时处理能力测试 | 第77-78页 |
6.4 运行效果展示 | 第78-81页 |
第七章 总结与下一步工作展望 | 第81-83页 |
致谢 | 第83-85页 |
参考文献 | 第85-89页 |
附录A:攻读学位期间取得成果 | 第89-91页 |
附录B:攻读学位期间参与的研究工作 | 第91页 |