
ARM Classic(传统)系列处理器
ARM7 系列:基于 ARMv3 或 ARMv4 架构,包括 ARM7TDMI-S 和 ARM7EJ-S 处理器。
ARM9 系列:基于 ARMv5 架构,包括 ARM926EJ-S、ARM946E-S 和 ARM968E-S 处理器。
ARM11 系列:基于 ARMv6 架构,包括 ARM1136J(F)-S、ARM1156T2(F)-S、ARM1176JZ(F)-S 和 ARM11MPCore 处理器。
ARM Cortex-M系列处理器
ARM Cortex-M 系列处理器常见的包括 Cortex-M0、Cortex-M0+、Cortex-M3、Cortex-M4、Cortex-M7
Cortex-M0 是最小的 ARM 处理器,8/16 位应用,体积极小、能耗很低且编程所需要的代码占用量极少,常见的Cortex-M0 处理器有 NXP 的 LPC1100 系列、意法半导体的 STM32F0主流MCU系列。
Cortex-M0+ 是在 Cortex-M0 基础上开发的能效极高的处理器,其保留了 Cortex-M 的全部指令集和数据兼容性,以接近 8 位系统的成本开销获取 32 位系统的性能,常见的 Cortex-M0+ 处理器有 NXP 的 LPC1100 系列和意法半导体的STM32G0高性能系列、STM32L0低功耗系列
Cortex-M3 处理器是行业领先的 32 位处理器,具有较高的性能和较低的动态功耗,支持硬件除法、单周期乘法和位字段 *** 作在内的 Thumb-2 指令集,最多可以提供 240 个具有单独优先级、动态重设优先级功能和集成系统时钟的系统中断。常见的型号有NXP 的 LPC1300 系列和 LPC1700 系列;意法半导体的 STM32F1主流MCU、STM32F2高性能系列、STM32L1超低功耗系列
Cortex-M4 是 Cortex-M3 的升级版,将 32 位控制与领先的数字信号处理技术集成来满足需要很高能效级别的市场,主要实际应用型号包括德州仪器(TI)的 TM4C 系列和意法半导体的 STM32F3主流系列、STM32F4、STM32G4高性能系列、STM32L4低功耗系列
Cortex-M7是高性能的内核,其运算效能是Cortex-M4的二倍。其中包括六层的超纯量管线有分支预测,有可选的单精度浮点运算器或双精度主要实际应用型号包括NXP的RT1050,意法半导体的STM32F7系列、STM32H7系列。
Cortex-A 处理器
ARM Cortex-A处理器包括 Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A12、Cortex-A15、Cortex-A50、Cortex-A72共8个子系列
Cortex-A5 处理器是体积最小、功耗最低的应用型处理器,并且可以带来完整的网络体验,可为现有的 ARM926EJ-S 和 ARM1176JZ-S 处理器设计提供高价值的迁移途径。
Cortex-A7 处理器是一种高能效应用处理器,除了低功耗应用外,还支持低成本、全功能入门级智能手机,该处理器与其他 Cortex-A 系列处理器完全兼容并整合了高性能 Cortex-A15 处理器的所有功能,包括虚拟化、大物理地址扩展(LPAE)NEON 高级 SIMD 和 AMBA 4 ACE 一致性。单个 Cortex-A7 处理器的能效是 ARM Cortex-A8 处理器的 5 倍,性能提升了 50%,而尺寸仅为后者的五分之一,支持如今的许多主流智能手机。目前提供 Cortex-A7 的厂商包括德州仪器(TI)、三星(SAMSUNG)、飞思卡尔(Freescale)、博通(Broadcom)、海思半导体(HISILICON)和 LG。
Cortex-A8 处理器基于 ARMv7 架构,支持 1GHz 以上的工作频率,采用了高性能、超标量微架构及用于多媒体和 SIMD 处理的 NEOD 技术,可以满足 300mW 以下运行的移动设备的低功耗要求,目前提供 Cortex-A8 的厂商有德州仪器(TI)、三星(SAMSUNG)、飞思卡尔(Freescale)、博通(Broadcom)和 ST(意法半导体)。
Cortex-A9 处理器是低功耗或散热受限的成本敏感型设备的首选处理器,其支持多核,在用作单核心的时候性能比 Cortex-A8 提升了 50% 以上,其主要用于主流智能手机、平板电脑、多媒体播放器等。
Cortex-A12 是 Cortex-A9 的升级版,专注应用于智能手机和平板电脑,该芯片使用较少。
Cortex-A15 处理器是基于 ARMv7 架构是Cortex-A 系列处理器的最新产品,也是最高性能产品,和其他处理器系列兼容,通常应用于移动计算、高端数码家电、服务器和无线基础架构
Cortex-A50 系列处理器基于 ARMv8 架构, 提供了 A53 和 A57 两种型号的处理器,目前在手机、平板等智能终端设备中得到广泛应用。
Cortex-A72处理器基于ARMv8-A架构,是ARM性能最出色、最先进的处理器。使用设备涵盖高阶的智能手机、中型平板电脑、大型平板电脑鲲鹏芯片一款兼容ARM指令集的服务器芯片鲲鹏920,其拥有性能强悍、64个物理核心等特点,而对于大部分已经支持ARM64的 *** 作系统和软件而言,鲲鹏仍然是一个架构为arm64或者aarch64的芯片。可以应用于泰山2280,泰山5280,泰山X6000等型号的服务器中,按理说所有可以支持ARMv8指令集的 *** 作系统应该都可以兼容鲲鹏芯片,例如EulerOS28,ubuntu1804,CentOS75。性能不是问题,只不过,目前WinRAR也好,Ghost也罢,都只有X86平台的。如果不做软件移植,不转写代码,ARM的性能无论多强,也是运行不了这些软件的。如果未来ARM的生态环境足够优秀,WinRAR也许会考虑发行ARM版的吧。Arm二手服务器芯片可以在任何时候购买,不过由于Arm技术新颖,应用场景较少,所以市面上的库存比较紧张。国内竞价网站有一些二手服务器芯片,但是其供应量不多。建议网上搜一下Arm二手服务器芯片的信息,可以及时看到市场的情况、库存量、价格等信息。相比于 Intel 的 x86-64 架构,ARM 架构虽然作为后来者,但在服务器领域也开始在不停地攻城拔寨,很多企业也开始将自己的服务迁移到 ARM 架构上面,自然,对于 TiDB 来说,大家也想将 TiDB 运行到 ARM 上面。因为 AWS 上面直接提供了 ARM 机型,所以我们决定先尝试在 AWS 的 ARM 上面编译运行 TiDB。
TiDB 主要包含三个组件 - PD,TiKV 和 TiDB,对于 PD 和 TiDB 来说,使用的是 Go 进行编译的,所以我们只需要在 ARM 机器上面装好 Go 的版本就可以了。这里,我使用的是 go1126linux-arm64 这个版本。
用 Go 编译 TiDB 和 PD 比较容易,中途遇到了一个 TiDB 的编译问题,只需要升级下 vendor 就解决了。
编译 TiKV 就比较麻烦了,因为我们使用的是 CentOS 系统,系统用 yum 就能安装相关的依赖,除了 cmake3 ,装 cmake 需要做如下处理:
当然,编译 RocksDB 还有 Titan 的时候还遇到了一些错误,不过多数就是传递编译参数的时候需要处理下 ARM64 相关的选项,并不是特别的困难。
总的来说,编译并没有花太多的时间,这里有一个 脚本 ,大家可以自行去看如何在 ARM64 上面编译 TiDB。对于运行集群需要的 Grafana 和 Prometheus,官方都提供了 ARM64 版本,大家可以直接去 Google。
编译好了 ARM64 的版本,自然就是测试了,这里我使用了 go-ycsb 进行了简单的测试,这里我使用的是 16c32g 的 ARM64 机器,顺带也开了一台同配置的 x86 作为对比。
在每台测试机器上面,启动一个 PD,一个 TiKV,使用的是默认配置,然后 go-ycsb 使用 100 并发,导入 1 百万数据, *** 作次数 1 百万,batch size 为 0。
结果如下:
可以看到,ARM 的机器性能比 x86 的差了很多,需要来优化了。在网上找了这篇 文章 ,使用了上面的脚本,但发现没有什么变化。在这个脚本里面,主要的优化就是将网卡中断的处理绑定到某一个 CPU 上面,然后将 RPS 分散到不同的 CPU。对于 16c32g 的机器来说,这个脚本将网卡中断的处理绑定到 CPU core 0 和 8 上面,然后把 RPS 分散到所有的 CPU 上面,但是我通过 mpstat 发现,core 0 和 8 几乎被打满:
于是我重新调了下,将 RPS 分散到除开 core 0 和 8 的地方:
然后 OPS 稍微提升了一点,但 CPU core 0 和 8 仍然是瓶颈。而这个瓶颈明显是网络处理造成的,直观的优化就是减少网络消息的处理,于是将 batch size 设为 128,可以发现在 ARM 上面性能提升很多,譬如对于 workload C,OPS 能提升到 118270。但即使这样,CPU core 0 和 8 还是会成为瓶颈。
对比 ARM,x86 下面 CPU 的分配明显的均匀很多:
所以后面我们要考虑的事情就是如何让 ARM 能更好的处理网络消息。
上面简单的说了一下如何在 ARM 上面编译运行 TiDB,以及一些调优策略。个人认为,虽然 ARM 在性能上面还赶不上相同配置的 x86,但低功耗,成本这些是一个非常大的优势,加上很多不可说的原因,个人认为会有越来越多的企业使用 ARM,所以这块也会是趋势。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)