从计算机诞生伊始,“计算”这个词汇便随着时代的变迁不断丰富着本身的内涵,IT从业者为了提升计算效率也给“计算”赋予了更多载体,高性能计算、云计算、量子计算都在经过各个领域为计算赋能。时代发展离不开网络,本文要讨论的话题就是——网络如何与计算融合。
为何要关心计算和网络的融合?html
计算与网络一直密不可分,网络与计算的高效融合也成为了将来计算发展的趋势。咱们也能够看到与计算机相关的硬件和软件(如运行虚拟机的通用CPU、传统操做系统和编程语言)愈来愈多地被用于各种网络功能。诸如交换机,路由器和NIC之类的网络设备也正在变得可编程,以容许在网络中完成各种通用计算。编程
在以数据中心为表明的高密度计算集群中,应用呈多元化和分布化,更大的网络带宽也带来了海量数据,对I/O处理的计算需求也不断飙升,新型的网络功能虚拟化也在进一步蚕食CPU的算力,同时GPU的负载转移工做也是杯水车薪。缓存
网络带宽远远超过计算能力服务器
目前,服务器网络带宽正面临快速增加。200Gbps以太网网卡已经成为主流,厂商还在不断研发新的400Gbps NIC,而1Tbps很快将成为下一个目标。另外一方面,处理网络I/O的计算容量空间正在不断缩小。例如,对于典型的使用32字节键值的键值存储,为了在100 X86 CPU内核的状况下保持400Gb/s的线速,一个内核大约须要500个周期来处理每一个键值对。即便在这种理想的假设下,这种微不足道的计算能力也仅仅可以在网络堆栈中执行一些LLC或内存访问,留给应用程序逻辑的东西少得可怜。换句话说,将来具备线速I/O处理需求的应用程序注定要受到CPU和内存的限制。网络
多年来,各类底层网络层功能已经被应用到了网卡硬件中。这些硬件卸载构成了网络I/O处理的主干,范围从简单的分散汇集I/O、校验、计算和数据包分段到完整的传输层加速器,如TCP卸载和RDMA。编程语言
商用服务器对于线速I/O的低延迟处理需求达到了史无前例的高度,硬件没法跟上数据中心网络工做负载的快速变化。例如,用于访问网络附加存储、新标准和隧道格式的压缩技术都在快速发展,超过了ASIC开发和部署的生命周期。此外,数据中心网络范式从专有的中间盒,例如防火墙和***检测系统,转变为虚拟网络功能(VNF) ,这也进一步推进了计算需求。VNF给CPU的网络处理带来了负担,而且也对计算提出了更高的要求。ide
CPU和GPU的挑战性能
网络I/O的性能问题长期以来一直备受关注,其重点在于消除操做系统网络堆栈中的低效率以及优化NIC-CPU交互。目前实现VNF的经常使用方法是彻底绕过网络堆栈,直接从用户级库(例如DPDK)访问原始数据包。此外,CPU和NIC硬件提供了几种机制来提升I/O处理的效率,例如,将数据直接引入CPU LLC(DDIO),并经过减小CPU内核之间的缓存争用(例如,接收端扩展)和下降中断频率(例如,中断调制)来提升可扩展性。但即便采用了这些加强功能,在10Gbps的速度下依旧须要多个CPU内核来执行公共网络功能。此外,现有系统也会由于CPU资源争用而致使延迟增长,包处理性能也出现波动。
查看更多内容优化