决定虚拟服务器所需要的CPU核心数量是一件非常复杂的事情,但是综合考虑下面几个因素,相信管理员能够作出最适合于自己的决定。
看起来决定虚拟服务器所需要的单颗CPU核心数量是一件非常简单的事情,但事实上有很多复杂因素需要考虑。首先,在虚拟环境CPU的使用率通常非常低。其次,内存大小和速度通常会比CPU产生更大的影响。最后,虚拟服务器通常是I/O密集型的。
事实上,服务器并不需要单颗CPU具有太多的核心数量,因此表面上,CPU内核数量越少越好。但是问题在于服务器设计的其他因素,这些因素都会对成本造成影响,因此最终都会成为影响配置的决定性因素。
内存
DRAM(动态内存)价格非常昂贵,而最新、密度更高的DIMM(双列直插式存储模块)相比于主流的DIMM更加昂贵,因此廉价但是供应量充足的普通DIMM也许是一种更好的选择。但是现在Optane或者NAND的NVDIMM已经成为TB级别内存扩展的最佳方式。
使用NVDIMM或者更加廉价的DRAM需要增加DIMM插槽数量,这样做能够将系统内存带宽扩大一倍并且带来其他性方面的性能提升,管理员就能够在服务器上加载更多的实例了。
向服务器添加快速的NVMe SSD能够显著提升实例的I/O性能。过去这是一种非常昂贵的解决方案,但是现在NVMe已经进入消费级市场,价格大幅降低。
NVMe大幅度降低了操作系统在I/O方面的开销,能够节省大量的CPU和内存时间周期。类似地,RDMA(远程直接数据存取)被广泛应用在HCI(超融合基础架构)中,将会在未来几年成为一种标准的以太网特性,能够减少虚拟服务器集群之间的系统开销和延迟。
总而言之,内存和I/O方面的性能提升允许管理员运行更多的虚拟服务器实例,从而导致CPU数量不足。因此需要增加单颗CPU的核心数量,才能够保证服务器的正常运行。
实例配置
在这篇文章,有必要谈论一下究竟什么是实例。当然,我们不能为实例设置固定大小。实例可能包含多种配置以适用于多种应用程序。可以是一个虚拟核心对应一个物理核心,或者多个虚拟核心对应一个物理核心,甚至是一个虚拟核心对应整个CPU。内存和I/O分配同样是相互独立的变量。
实例的发展趋势是更大的DRAM和更多的I/O以及更低的虚拟核心比——也就是每个实例中更多的CPU。如果管理员希望未来五年之内使用这种等级的实例,那么具有更多CPU核心的服务器引擎将会起到很大帮助作用。
容器和微服务
这种相对全新的虚拟化方式是为了替代基于hypervisor的实例。通常由于共享内存段,运行容器的服务器相比运行hypervisor的服务器所需的DRAM更少,因此容器的数量通常会是实例数量的三到五倍。但是实例数量的增加意味着需要更多的CPU核心。
如果我们向微服务软件架构迁移,存储和网络服务功能都被转变为很小的容器化模型,应用程序被分隔为微服务元素,那么单台服务器能够运行的容器数量还会继续提升,而且是大幅度地。微服务意味着需要CPU进行更加频繁的状态切换。需要更好的性能表现和并发能力,因此单个CPU需要更多的核心才能够满足要求。
服务器架构创新
所有这些都忽略了服务器架构方面的领先技术。关于HMC( Hybrid Memory Cube)方面的讨论已经持续了三年,其能够将CPU和DRAM段形成更加紧耦合的模型。这种方式能够大幅度提升DRAM速度,比如适用于许多并行通道的电接口和架构调用以及DRAM。
现在很多主流厂商都在推广类似于HMC的平台,其早期版本限制DRAM大小不能超过32GB。这足够在三层和DRAM之间形成一个足够大的中间层缓存,有效提升内存性能表现以支持更多的CPU核心。由此得出的结论是多CPU核心是有意义的。
增加核心的成本方面考虑
通常数量更少、更加强大的服务器相比于多台小型服务器在成本方面更加具有优势。它们的运行成本更低,能够支持25Gb以太网和50Gb RDMA连接。底层基础架构的电力成本得到平摊,而运营费用——供电、制冷和维护等——也都更加便宜。
所有这些讨论包含一些如何选择组件的不错建议。比如,每颗核心的成本会随着数量的增加而下降,但是最好的三到四颗CPU很有可能是全新的,需要50%到100%的额外费用。同样的情况也适用于内存和SSD。
如果没有使用前沿技术,那么看起来更多的CPU核心和配置更高的服务器相比于小型服务器更加具有吸引力,但是爆米花大小的web服务器除外。
展望未来
未来的服务器架构发展路线相比于之间更加模糊,是否转向以内存为中心的架构——比如Gen-Z——依旧在争论之中。即便如此,我们依然能够在2018年看到32核心的CPU,并且如果将HMC内存体积扩展到TB级别,那么CPU核心数量还会继续增加。一些厂商暗示可能会在架构中同时使用DRAM和NAND。
通过使用多核虚拟服务器和HCI架构,特定负载所需要的服务器存储将会大幅度减少。
注意事项:需要注意网络设计和流量。我们仍旧在和LAN以及WAN的限制做斗争,即便使用最新的速度和技术。加密和压缩正在快速成为LAN的必要特性,这样就会带来更多的CPU负载,也就需要更多的CPU核心。