ip路由器内容摘要:

 只需往集群中加入更多的服务器,就可以很容易地提高路由器的容量;  由于采用软件路由器,功能扩展也非常方便。 集群路由器架构图示 设计原则( 2)  仅当单个服务器的性能能够提高到 cR,集群路由器架构方案才是可行的,但目前的服务器远不能达到这个速度。  设计原则二:  在每个服务器内部,将路由器的功能分布到多条处理路径上来提高单台服务器的处理能力。 服务器架构  硬件:使用一个早期的 Intel Nehalem服务器。 服务器架构(续)  软件:  轮询模式下的 Click/Linux , CPU轮询是否有包到达,而不是在包到来后被中断。  扩展了 Linux 10Gbps以太网驱动程序。  流量:  服务器上安装了两块双端口 10Gbps网卡,每块网卡可获得。  服务器最高数据输入速率为。 充分利用服务器的并行性  用基于点到点连接的 Nehalem 服务器代替基于共享总线结构的 Xeon服务器,性能提高了 23倍。 使用多队列网卡  在多核系统上,包输入 /输出产生两个性能问题:  如何在核之间均衡负载。  如何使系统 I/O性能随核的数量线性增长。  使用多队列网卡:  每个端口支持多个发送和接收队列,网卡对包的五元组进行哈希,根据哈希结果将包分到不同的队列,每个队列映射到一个 CPU核。  扩展了支持多队列网卡的驱动程序。 批处理  在目前的操作系统中,  数据包的元数据存放在 skb buffer中,其中有一个指针指向数据包实际存放的位置。  CPU预先在内存中分配好以上数据结构,并将一个 skb buffer的地址(包描述符)通知给网卡。  当有数据包到达网卡时,网卡将数据包及元数据通过 DMA存放到指定位置,然后向 CPU发送中断,返回包描述符。  [4]通过处理来减少开销:  网卡驱动的批处理:驱动程序每次传输 kn个包描述符,减少在PCIe及 I/O总线上产生的事务。  轮询驱动的批处理: Click每次轮询可最多接收 kp个包。 性能改进 ( 2) PacketShader[4]  硬件配置  2片 Intel Nehalem 四核 CPU  2块 NVIDIA GTX480显卡  4块双端口 10GbE网卡(共 8个 10G端口) 软件配置  64bit Ubuntu Linux with kernel  优化的 10GbE驱动程序( I/O engine)  CUDA SDK Linux网络栈的开销 I/O Engine的优化措施( 1)  用静态预分配代替动态缓冲区分配,有效减小了 :  包缓冲区的分配和释放开销  DMA映射开销  精简了 skb数据结构, skb的大小从 208字节减为 8字节。  将包缓冲区的大小设置为 2KB,且起始地址 2KB边界对齐。 I/O engine的驱动结构 P a c k e t d a t a R i n gD r i v e r K e r n e lU s e r s p a c eC h u n km m a pC h u n kc o p yD e s c r i p t o r R i n gO n e c h u n k c o n t a i n s s e v e r a l p a c k e t sR e c e i v e c h u n kO n e s y s t e m c a l l ,O n e c h u n kN I CH a r d w a r ewritewriteI/O Engine的优化措施( 2)  批处理:  硬件批处理:网卡使用一个 PCI事务传输多个包描述符,充分利用PCI总线带宽。  驱动层批处理:驱动程序接收或发送了多个包之后再写网卡寄存器,以平摊访问网卡寄存器的高额开销。  应用层批处理:应用程序每次系统调用接收多个数据包,以平摊系统调用的开销。  预取:  驱动程序预取下一个包的描述符和包数据到 CPU cache,消除由DMA引起的强制缓存缺失。  采用预取隐藏数据包拷贝延迟。  使用轮询代替传统中断模式或 NAPI模式。 批处理获得的性能提升 I/O engine的多核优化  使用多队列网卡  消除和网卡相关的全局统计变量  NUMA感知的数据分布与 I/O:  将所有的数据结构分配在处理它们的节点上  消除由 RSS引起的跨节点 I/O I/O engine性能 Pa。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。