消除Copy4 *在一个内存映射的体系结构中, *设备寄存器被映射到一块内存区域,CPU通过读写这块 内存区域与设备通信 *理论上,内存可以位于总线上的任何地方,包括在适 配器中 *解决方案: *利用网络适配器中已有的存储空间(P4,利用系统组 件),以及内核存储空间放置的自由度(P13,利用自 由度),将套接字缓冲区放在网络适配器中 *应用缓冲区的內容直接拷贝到网络适配器的内存中
消除 Copy 4 在一个内存映射的体系结构中, 设备寄存器被映射到一块内存区域,CPU通过读写这块 内存区域与设备通信 理论上,内存可以位于总线上的任何地方,包括在适 配器中 解决方案: 利用网络适配器中已有的存储空间(P4,利用系统组 件),以及内核存储空间放置的自由度(P13,利用自 由度),将套接字缓冲区放在网络适配器中 应用缓冲区的内容直接拷贝到网络适配器的内存中
CPU MEMORY Application *如何计算TCP Server buffer Writen 检查和? Kernel TCP/IP MEMORY BUS Single copy (piggyback checksum in software or use checksum hardware VO BUS Socket buffer NETWORK ADAPTOR Network FIGURE 5.3 The Witless(afterburner)approach eliminates the need for the kernel-to-adaptor copy by placing kernel buffers in the adaptor
如何计算TCP 检查和?
如何计算检查和? * Witless方法(P2c,共享开销): *CPU执行拷贝,当读入每个字时,捎带计算检查和 *致命的问题:接收的时候,当发现检查和出错时数据 包已被写入应用缓冲区,与TCP语义不符(所以该方法 从未被实施) * Afterburner适配器( TCP offloading engine): *数据传输由网卡通过DMA完成,检查和也由网卡计算 *TCP连接的管理(建立、关闭等)仍由主CPU完成,仅 将建立好的TCP连接移交给网络适配器 *问题:网络适配器需要很大的内存空间和较强的处理 器来支持大量的TCP连接,网卡成本可能较高
如何计算检查和? Witless方法(P2c,共享开销): CPU执行拷贝,当读入每个字时,捎带计算检查和 致命的问题:接收的时候,当发现检查和出错时数据 包已被写入应用缓冲区,与TCP语义不符(所以该方法 从未被实施) Afterburner适配器(TCP offloading engine): 数据传输由网卡通过DMA完成,检查和也由网卡计算 TCP连接的管理(建立、关闭等)仍由主CPU完成,仅 将建立好的TCP连接移交给网络适配器 问题:网络适配器需要很大的内存空间和较强的处理 器来支持大量的TCP连接,网卡成本可能较高
53消除copy3 CPU MEMORY 为什么需要copy3? Web server application copy 3 Server buffer K, *应用和内核使用不 Iwrite reado↓ 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.3 消除 Copy 3 为什么需要copy 3? 应用和内核使用不 同的虚拟地址空间 (不是必要的) 应用和内核之间需 要通过数据拷贝解 除耦合(必要的) 如果拷贝不能避免, 那么能够减小拷贝的 开销吗?
写时拷贝( copy-on- write CPU MEMORY *当应用程序对内核执 行一个写时拷贝时, Server plus socket buffer Writen os将内核缓冲区映射 Kernel TCP/IP 到应用缓冲区的物理 内存页上 MMBs*当应用程序试图修改 Single copy (piggyback checksum in software 其缓冲区时,内核进 or use checksum hardware)i 行真正的拷贝 VO BUS NETWORK ADAPTOR Network *有些操作系统提供写 FIGURE 5.4 Using copy-on-write 时拷贝,很多情况下 可以避免真正的拷贝
写时拷贝(copy-on-write) 当应用程序对内核执 行一个写时拷贝时, OS将内核缓冲区映射 到应用缓冲区的物理 内存页上 当应用程序试图修改 其缓冲区时,内核进 行真正的拷贝 有些操作系统提供写 时拷贝,很多情况下 可以避免真正的拷贝