引言
最近有一个高性能计算的项目,可能需要超大内存支持,相应的硬件买起来实在不便宜,于是顺手做了一圈云计算的调研。和其他比较云服务提供商的文章不同,普通对比的重点都放在对比小机(单核1G甚至512M内存,主要用来科学上网或者搭建小流量的个人网站)或者大部分企业级业务使用的正常配置的云主机(2到8核,4到64G内存不等,用来作为企业级的网站和数据库等业务的基础设施,再大的业务规模通常选择开启多台服务器实例做分布式来提升吞吐和可用,而非在一台实例上堆配置)不同,本文对比的重点很明确,就是单实例提供 1T 量级内存的机型和相应的价格,来探讨利用云计算资源,进行高性能计算的可能性。
之所以用云计算资源进行科学计算这种做法并不主流,是因为超算中心的价格一般来讲是远远低于云计算厂商提供的价格的。超算提供的价格往往在 0.1元 1核时甚至更低,这里的核还是超线程关闭的物理核数。但在某些情况下,也许云服务是更好的选择。比如异构计算,似乎现在云服务提供商对于各种 GPU 计算资源的供给要比传统超算中心多样和充足。又比如本文的大内存节点需求,超算的这种节点往往很少,或内存还是无法满足需要。相反,我们在下文会看到,很多云服务可以提供高达 12T 的单机内存。另外,超算的开发环境往往定制性很差,缺少 sudo 权限,使得很多配置难于甚至无法进行。大部分的超算甚至连网络连接都没有。在这方面,云计算资源也有很大的优势,至少可以作为 root 随便折腾,并且国外云主机都有相当充分的带宽。充分利用云厂商的 API 之后,各种编排,自动化运维等等操作更是想象力无限。
需要注意的是,本文列举的只是简单的从不同的云服务提供商的相应页面获得的基础信息,实际操作时,可能存在有价无货,或者不同地区用户购买费用不同甚至“锁区”等细节问题,更别提本文完全不会涉及用户体验,云服务提供商的技术支持体验和基础设施的 API 方便程度等的讨论。因此本文就是姑妄言之姑妄听之,仅算是对大内存性云计算资源的一个简单归纳存档。
简述
比较麻烦的事情是,云服务里有一些名词起的并不是很直观。更糟糕的是,指的是同一概念的名词,不同的云服务提供商通常有不同的叫法。对于虚拟主机这一云服务提供商最基本的服务,各家叫法就都不一样,这一点在下文厂商列表时也会提及。
一般来讲云主机的付费有两种模式,分别是按需计费和预留计费(不同厂商名称不太一样)。按需计费也即按照使用时间计费,通常可精确到小时甚至秒。预留计费,则指先预付一部分款项,然后在按照月份付一定费用。这里边不同厂商的计费细节和政策区别很大。比如,是否需要预付一部分款项,是否只有签订按年的合同才可使用预留计费的方案等等。但其精神是,如果需要长时间在线的机器,那么预留计费要比按需计费优惠大概 30% 或更多(取决于具体厂商和合同时间)。因此下文比较价格时,将尽量列举两种付费方式的价格,美元将按照 6.9 折算。当然预留计费方式的价格也会根据合同时长等因素而有所不同。
此外,部分云厂商还提供所谓的竞价付费的方案,用来更好的削峰填谷。其精神为,在有空置计算资源的时候,提供极其优惠,甚至是按需计费10%的价格(通常只会卖出几个小时),此后根据数据中心计算资源的整体使用情况,其价格会波动,你可以继续选择续费或者暂停使用。对于实现 checkpoint 比较容易,可以随时停止的计算任务,这种竞价付费的形式,无疑会非常便宜。但一来,我们的计算任务很难实现 checkpoint,二来竞价计费的方式和有无,在不同的云服务商又非常不同,再加上其价格一直在变动,本文不去比较这种付费方式的价格。此外还要注意,不同云服务商,不同地区的同种实例,价格往往区别很大,因此本文列举的价格可能有很强的地域性和时效性。同时由于对于网络流量,存储等附加收费项目和政策的不同,下面单纯关于实例的比价,也许无法反应最后真实的使用价格的高低。
对于虚拟主机,不同云服务商提供的大概有通用型,内存优化型,GPU 加速或 FPGA 加速型等等,本文关注的重点放在内存优化型上,特别是各服务商在 1T 内存这个档位的实例,后文会看到,能够提供这种级别机器的厂商并不是特别多。
此外就是关于不同代的 Intel CPU 的一些评注。下文我们会看到,不同的云服务提供商使用着不同代的微架构的 cpu。不同代微架构的对于科学计算而言,最主要区别,可能是 AVX 指令集的支持情况,如下表(表格来自1):
CPU平台 | AVX | AVX-2 | AVX-512 |
---|---|---|---|
IvyBridge | |||
Haswell | √ | ||
Broadwell | √ | √ | |
Skylake | √ | √ | √ |
Cascadelake | √ | √ | √ |
不过其中 Cascadelake 架构的 Xeon (编号第二位是2,Intel 改变 Xeon 命名方式后的第二代)应该是 Q2 19 刚发布,应该还没什么云厂商上架或者正在上架中。这里的 AVX (Advanced Vector Extensions) 指令集实际上就是新一代的 SIMD,不同代数支持的同时操作的 bit 数不同。AVX 是部分 256 bit 支持,AVX2 是256 bit 支持,最新的 AVX 512 可以支持 512 bit 在一个 cycle 计算。该指令集极大提升了计算密集任务的吞吐 GFLOPS,也是刷 Linpack 的利器。对于需要 mkl 等大量基础线性代数操作的计算任务,加速将会非常明显。
国外云计算资源
Amazon Web Service
AWS 提供的虚拟主机叫做 EC2。其内存优化型的主机主要是 R 系列和 X1 系列。其最大内存机型为 u-12tb1.metal ,提供 448 个CPU线程和 12T 的内存。我们关注的实例类型则是 x1e.8xlarge,提供 32 CPU 核和 976G 内存还赠(?)960G SSD。其对应的 CPU 为 Intel Xeon E7 8880 v3,也即 Haswell 那代,不过该 CPU 支持 AVX2。
价格方面,该实例美东按需计费每小时6.672美元,约 46 人民币。预留计费方面,可变一年期无预付的方案,较按需可节省 29%,也即约 32 人民币每小时,但只有每个月全部跑满,才能赚足这优惠。
Microsoft Azure
Azure 提供的虚拟主机就叫做 Virtual Machines,可以说起名字是相当朴素了。其对应的内存优化型的是 M 系列,我们关注的是 M64s 实例,其对应 64 CPU 线程和 1024G 内存。其 CPU 是 Intel Xeon E7-8890 v3 (Haswell),也是支持到 AVX2。该实例还有 2T 存储。微软这边内存最大的实例来自这句话
Please contact your Microsoft account team to get pricing for larger SKUs that provide up to 24TB RAM on single node.
倒吸一口凉气。其有标价的最大内存实例是 S576m,具有 576 CPU 线程和内存 12T。
M64s 的价格方面,按需每小时 6.669 美元,大概是 46 人民币,价格和 AWS 高度对标。一年预留计费,大概节省 43%。
Google Cloud Platform
谷歌提供的虚拟主机叫做 Google Compute Engine (GCE),其内存优化的实例类型是 n1-ultarmem 系列。我们关注的机型是 n1-ultramem-40,其提供 CPU 40 线程,内存 961G。GCP 现在的最大内存机型似乎是 n1-ultramem-160,其具有 3.75TB 的内存,这一数字较亚马逊和微软两家的极限要小。这一些列的 CPU 是 Intel Xeon E7 (Broadwell E7),根据这篇官方博客,其具体型号为 Intel Xeon E7-8880 v4 ,算是比亚马逊和微软新一代,不过其也是只支持到 AVX2。
价格方面,按需每小时 6.3 美元,大概是 43 人民币。通过自动持续使用折扣,则自动按照类似预留计费的方式折扣,优惠率也在 30% 左右。
其他的国外 VPS 提供商,包括 Linode,Vultr 和 Digital Ocean 都没有这么大内存的机型提供。
国内云计算资源
阿里云
阿里的虚拟主机叫做云服务器 ECS。其提供的内存增强型的系列是 ecs.re4。最大内存可达到 1920G,160 CPU 核。我们关注的是 ecs.re4.20xlarge,其具有 80 核,960G 内存。这款的 CPU 为 Intel Xeon E7-8880v4 (Broadwell),也即支持到 AVX2 指令集。其定价比较奇怪,月付的话,每小时平均 27.5 元,各个地区差不多。但是按需计费,美东每小时 42,明显比国内的每小时 68.75 便宜。但另一方面,阿里是这些云厂商中,预留比按需优惠力度最大的。按月付竟然只有按需费用的 40%。
华为云
华为云的虚拟主机叫做弹性云服务器 ECS。其提供的超大内存型的实例系列是 E3,最大支持的内存是 208 核 4096 G 内存。我们关注的型号是 e3.26xlarge.14,其提供 104 核 1466G 内存。该型号按需计费,每小时 66 人民币,包月费用则在每小时 44 元左右。其 CPU 应该是 Intel Xeon Platium 8176 (Skylake),也即可以支持 AVX512 指令集。
此外,注意到老一代的 e1.8xlarge 和 e2.9xlarge 分别能提供 940G(32核) 和 890G(32核) 内存,应该是也可以满足需求的。E2 在上海还有实例,每小时按需只需 38 块多。根据文档的暗示,似乎 e1,e2 是没有开超线程的,e3 是开了的,也就是 e3 的 CPU 核数是缩水的那个。前两代对应的 CPU 没有查到,估计最新也就是 Broadwell,不过前两代几乎没什么货了。
京东云
京东云的虚拟主机就叫做云主机,其内存优化的类型是 m.n1 系列。满足条件的实例是 m.n1.16xlarge,其提供 64 核 CPU 和 1464G 内存。其按需计费,1h 需要 49.7 元(宿迁,其他地区则需要 60 多元)。包月大概折合 34 元每小时。n1 是老一代的机器,对应的 CPU 是 Intel Xeon E5-2683 v4 (Broadwell)。n2 倒是用上了 Skylake 的处理器,不过没见到内存这么大的实例类型。京东云官网首页写有
超大内存实例
京东云提供国内最大内存云主机,独享1464GB DDR4内存,满足数据交换速度和内存容量有极高要求的大型业务部署场景。
不过看来现在不是国内内存最大的,但确实达到我们的计算需求了,而且看起来还比国内同行便宜一些。
腾讯云
腾讯的虚拟主机叫做 CVM,其能提供的最大内存实例有内存 648G,对于我们的计算任务是不够用的。不过他们最新一代的内存实例 M5,已经宣称使用了 Cascade Lake 这代的 Intel CPU,这还是跟地很快的。此外其还提供 HPC 工作流的批量计算型节点,可以达到 0.1 元核时的水平,这一价位已经和国内超算持平,是远低于普通的云主机定价的。然而腾讯没有达到 1T 内存水平的实例提供。
其他国内厂商包括百度云,网易云,美团云,UCloud 均无内存达到 1T 数量级的实例(至少我没有看到)。
总结
也没什么好总结的,只能说云计算是未来的大势所趋。特别是随着异构计算硬件变得多样且昂贵(甚至是量子计算器件的出现),大量计算资源只有大型云计算厂商才有实力储备和提供。再加上更加快速的网络和大带宽,也使得未来和云计算交互更加容易。更进一步的,云设施上厂商提供的大量服务,从自动化运维到数据处理再到机器学习,更使得中小企业开发成本有效降低。可以想见的未来,也许世界又会重新只需要“5台”电脑。