第六章传输控制
6.1为什么有控制开销? 举例:Web服务器响应一个GET请求的过程: 客户向服务器发送了一个GET请求( GET File1) 。包到达服务器适配器,适配器将包拷贝到内存(DMA),然 后通过中断通知CPU CPU响应中断,进行协议处理,通过 unblock之前的一个系 统调用来通知Web服务器 服务器进程解析GET请求,得到文件名 服务器查找一个目录结构,确定文件在磁盘上的位置 服务器进程启动对文件系统的读操作(一个系统调用) 若文件不在 file cache中,文件子系统启动一个磁盘l/O操作 文件进入应用缓冲区后,服务器通过写相应的套接字(另 个系统调用)发送HTTP响应
举例:Web服务器响应一个GET请求的过程: ◦ 客户向服务器发送了一个GET请求(GET File 1) ◦ 包到达服务器适配器,适配器将包拷贝到内存(DMA),然 后通过中断通知CPU ◦ CPU响应中断,进行协议处理,通过unblock之前的一个系 统调用来通知web服务器 ◦ 服务器进程解析GET请求,得到文件名 ◦ 服务器查找一个目录结构,确定文件在磁盘上的位置 ◦ 服务器进程启动对文件系统的读操作(一个系统调用) ◦ 若文件不在file cache中,文件子系统启动一个磁盘I/O操作 ◦ 文件进入应用缓冲区后,服务器通过写相应的套接字(另一 个系统调用)发送HTTP响应
代码组织与进程切换 网络代码的组织方式: 0每层实现为一个进程:处理一个包产生的进程调度开销(几百 微秒)比一个包的到达时间要大得多 。所有层实现为一个进程:控制开销最小(这种方法最多见) Web服务器的组织方式: 。每个进程服务一个客户:并发度最大,进程切换开销最高 。一个进程服务所有客户:上下文切换开销最小,进程须自己调 度客户以实现最大的并发度(调度开销) 0将客户划分成组,每个进程服务一组客户:并发度和调度/切 换开销适中 代码的组织方式:主要考虑并发度和调度/切换开销的权衡
网络代码的组织方式: ◦ 每层实现为一个进程:处理一个包产生的进程调度开销(几百 微秒)比一个包的到达时间要大得多 ◦ 所有层实现为一个进程:控制开销最小(这种方法最多见) Web服务器的组织方式: ◦ 每个进程服务一个客户:并发度最大,进程切换开销最高 ◦ 一个进程服务所有客户:上下文切换开销最小,进程须自己调 度客户以实现最大的并发度(调度开销) ◦ 将客户划分成组,每个进程服务一组客户:并发度和调度/切 换开销适中 代码的组织方式:主要考虑并发度和调度/切换开销的权衡
Web服务器中的控制开销 Process per group; groups defined by application structure Scheduling overhead vS. loss of currency Web server application System call overhead lwrite0 readY FindActive0↓ Scheduling overhead TCP/IP File system Tracking active files and connections Kernel Interrupt overhead CPU Packet received MEMORY DISK BUS NETWORK ADAPTOR Network FIGURE 6.2 Control overhead involved in handling a get request at a server
本章考虑的控制开销 进程切换:几百微秒 系统调用:几十微秒 中断处理:几微秒 在一个10Gbps的以太网链路上传输最小长度(64 字节)的包,每隔51.2ns会到来一个包。 丶CPU速度的提高并不会显著降低上述控制开销,因 为这些开销与访存有很大关系
进程切换:几百微秒 系统调用:几十微秒 中断处理:几微秒 在一个10Gbps的以太网链路上传输最小长度(64 字节)的包,每隔51.2ns会到来一个包。 CPU速度的提高并不会显著降低上述控制开销,因 为这些开销与访存有很大关系