从计算机诞生伊始,“计算”这个词汇便随着时代的变迁不断丰富着自己的内涵,IT从业者为了提高计算效率也给“计算”赋予了更多载体,高性能计算、云计算、量子计算都在通过各个领域为计算赋能。时代发展离不开网络,本文要讨论的话题就是——网络如何与计算融合。
为什么要关心计算和网络的融合?
计算与网络一直密不可分,网络与计算的高效融合也成为了未来计算发展的趋势。我们也可以看到与计算机相关的硬件和软件(如运行虚拟机的通用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的网络处理带来了负担,并且也对计算提出了更高的要求。
CPU和GPU的挑战
网络I/O的性能问题长期以来一直备受关注,其重点在于消除操作系统网络堆栈中的低效率以及优化NIC-CPU交互。目前实现VNF的常用方法是完全绕过网络堆栈,直接从用户级库(例如DPDK)访问原始数据包。此外,CPU和NIC硬件提供了几种机制来提高I/O处理的效率,例如,将数据直接引入CPU LLC(DDIO),并通过减少CPU内核之间的缓存争用(例如,接收端扩展)和降低中断频率(例如,中断调制)来提高可扩展性。但即使采用了这些增强功能,在10Gbps的速度下依旧需要多个CPU内核来执行公共网络功能。此外,现有系统也会因为CPU资源争用而导致延迟增加,包处理性能也出现波动。
查看更多内容
原文地址:https://blog.51cto.com/14355923/2427805