Cavium ThunderX2评估:Arm Server的梦想成真(第3部分)

第一部分和第二部分“ Cavium ThunderX2评估:Arm Server的梦想实现了”。

Java性能


SPECjbb 2015是一个Java Business Benchmark基准,用于评估运行典型Java应用程序的服务器的性能。 它使用了最新的Java 7和XML功能,并增强了安全性。



请注意,我们已经将SPECjbb 1.0的版本更新为1.01。



我们使用四组事务注入器和后端测试了SPECjbb。 我们使用Multi JVM测试的原因是它更接近实际情况:服务器上的多个虚拟机是一种常见做法,尤其是在线程数超过100的服务器上。 Java版本是OpenJDK 1.8.0_161。

每次发布SPECjbb的结果时,都会收到有关我们的性能过低的评论。 因此,我们决定花更多时间并注意各种设置。

  1. 内核设置,例如任务计划程序计时,清除页面缓存
  2. 禁用节能功能,手动配置c状态行为。
  3. 将风扇设置为最大速度(我们花了大量精力在几个额外的性能方面)
  4. 禁用RAS功能(例如内存清理)
  5. 各种Java参数的大量设置...这是不现实的,因为每次您在不同的计算机上运行应用程序(这通常发生在云中)时,昂贵的专家都必须为特定计算机配置设置,此外,这可能导致应用程序在其他计算机上停止
  6. 配置非常特定于SKU的NUMA设置和CPU映射。 在同一群集中的两个不同的SKU之间迁移可能会导致严重的性能问题。

在生产环境中,设置应该很简单,并且最好不要太特定于机器。 为此,我们应用了两种类型的设置。 第一个是非常简单的设置,可以直接测量性能,以将所有内容放置在具有128 GB RAM的服务器上:

"-server -Xmx24G -Xms24G -Xmn16G"

对于第二种设置,为了寻找最佳吞吐量指标,我们使用了“ -XX:+ AlwaysPreTouch”,“-XX:-UseBiasedLocking”和“ specjbb.forkjoin.workers”。 开始之前,“ + AlwaysPretouch”将重置所有内存页面,从而减少性能对新页面的影响。 “ -UseBiasedLockin”禁用Baised锁定,默认情况下启用。 偏向锁定优先于已将竞争数据加载到缓存中的线程。 偏向锁定的反面是相当复杂的附加过程(Rebias),在错误选择策略的情况下会降低性能。

下图显示了我们的MultiJVM SPECJbb基准测试的最高性能。



ThunderX2的性能达到Xeon 8176的80%到85%。这一数字足以超过Xeon6148。有趣的是,Intel和Cavium系统以不同的方式达到了最佳效果。 对于Dual ThunderX2,我们使用:

'-server -Xmx24G -Xms24G -Xmn16G -XX:+AlwaysPreTouch -XX:-UseBiasedLocking

尽管英特尔系统达到了最佳性能,但保留了偏移锁定(默认)。 我们注意到,英特尔系统-可能是由于相对“奇数”的线程数-拥有较低的平均处理器负载(百分之几)和较大的三级缓存,这使得偏向锁定对于该体系结构而言是一个很好的策略。

最后,我们有Critical-jOPS,它通过响应时间限制来衡量吞吐量。



通过大量使用线程,可以通过增加JVM上RAM的分配来获得更多Critical-jOPS。 令人惊讶的是,Dual ThunderX2系统具有更高的流数量和更低的时钟速度,它显示了最佳时间,提供了高带宽,同时将99%的响应时间保持在一定限度内。

增大堆大小有助于英特尔稍微缩小差距(最大x2),但以带宽(从-20%到-25%)为代价。 看来Intel芯片比ARM需要更多的定制。 为了进一步探讨这一点,我们转向了透明大页面(THP)。

Java性能:大页面


通常对于CPU,很少有人重播因子3,但是我们决定更深入地研究此问题。 最明显的候选者是Huge Pages,或者除Linux社区以外的所有人都称为“ Large Pages”。

每个现代处理器都在其TLB中缓存虚拟和物理内存映射。 “正常”页面大小为4 KB,因此,使用1536个元素,Skylake内核可以每个内核缓存大约6 MB。 在过去的15年中,DRAM的容量已从几GB增加到几百GB,因此TLB丢失已成为一个问题。 TLB丢失非常昂贵-您需要访问一些内存才能读取一些表并最终找到物理地址。

所有现代处理器都支持大页面。 在x86-64(Intel和AMD)中,一个流行的选项是2 MB,还提供1 GB页面。 同时,ThunderX2上的大页面至少为0.5 GB。 大页面的使用减少了TLB丢失的次数(尽管大页面的TLB中的条目数通常要少得多),减少了缺少TLB时所需的内存访问次数。

但是,现在是Linux以方便的方式支持此功能的时候了。 内存碎片,冲突和难以配置的设置,不兼容性,尤其是名称非常混乱,导致了很多问题。 实际上,许多软件供应商仍建议服务器管理员关闭大页面。

为此,让我们看看如果打开“透明大页面”并保存前面讨论过的最佳设置会发生什么。



总体而言,对于Max-jOP,性能影响并不明显。 这实际上是一个小回归。 至强丢失了大约1%的带宽,即ThunderX2-大约5%。

让我们继续进行Critical-jOPS指标,在该指标中,吞吐量是响应时间限制的第99个百分位。



