X86 的比较通用,资料也比较多
arm 架构的比较少
1、基础部分聚焦在操作系统的兼容(特别是硬件驱动,例如网络、硬盘、各种接口等),同时注意不同版本的基础软件优化(例如数据库、中间件等)
2、进阶的部分包括内核优化(内核驱动精简等)、编译环境(例如libc++等中间库)和对应的优化版本等,动态链接文件等
3、对应的应用层面的优化。包括编译环境、动态库引用、中间件依赖、底层硬件驱动等体系化考虑
目前主要的优化思路主要是根据系统上部署的软件进行调优以及BIOS调优。
BIOS调优:关闭SR-IOV(Single Root I/O Virtualization),关闭虚拟化,Power Regulator:Static High Performance,No C-states模式等等。
还有一点需要注意的是,arm cpu由于numa节点众多,单节点本地内存数量有限,对于大内存访问如数据库等,会存在跨节点内存访问,或者本地内存耗尽导致使用swap的情况,对于大内存访问的应用建议将arm的numa特性关闭。
针对ARM和x86这两种不同的硬件架构,操作系统的性能优化可以采取一系列的措施。
对于ARM架构,可以采用以下几种优化方法:
我理解这里的硬件架构,是指CPU架构,那就包括了x86、arm、c86、MIPS等区别。
不同芯片厂家会根据自身产品特性,不定期发布补丁,各操作系统厂商应及时将补丁融合到内核版本中,以修复产品缺陷。
另外各芯片推荐的操作系统配置,可根据实际在生产中应用。
具体来说,针对飞腾芯片,可以进行如下优化:
一、关闭SMMU
如果使用SMMU的地址转换功能,在硬盘达到一定峰值时,可能会出现掉盘问题,需在操作系统层面关闭SMMU。
对于个别品牌服务器,开启SMMU可能会导致RAID卡故障,建议在BIOS中关闭SMMU。
关闭SMMU具体操作方法如下:
操作系统层面关闭SMMU:
在 /etc/default/grub里配置iommu.passthrough=1
cat /etc/default/grub | grep iommu
GRUB_CMDLINE_LINUX="crashkernel=512M rd.lvm.lv=vg00/lv_root rd.lvm.lv=vg00/lv_swap iommu.passthrough=1 transparent_hugepage=never console=ttyS0,115200n8 console=tty0"
二、升级内核
1) SMMU内核补丁:解决设备分组问题,在操作系统下看PCIE设备默认在一个分组,虚拟化设备透传无法实现,打补丁解决PCIE设备在操作系统内分组问题,以支持虚拟化设备透传功能;
2) 增加飞腾芯片支持:在飞腾S2500服务器上主要解决了对双路的支持问题;
3) 飞腾中断堆积补丁:解决在中断数量很多的场景下中断堆积在一个CPU核心的问题,均分中断到其他CPU核心;
4) 飞腾kdump功能开启:解决kdump功能在S2500服务器无法正常使用的问题;
5) 飞腾kdump功能补丁:解决在一定场景下vmcore无法存储的问题,作用为保证kdump的内核在每个socket上都有核心启动;
6) 飞腾S系列服务器中断控制器驱动更新:S系列服务器中断控制器逻辑优化。
三、网卡中断绑核优化
默认情况下,Linux中断响应会被平均分配到所有CPU核心上,势必会发生写新的数据和指令缓存,并与CPU核心上原有进程产生冲突,造成中断响应延迟,影响进程处理时间。为了解决问题,可以将中断(或进程)绑定到指定CPU核心上,从而提高中断响应(或进程)的处理速度。
相比使用内核的irqbalance(中断均衡)使网卡中断在所有核上进行调度,使用手动绑核将网卡中断绑定在固定的核,能有效改善网络情况。
四、JDK优化
在ARM架构下,推荐使用华为毕昇JDK来代替OpenJDK。毕昇JDK在ARM架构上进行了性能优化和稳定性增强,在ARM架构上更稳定,在大数据等场景下可以获得更好的性能。2023版开源软件目录清单推荐使用BishengJDK8u292和BishengJDK11.0.11版本,具体使用版本参考最新开源软件目录清单。
在银行行业中,支持ARM和x86架构的具体优化措施如下: