长久以来,服务器I/O技术的进展一直跟不上处理器的进步速度,然而服务器虚拟化等新型应用的普及,以及数据量的增长,却又不断给服务器I/O带来更大的压力。
服务器I/O能效的问题大致可分为两个,各自面对迥然不同的存取应用型态:
存取延迟
对应的是高IOPS需求的高频存取应用,如即时的金融交易或大型订位/订票系统等,每个I/O的数据量都不大,但每秒可能就得处理多达数万甚至数十万个I/O,因此需要尽可能低的存取延迟时间,也就是尽可能高的每秒I/O处理能效。
带宽需求
对应的是影音多介质数据处理,或是类似Google MapReduce、Hadoop之类针对大数据量的平行架构处理应用。这类型应用并不需要很高的存取回应速度,但需要应付非常大的数据吞吐量,主要的I/O负载落在数据传输带宽上。
针对不同面向的需求,采取的解决方式也有异。要减少存取延迟、加速存取时间,可采用高速存储介质,或减少数据存取所经过的处理环节;而要解决带宽需求问题,则可采用更高带宽的传输控制器、增加传输通道数量,或透过分散平行处理架构,将数据流量分散到多条通道上。
降低存取延迟的基本原则
存储介质本身的存取速度,以及从处理器到存储介质之间的存取通道,是影响存取反应速度的两个主要因素。显然的,存储介质本身的速度越快,回应前端应用程式存取要求的反应时间便越快,延迟越少;同样的,若处理器与存储介质间的传输通道速度越快、传输通道经过的环节越少,则整体的存取反应时间也越快,延迟越少。
一般来说,与处理器越接近、与处理器之间传输环节越少的存储装置,存取速度越快、传输通道带宽越大,如作为处理器内部快取的SRAM,便比位于处理器外部的DRAM更快,而通过存储器汇流直接连接处理器、或通过北桥芯片连接处理器的DRAM,又比必须依序透过存储控制器、南桥芯片、PCIe控制器等环节,再连接中央处理器的硬盘等存储装置更快。
所以要减少存取延迟,基本原则便是尽可能的让数据更接近运算核心,尽量将数据放到较接近处理器的高速存储介质中。
但从另一方面来看,越快的存储介质单位成本越高,也限制了可用的配置容量,不可能把所有应用程序需要存取的数据,都放到靠近处理器的DRAM等高速存储装置上,因此如何将数据分派到不同层级存储装置上存取,便成了另一个关键。