操作系统性能优化背景
如何优化
目前主要的优化思路主要是根据系统上部署的软件进行调优以及BIOS调优。
一、BIOS调优:关闭SR-IOV(Single Root I/O Virtualization),关闭虚拟化,Power Regulator:Static High Performance,No C-states模式等等。
还有一点需要注意的是,arm cpu由于numa节点众多,单节点本地内存数量有限,对于大内存访问如数据库等,会存在跨节点内存访问,或者本地内存耗尽导致使用swap的情况,对于大内存访问的应用建议将arm的numa特性关闭。
二、CPU层面的调优:
对于CPU的性能调优,可以从两个角度着手:
1、是找出不必要的工作,降低工作负载;
通过对CPU使用的观测分析,去优化相关应用程序。常用的分析方法可以是“工具法”,“USE方法”。
可以遍历操作系统现有的统计分析工具,如 top\vmstat\mpstat\pidstat\perf 等,排序CPU占用进程、栈跟踪等;
使用USE方法(Utilization Saturation and Errors Method),检查CPU的使用率、饱和度、错误。
基于1、2结果,通过cgroup资源控制,或nice等级设定,按照用户或进程粒度,来压降某些应用的CPU占用,从而控出更多CPU资源。
2、是提高目前CPU的性能上限;
1)固化CPU的频率,为了节能降耗,一些设备在出厂后将CPU模式置为均衡模式,在空闲情况下CPU主频较低,需要在持续的高密集运算后升高频率。在BIOS层面,调整CPU的电源策略调整为Performance(最大性能),此时无动态调频,可保持运行在标称频率。
2)确认是动态调频器是否为性能模式:
cat sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
确认值是否为performance,如果不是,则修改。
3)信创环境下,部分CPU产品的跨路访问延迟问题,相较于Intel,还是比较大的,多核 CPU 服务器,可开启 NUMA 绑核功能。在资源条件充裕的情况下,可考虑使用NUMA绑核有提高性能。通过 BIOS 选项开启绑核支持。在云环境下,需要在平台侧配置绑核;物理机层可通过numactl绑核。
4)减少进程间的CPU抢占,通过taskset与启动参数isolate隔离,将特定的core空闲出来,给指定进程使用。
3、根据不同的芯片考虑不同的优化方案:
下针对飞腾芯片,进行如下优化:
1、关闭SMMU:使用SMMU的地址转换功能,在硬盘达到一定峰值时,可能会出现掉盘问题,需在操作系统层面关闭SMMU。对于个别品牌服务器,开启SMMU可能会导致RAID卡故障,建议在BIOS中关闭SMMU。
2、升级内核
1) SMMU内核补丁:解决设备分组问题,在操作系统下看PCIE设备默认在一个分组,虚拟化设备透传无法实现,打补丁解决PCIE设备在操作系统内分组问题,以支持虚拟化设备透传功能;
2) 增加飞腾芯片支持:在飞腾S2500服务器上主要解决了对双路的支持问题;
3) 飞腾中断堆积补丁:解决在中断数量很多的场景下中断堆积在一个CPU核心的问题,均分中断到其他CPU核心;
4) 飞腾kdump功能开启:解决kdump功能在S2500服务器无法正常使用的问题;
5) 飞腾kdump功能补丁:解决在一定场景下vmcore无法存储的问题,作用为保证kdump的内核在每个socket上都有核心启动;
6) 飞腾S系列服务器中断控制器驱动更新:S系列服务器中断控制器逻辑优化。
3、网卡中断CPU核优化
默认情况下,Linux中断响应会被平均分配到所有CPU核心上,势必会发生写新的数据和指令缓存,并与CPU核心上原有进程产生冲突,造成中断响应延迟,影响进程处理时间。为了解决问题,可以将中断(或进程)绑定到指定CPU核心上,从而提高中断响应(或进程)的处理速度。
相比使用内核的irqbalance(中断均衡)使网卡中断在所有核上进行调度,使用手动绑核将网卡中断绑定在固定的核,能有效改善网络情况。
4、JDK优化
在ARM架构下,推荐使用华为毕昇JDK来代替OpenJDK。毕昇JDK在ARM架构上进行了性能优化和稳定性增强,在ARM架构上更稳定,在大数据等场景下可以获得更好的性能。
声明:个人观点,仅供参考
最后,别忘了点“在看”
。