差异很大! 英特尔没有失败,没有超越ThunderX2。 但是,应该说4 KB页面的性能显然是Intel体系结构的一个严重缺陷。

Apache Spark 2.x基准测试


最后但并非最不重要的一点是,我们的武器库已进行Apache Spark测试。 Apache Spark是大数据处理的创意。 加速大数据应用程序仍然是我工作所在的大学实验室(西弗兰德大学的服务器规模实验室)的一个优先项目,因此,我们已经准备了一个基准,该基准使用了许多Spark功能并基于实际使用情况。



该测试在上图中进行了描述。 我们从从CommonCrawl收集的300 GB压缩数据开始。 这些压缩文件是大量的Web存档。 我们动态解压缩数据以避免长时间等待,这主要与存储设备有关。 然后,我们使用Java BoilerPipe库从存档中提取有意义的文本数据。 使用Stanford CoreNLP自然语言处理工具,我们从文本中提取实体(“意味着某事的单词”),然后计算哪些URL最多出现这些对象。 交替最小二乘算法用于推荐特定主题最感兴趣的URL。

为了达到更好的缩放比例,我们推出了4位艺术家。 研究人员Esley Havenert重新配置了Spark测试,使其可以在Apache Spark 2.1.1上运行。



结果如下:



(*)EPYC和Xeon E5 V4较旧,可在Kernel 4.8和稍旧的Java 1.8.0_131而不是1.8.0_161上运行。 尽管我们期望在4.13内核和Java 1.8.0_161上的结果非常相似,但由于我们发现这两种设置之间的Skylake Xeon差异并不大。

数据处理是非常并行的,并且非常密集地加载处理器,但是对于“改组”阶段,需要与内存进行大量交互。 与存储设备通信所花费的时间可以忽略不计。 ALS阶段无法跨多个线程扩展,但不到总测试时间的4%。

ThunderX2提供的性能是价格昂贵的EPYC 7601的两倍,而性能是后者的87%。由于该指标与内核数量很好地匹配,我们可以估计Xeon 6148的得分约为4.8。 因此,尽管ThunderX2不能真正威胁至强白金8176,但它的价值与金6148和他的兄弟相同,但价格却低得多。

到底是什么


总而言之,我们的SPECInt测试表明ThunderX2内核仍然存在一些缺陷。 我们的第一个负面印象是密集的分支代码(特别是与通常的L3高速缓存未命中(高DRAM延迟)结合使用)的工作速度相当缓慢。 因此,在某些特殊情况下,ThunderX2不是最佳选择。

但是,除了某些细分市场以外,我们非常确定ThunderX2将成为可靠的执行者。 例如,我们由布里斯托大学的同事进行的性能测量证实了我们的假设,即诸如ThunderF2和OpenFoam(CFD)等大量HPC工作负载在ThunderX2上都能正常工作



根据我们设法对服务器软件进行的早期测试的结果,我们可能会感到惊喜。 在Java服务器(SPECJbb)和大数据处理上,ThunderX2的性能仅需1美元,这是迄今为止服务器市场上最好的。 我们必须重新测试AMD EPYC处理器和当前一代(Skylake)Xeon的黄金版本,但是同时8816处理器的性能的80-90%(其价格的四分之一)将很难被击败。

作为对Cavium和ThunderX2的附加好处,应该提到的是Arm Linux生态系统已经在2018年成熟。 不再需要专门的Linux内核和其他工具。 您只需安装Ubuntu,Red Hat或Suse服务器,就可以自动从标准存储库进行软件的部署和安装。 这是对我们启动ThunderX时所体验到的重大改进。 早在2016年,从常规Ubuntu存储库进行的简单安装可能会引起问题。

因此,总体而言,ThunderX2是一个非常强大的竞争对手。 对于EPYC AMD来说,这比对英特尔的Skylake Xeon来说甚至更加危险,因为考虑到放弃英特尔的可能性,Cavium和AMD都在争夺同一组客户。 这是由于以下事实:购买了昂贵的公司软件(Oracle,SAP)的客户在硬件方面对成本的敏感性较低,因此他们切换到新硬件平台的可能性大大降低。 这些人在过去5年中对英特尔进行了投资,因为这是唯一的选择。

反过来,这意味着托管和云提供商等更具灵活性和价格敏感性的用户现在将可以选择具有出色性价比的替代Arm服务器。 借助HP,Cray,Pengiun,技嘉,富士康和Inventec提供基于ThunderX2的系统,不乏优质的供应商。

简而言之,ThunderX2是在CPU服务器市场上首个与Intel和AMD竞争的SoC。 这是一个令人惊喜的惊喜:终于,出现了用于Arm服务器的解决方案!

感谢您与我们在一起。 你喜欢我们的文章吗? 想看更多有趣的资料吗? 通过下订单或将其推荐给您的朋友来支持我们, 为我们为您发明的入门级服务器的独特模拟,为Habr用户提供30%的折扣: 关于VPS(KVM)E5-2650 v4(6核)的全部真相10GB DDR4 240GB SSD 1Gbps从$ 20还是如何划分服务器? (RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

戴尔R730xd便宜2倍?在荷兰和美国,我们有2台Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100电视(249美元起) 阅读有关如何构建基础架构大厦的信息。 使用价格为9000欧元的Dell R730xd E5-2650 v4服务器的上等课程?

Source: https://habr.com/ru/post/zh-CN413983/


All Articles