基于可编程网卡的高性能数据中心系统
摘要 | 第5-7页 |
ABSTRACT | 第7-8页 |
第1章 绪论 | 第13-22页 |
1.1 研究的背景和意义 | 第13-15页 |
1.2 国内外研究现状 | 第15-20页 |
1.2.1 优化软件 | 第15-16页 |
1.2.2 利用新型商用硬件 | 第16-18页 |
1.2.3 设计新硬件 | 第18-20页 |
1.3 本文的研究内容和贡献 | 第20-21页 |
1.4 论文结构安排 | 第21-22页 |
第2章 数据中心与可编程网卡概论 | 第22-58页 |
2.1 数据中心的发展趋势 | 第22-32页 |
2.1.1 资源虚拟化 | 第23-24页 |
2.1.2 分布式计算 | 第24-28页 |
2.1.3 定制化硬件 | 第28-31页 |
2.1.4 细粒度计算 | 第31-32页 |
2.2 “数据中心税” | 第32-37页 |
2.2.1 虚拟网络 | 第32-34页 |
2.2.2 网络功能 | 第34-36页 |
2.2.3 操作系统 | 第36-37页 |
2.2.4 数据结构处理 | 第37页 |
2.3 可编程网卡的架构 | 第37-50页 |
2.3.1 专用芯片(ASIC) | 第38-39页 |
2.3.2 网络处理器(NP) | 第39-42页 |
2.3.3 通用处理器(SoC) | 第42-44页 |
2.3.4 可重构硬件(FPGA) | 第44-50页 |
2.4 可编程网卡在数据中心的应用 | 第50-58页 |
2.4.1 微软Azure云 | 第50-53页 |
2.4.2 亚马逊AWS云 | 第53-56页 |
2.4.3 阿里云、腾讯云、华为云、百度 | 第56-58页 |
第3章 系统架构 | 第58-65页 |
3.1 网络加速 | 第59-61页 |
3.1.1 网络虚拟化加速 | 第59-60页 |
3.1.2 网络功能加速 | 第60-61页 |
3.2 存储加速 | 第61-62页 |
3.2.1 存储虚拟化加速 | 第61页 |
3.2.2 数据结构处理加速 | 第61-62页 |
3.3 操作系统加速 | 第62-63页 |
3.4 可编程网卡 | 第63-65页 |
第4章 ClickNP网络功能加速 | 第65-97页 |
4.1 引言 | 第65-67页 |
4.2 背景 | 第67-71页 |
4.2.1 软件虚拟网络与网络功能的性能挑战 | 第67-68页 |
4.2.2 基于FPGA的网络功能编程 | 第68-71页 |
4.3 系统架构 | 第71-75页 |
4.3.1 ClickNP开发工具链 | 第71页 |
4.3.2 ClickNP编程 | 第71-75页 |
4.4 FPGA内部并行化 | 第75-79页 |
4.4.1 元件间并行化 | 第75页 |
4.4.2 元件内并行 | 第75-79页 |
4.5 系统实现 | 第79-86页 |
4.5.1 ClickNP工具链和硬件实现 | 第79-81页 |
4.5.2 ClickNP元件库 | 第81-84页 |
4.5.3 PCIE I/O通道 | 第84-86页 |
4.5.4 Verilog元件 | 第86页 |
4.6 应用与性能评估 | 第86-95页 |
4.6.1 数据包生成器和抓包工具 | 第87页 |
4.6.2 OpenFlow防火墙 | 第87-89页 |
4.6.3 IPSec网关 | 第89-91页 |
4.6.4 L4负载平衡器 | 第91-93页 |
4.6.5 pFabric流调度器 | 第93-95页 |
4.7 讨论: 资源利用率 | 第95-96页 |
4.8 本章小结 | 第96-97页 |
第5章 KV-Direct数据结构加速 | 第97-132页 |
5.1 引言 | 第97-98页 |
5.2 背景 | 第98-104页 |
5.2.1 键值存储的概念 | 第98-99页 |
5.2.2 键值存储的工作负载变化 | 第99-100页 |
5.2.3 现有键值存储系统的性能瓶颈 | 第100-102页 |
5.2.4 远程直接键值访问面临的挑战 | 第102-104页 |
5.3 KV-Direct操作原语 | 第104-105页 |
5.4 键值处理器 | 第105-117页 |
5.4.1 哈希表 | 第106-110页 |
5.4.2 Slab内存分配器 | 第110-111页 |
5.4.3 乱序执行引擎 | 第111-114页 |
5.4.4 DRAM负载分配器 | 第114-115页 |
5.4.5 向量操作译码器 | 第115-117页 |
5.5 系统性能评估 | 第117-121页 |
5.5.1 系统实现 | 第117页 |
5.5.2 测试床与评估方法 | 第117页 |
5.5.3 吞吐量 | 第117-118页 |
5.5.4 能耗效率 | 第118-120页 |
5.5.5 延迟 | 第120页 |
5.5.6 对CPU性能的影响 | 第120-121页 |
5.6 扩展 | 第121-127页 |
5.6.1 基于CPU的分散.聚集DMA | 第121-122页 |
5.6.2 单机多网卡 | 第122-123页 |
5.6.3 基于SSD的持久化存储 | 第123-125页 |
5.6.4 分布式键值存储 | 第125-127页 |
5.7 讨论 | 第127-129页 |
5.7.1 不同容量的网卡硬件 | 第127-128页 |
5.7.2 对现实世界应用的影响 | 第128页 |
5.7.3 可编程网卡内的有状态处理 | 第128-129页 |
5.8 相关工作 | 第129-131页 |
5.9 本章小结 | 第131-132页 |
第6章 SocksDirect通信原语加速 | 第132-169页 |
6.1 引言 | 第132-134页 |
6.2 背景 | 第134-143页 |
6.2.1 Linux套接字简介 | 第134-135页 |
6.2.2 Linux套接字中的开销 | 第135-140页 |
6.2.3 高性能套接字系统 | 第140-143页 |
6.3 架构概览 | 第143-146页 |
6.4 系统设计 | 第146-157页 |
6.4.1 无锁套接字共享 | 第146-149页 |
6.4.2 基于RDMA和共享内存的环形缓冲区 | 第149-151页 |
6.4.3 零拷贝 | 第151-153页 |
6.4.4 事件通知 | 第153-154页 |
6.4.5 连接管理 | 第154-157页 |
6.5 系统性能评估 | 第157-161页 |
6.5.1 评估方法 | 第157-158页 |
6.5.2 性能微基准测试 | 第158-160页 |
6.5.3 实际应用性能 | 第160-161页 |
6.6 讨论: 连接数可扩放性 | 第161-168页 |
6.6.1 基于可编程网卡的传输层 | 第162-164页 |
6.6.2 基于CPU的传输层 | 第164-165页 |
6.6.3 多套接字共享队列 | 第165-167页 |
6.6.4 应用、协议栈与网卡间的接口抽象 | 第167-168页 |
6.7 本章小结 | 第168-169页 |
第7章 总结与展望 | 第169-184页 |
7.1 全文总结 | 第169-170页 |
7.2 未来工作展望 | 第170-184页 |
7.2.1 基于片上系统的可编程网卡 | 第170-171页 |
7.2.2 开发工具链 | 第171-175页 |
7.2.3 操作系统 | 第175-179页 |
7.2.4 系统创新 | 第179-184页 |
参考文献 | 第184-204页 |
致谢 | 第204-207页 |
在读期间发表的学术论文与取得的研究成果 | 第207-208页 |