小结 采用用户级协议实现,处理一个包只需要一次中 断和一次进程切换 进一步地, 中断开销可以在多个包之间分摊(稍后介绍) Web服务器可以一次处理一批包,包的进程调度开销也 可以被分摊 因此,采用以上优化措施后,处理一个包接近于 没有控制开销
采用用户级协议实现,处理一个包只需要一次中 断和一次进程切换 进一步地, ◦ 中断开销可以在多个包之间分摊(稍后介绍) ◦ Web服务器可以一次处理一批包,包的进程调度开销也 可以被分摊 因此,采用以上优化措施后,处理一个包接近于 没有控制开销
6.3避免应用中的上下文切换开销 考虑一个需要处理大量连接的web服务器 Web服务器内潜在的并发性: 由于磁盘读写、网络输入输出比指令执行时间 大得多,当一个客户等待|/O时,CPU可以去处 理另一个客户 因此,web服务器可以同时处理许多客户 问题:如何组织web服务器的代码来提高 并发度?
考虑一个需要处理大量连接的web服务器 web服务器内潜在的并发性: ◦ 由于磁盘读写、网络输入输出比指令执行时间 大得多,当一个客户等待I/O时,CPU可以去处 理另一个客户 ◦ 因此,web服务器可以同时处理许多客户 问题:如何组织web服务器的代码来提高 并发度?
6.3.1每个进程处理一个客户 丶从程序设计的角度,每个进程处理一个客户最简 单 。调度由操作系统完成,不需要程序员做什么特殊处理 Accept Parse Locate Send Read file Process connection request file header Send data (or Thread 1 Client 1 Parse Send Process connection request header Send data (or Thread) N Client N (1)MULTIPROCESS OR MULTITHREADED
从程序设计的角度,每个进程处理一个客户最简 单: ◦ 调度由操作系统完成,不需要程序员做什么特殊处理
进程切换的代价很高 内存和寄存器之间大量的读写操作(上下 文保存和恢复) 页表更新(每个进程有自己的页表) TLB miss. d-cache miss, I-cache 需要大量空间保存上下文,减少了文件 cache的使用空间,文件 cache miss增大
内存和寄存器之间大量的读写操作(上下 文保存和恢复) 页表更新(每个进程有自己的页表) TLB miss,d-cache miss,I-cache miss 需要大量空间保存上下文,减少了文件 cache的使用空间,文件cache miss增大