
云服务器的类型实际上就是根据CPU、内存、网络和磁盘I/O的不同比例来区分的,在同一种类的vCPU数量下,三种类型的服务器在基准测试中的表现大相径庭。
基准测试维度与实测表现
用SPEC CPU 2017、STREAM、sysbench和fio进行压力测试的时候,把变量设置为同一代的CPU、同样的虚拟化环境以及同一个地区的可用区。
计算优化型
高主频、多核隔离、vCPU 和物理核心之间的绑定关系更加紧密一些,SPEC CPU 2017 int_rate一般要比普通的机器高出30%-40%,单核延迟也更稳定一些;视频转码、编译以及AI推理等性能方面都有很大的优势。STREAM内存带宽约为85GB/s可以支持大量的计算密集型任务,但是内存容量比例较低(一般为1:2)。
内存优化型
虽然 CPU 的主频不是最高的,但是内存通道数、容量以及 NUMA 拓扑都做了优化。STREAM Triad 带宽可以达到120GB/s左右,Redis GET/SET QPS和大型MySQL缓冲池命中率明显更高一些;在百GB级别的热数据情况下,查询延迟要比普通的低一个数量级。不过它的缺点就是单价最高,CPU算力有浪费的情况。
通用型
CPU和内存的比例大约是1:4,网络与存储I/O平衡。SPEC跑分处于中间位置,STREAM带宽约为45GB/s,可以承受混合负载。Web后端、微服务以及小型数据库在上面运行得很稳定,在突发流量下弹性更好一些,但是长时间高负荷运转的时候就会遇到CPU瓶颈。
关键结论
- 转码、渲染和量化计算:先做优化型的,再考虑单核主频以及多核隔离的问题。
- Redis、大数据库和Spark都倾向于使用内存来加速处理速度,所以应该关注的是内存带宽以及容量,而不是CPU核心数量。
- Web服务、测试环境以及成本敏感型业务:通用的性价比最好。
- 在选型之前要用真实的业务压力测试来替代跑分截图,主要关注P99延迟、内存带宽以及有没有发生Swap的情况。
实例类型并无好坏之分,取决于瓶颈所在:CPU占用高则选择计算型,内存命中率低就选用内存型,在情况不明的时候先使用通用型然后再进行迭代。
总结
计算优化的就是算力的确定性、内存优化的就是数据的吞吐量、通用的就是整体的弹性。基准测试的意义不在于排名,在于把业务画像转成资源配置。