端节点算法学 *端节点算法学 *网络算法学在端节点(尤其是服务器)上的运用,是 建立高速服务器的一组系统性技术 *随着网络功能虚拟化的提出,将来数据中心中绝大部 分的网络设备都会在通用服务器上实现 *端节点算法学研究如何减少以下开销: *数据拷贝( chapter5) *控制转移( chapter6) *定时器( chapter7) *解复用( chapter8) *其它一般性协议处理任务( chapter9)
端节点算法学 端节点算法学: 网络算法学在端节点(尤其是服务器)上的运用,是 建立高速服务器的一组系统性技术 随着网络功能虚拟化的提出,将来数据中心中绝大部 分的网络设备都会在通用服务器上实现 端节点算法学研究如何减少以下开销: 数据拷贝(chapter 5) 控制转移(chapter 6) 定时器(chapter 7) 解复用(chapter 8) 其它一般性协议处理任务 (chapter 9)
第五章拷贝数据
第五章 拷贝数据
消除不必要的拷贝(P1) *网络报文在收发和处理的过程中,通常会被拷贝 多次 *计算机中的数据拷贝消耗两个宝贵的资源: *内存带宽:如果处理一个报文涉及k次拷贝,系统吞吐 量可能降至1/k *内存:如果一个报文在内存中被保存k份,有效内存容 量降至1/k *本章关注如何消除不必要的拷贝: *一个拷贝如果不是由硬件要求的,该拷贝是不必要的 *本章还将讨论其它需要对数据包载荷进行的操作
消除不必要的拷贝(P1) 网络报文在收发和处理的过程中,通常会被拷贝 多次 计算机中的数据拷贝消耗两个宝贵的资源: 内存带宽:如果处理一个报文涉及k次拷贝,系统吞吐 量可能降至1/k 内存:如果一个报文在内存中被保存k份,有效内存容 量降至1/k 本章关注如何消除不必要的拷贝: 一个拷贝如果不是由硬件要求的,该拷贝是不必要的 本章还将讨论其它需要对数据包载荷进行的操作
51为什么要拷贝数据 CPU MEMORY 应用场景 Web server application Copy 3 Server buffer *用户向Web服务 write ready 器请求一个静 TCP/IP File system Socket buffer Copy 2 态文件 File cache buffer *服务器从磁盘 读出文件,发 MEMORY BUS 送到网络上 DISK 两个内核子系统: /O BUS NETWORK ADAPTOR *文件子系统 Network 网络子系统 FIGURE 5.2 Redundant copies involved in handling a get request at a server
5.1 为什么要拷贝数据 应用场景: 用户向web服务 器请求一个静 态文件 服务器从磁盘 读出文件,发 送到网络上 两个内核子系统: 文件子系统 网络子系统
个简单的故事 *直观上,这是一个简单的故事: *web应用程序通过一个系统调用(读文件 将文件从磁盘读入到它的缓冲区中 *构造一个HTTP响应头,通过一个系统调用(写 套接字),将响应头和缓冲区内容交给网络子 系统 *网络子系统将数据划分成适当大小的块,加上 各层协议头,交给网络驱动程序
一个简单的故事 直观上,这是一个简单的故事: web应用程序通过一个系统调用(读文件), 将文件从磁盘读入到它的缓冲区中 构造一个HTTP响应头,通过一个系统调用(写 套接字),将响应头和缓冲区内容交给网络子 系统 网络子系统将数据划分成适当大小的块,加上 各层协议头,交给网络驱动程序
真实的故事 CPU MEMORY Copy 1: Web server application Server buffer 硬盘→文件缓冲区 Writen (内核空间) Kernel TCP/IP File system Socket buffe Copy 2 Copy 2 File cache buffer *文件缓冲区→应用缓 冲区(用户空间) MEMORY BUS Copy 3: Copy 4 s*应用缓冲区>套接字 缓冲区(内核空间) I/O BUS NETWORK ADAPTOR 幸Copy4: Network *套接字缓冲区→网卡 FIGURE 5.2 Redundant copies involved in handling a GET request at a server. TCP程序还需要扫描一遍 数据,计算TCP检查和
一个真实的故事 Copy 1: 硬盘→文件缓冲区 (内核空间) Copy 2: 文件缓冲区→应用缓 冲区 (用户空间) Copy 3: 应用缓冲区→套接字 缓冲区(内核空间) Copy 4: 套接字缓冲区→网卡 TCP程序还需要扫描一遍 数据,计算TCP检查和
资源消耗情况 拷贝和TCP检查和计算:每个字需要穿过内存总 线7~9次! 不同内存区域之间的拷贝(copy2,copy3): *每个字都要通过内存总线读一次和写 *计算TCP检查和:每个字都要通过内存总线读一次 *涉及外设的拷贝(copy1,copy4): *如果由CPU做拷贝(PIO):每个字都要通过内存总线 读一次和写一次 *如果由设备做拷贝(DMA):每个字只需通过内存总 线读一次或写一次 *涉及外设的拷贝都需要消耗IO总线带宽
资源消耗情况 拷贝和TCP检查和计算:每个字需要穿过内存总 线7~9次! 不同内存区域之间的拷贝(copy 2,copy 3): 每个字都要通过内存总线读一次和写一次 计算TCP检查和:每个字都要通过内存总线读一次 涉及外设的拷贝(copy 1,copy 4): 如果由CPU做拷贝(PIO):每个字都要通过内存总线 读一次和写一次 如果由设备做拷贝(DMA):每个字只需通过内存总 线读一次或写一次 涉及外设的拷贝都需要消耗I/O总线带宽
对服务器吞吐量的影响 *在上面的例子中: *Web服务器吞吐量不超过T/7,T为内存速度和内存总线 速度中的较小值 *有效的文件缓冲区大小仅为总容量的1/3 多余的拷贝在两个方面损害了服务器的性能: *由于使用了过多的总线和内存带宽,服务器的运行速 度远远低于总线速度 *由于使用了过多的内存,服务器不得不大量地从磁盘 而不是主存读文件 *如果请求动态内容,还要增加一次拷贝(CG|程序 →>Web服务器)
对服务器吞吐量的影响 在上面的例子中: Web服务器吞吐量不超过T/7,T为内存速度和内存总线 速度中的较小值 有效的文件缓冲区大小仅为总容量的1/3 多余的拷贝在两个方面损害了服务器的性能: 由于使用了过多的总线和内存带宽,服务器的运行速 度远远低于总线速度 由于使用了过多的内存,服务器不得不大量地从磁盘 而不是主存读文件 如果请求动态内容,还要增加一次拷贝(CGI程序 →web服务器)
请求动态内容 1. User fills in forr Data 2. Form sent back CGI ase 3. Handed to CGI Browser Server script on disk User 4. CGI queries DB 5. Record found 2 4 6. CGI builds page 5 7. Page returned 8. Page displayed Step6:CG|程序将构造好的网页文件,通过进程间通信 机制传给Web服务器程序,涉及一次拷贝
请求动态内容 Step 6:CGI 程序将构造好的网页文件,通过进程间通信 机制传给web服务器程序,涉及一次拷贝
52消除copy4 CPU MEMORY Web server application copy 3 Server buffer K, *为什么需要 Iwrite reado↓ copy 4? Kernel TCP/IP File system Socket buffer opy 2 File cache buffer ks 简单的解释: *适配器内存和 MEMORY BUS Copy 1 内核存储空间 DISK 不在同一个硬 1/O BUS 件上 NETWORK ADAPTOR Network 但是,这个理 FIGURE 5.2 Redundant copies involved in handling a GET request at a server 由不充分!
5.2 消除copy 4 为什么需要 copy 4? 简单的解释: 适配器内存和 内核存储空间 不在同一个硬 件上 但是,这个理 由不充分!