我在相同底层硬件物理环境(Intel和海光都分别测了)下分别默认安装Centos7和国产龙蜥操作系统,用unixbench进行测试,Centos7得分能高出10%~30%,在其他国产操作系统上可能也有类似情况,有没有什么相对通用的方法或者配置可以提升操作系统对硬件资源的有效利用,提高这理论上的跑分,争取在跑分和实际体验中至少能赢一个。
对于CPU的性能调优,可以从两个角度着手:
一是找出不必要的工作,降低工作负载;
二是提高目前CPU的性能上限;
对于第一种情况,通过对CPU使用的观测分析,去优化相关应用程序。常用的分析方法可以是“工具法”,“USE方法”[1]。
1)可以遍历操作系统现有的统计分析工具,如top\vmstat\mpstat\pidstat\perf等,排序CPU占用进程、栈跟踪等;
2)使用USE方法(Utilization Saturation and Errors Method),检查CPU的使用率、饱和度、错误。
3)基于1、2结果,通过cgroup资源控制,或nice等级设定,按照用户或进程粒度,来压降某些应用的CPU占用,从而控出更多CPU资源。
第二种情况,有如下几种方式:
1)固化CPU的频率,为了节能降耗,一些设备在出厂后将CPU模式置为均衡模式,在空闲情况下CPU主频较低,需要在持续的高密集运算后升高频率。在BIOS层面,调整CPU的电源策略调整为Performance(最大性能),此时无动态调频,可保持运行在标称频率。
2)第一步完成后,确认是动态调频器是否为性能模式:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
确认值是否为performance,如果不是,则修改。
3)xc环境下,部分CPU产品的跨路访问延迟问题,相较于Intel,还是比较大的,多核 CPU 服务器,可开启 NUMA 绑核功能。在资源条件充裕的情况下,可考虑使用NUMA绑核有提高性能。通过 BIOS 选项开启绑核支持。在云环境下,需要在平台侧配置绑核;物理机层可通过numactl绑核。
4)减少进程间的CPU抢占,通过taskset与启动参数isolate隔离,将特定的core空闲出来,给指定进程使用;
参考文献:
1.Brendan gregg.性能之巅[M].第2版.徐章宁,吴寒思,余亮译.北京:电子工业出版社,2022年:242-250
优化操作系统层面提供的CPU性能可以通过以下方式实现:
针对这个问题,我可以提供以下几个方面的建议:
总之,要提高操作系统对硬件资源的有效利用,需要从多个方面入手,包括系统调优、CPU性能优化、硬件升级、选择合适的操作系统以及使用优化工具等。