服务器性能模式调节分析

集群管理 0 6423 跨栏背心儿 收藏

1 前提:

本文所述测试环境:

硬件:DELL R740

系统:CentOS 7.9.2009

 服务器性能模式调节的几种方法:

l  通过BIOS调节性能模式

l  通过系统工具调节服务器性能模式

 2 通过BIOS调节性能模式

BIOS设置:

F2 -> SYSTEM BIOS Settings -> System Profile Settings -> System Profile (一共五种,我们的目的是用内建的前四种模式筛选最优模式)

       我们可以在设置中看到如下几种模式:

1.jpg

 下面来介绍一下各种模式的含义:

(1)Performance Per Watt(DAPC)    性能功耗比优化,DAPC是戴尔自带的活动电源控制器,默认初始化配置

(2)Performance Per Watt(OS)    性能功耗比优化,OS表示由系统接管服务器电源管理

(3)Performance                               性能模式

(4)Workstation Performance          基于工作站的性能模式,与Performance的差别仅为上图中C State值的不同

(5)Custom                                      自定义

 以上这几种除(3)和(5)之外,DELL官网上由相应的能耗和运算速度对比,网址如下:

https://downloads.dell.com/solutions/general-solution-resources/White%20Papers/SystemProfileEnergyPerformanceComparison_v1p0.pdf


2.jpg

     从DELL官方给出的数据来看,除idle power结果外大致测试数值基本持平,但服务器处于空闲状态时,Workstation Performance模式能耗为DAPC模式的2倍多,Performance模式的能耗为DAPC模式的3倍多。我们可以暂且根据上述数值推断,官方应该是建议使用Performance Per Watt(DAPC)模式,但对于IC行业实际使用来说,多数用户可能更倾向于Performance模式,以上数值仅供参考吧。

 一些其他参数的含义(这里引用其他文章中的描述):

Intel C-State Tech是intel的节约能耗,基于Intel组件基础上的一项深度节能技术。此技术有独立的控制标准,具体的控制由BIOS来定。操作系统运行到耗能高或CPU的使用频率高等时候此项功能可对能耗和CPU核心进行适当的调节,以达到节约能耗的目的。

Intel E0Stepping的CPU在开启C-State后,除了CPU自行省电以外,北桥与内存本身都会被CPU要求进入省电模式。某些情况下,迅速的改变耗能对于各种配件的要求程度不一样。当某一配件不能很快达到Intel C-State Tech所要求的状态时就有可能出现死机的情况。因为这一技术是基于Intel组件之上,所以可能与其它的配件产生冲突。从而可能用着用着就会死机,要么突然蓝屏,要么突然黑屏,要么就是画面定格死在那里,键鼠没响应,但是关闭后则一切正常

C1E是增强型空闲电源管理状态转换(Enhanced Halt State)。它是一种可以令CPU省电的功能,开启后,CPU在空闲轻负载状态可以降低工作电压与倍频,这样就达到了省电的目的。

CPU根据负载自动调节性能,也可以通过用户自定义。建议使用performance 模式,主要是考虑到服务器通常都是应用在高性能上,所以设置成高性能后使用服务器的应用更加稳定.

 参考链接:

https://www.fasteda.cn/post/223.html
https://www.fasteda.cn/post/224.html

3 通过系统工具调节服务器性能模式

通常情况下,当BIOS中设置为Performance模式后,cpu运行频率应该在最高,但实际测试发现在系统中如不做特殊设定(如自带的cpupowerutils服务默认为powersave模式,tuned-adm处于off的情况下),服务器空闲时,CPU运行频率依然会处于最低阈值。

3.jpg

此图为BIOS设置为Performance,系统(CentOS 7.9.2009)空闲时的核心频率

 所以我们需要配合以系统层面对CPU运行频率的设定,来保证CPU运行在高频状态下,以保证系统运行各类EDA工具时的稳定性(有待考证),仅对物理服务器生效,虚拟机实测不支持(CPU直通情况未做测试)。

     我们这里一共介绍两个系统下几种工具的使用

CentOS 7.9.2009

以下数据在服务器空载/满载情况下均适用。

(1) cpuspeed

此服务在CentOS7上已经不再使用,但在CentOS6上可以使用。

参阅部分文章同时实际测试发现BIOS设置成performance时,开启cpuspeed服务失败,/var/log/messages中报错:p4-clockmod: Warning: EST-capable CPU detected. The acpi-cpufreq module offers voltage scaling in addition to frequency scaling. You should use that instead of p4-clockmo。

 CentOS6生命周期已终结,所以在此大家只需了解,无需过多深入研究。

参考连接:

https://cloud.tencent.com/developer/article/2009372

(2) cpupowerutils

此工具在CentOS 6和CentOS 7上都有,RHEL6.9及以上 intel_pstate驱动程序缺少对Intel Family 6的支持在同时CentOS 6.10的生命周期已经截止(Google中搜索RHEL Life-cycle擦看具体信息),自行考虑是否继续使用吧。

yum install cpupowerutils –y          #安装cpupowerutils
systemctl start cpupower              #
开启cpupower服务,实测这步可有可无

CentOS7下该服务安装后默认使用powersave模式

cpupower frequency-set –g performance   #设置cpu工作模式,默认所有核心/线程生效(推荐)
cpupower –c all frequency-set –g performance         #
设置所有核心/线程工作模式
cpupower –c 0 frequency-set –g performance           #
设置单个cpu核心工作模式
cpupower frequency-info           #查看当前工作模式、当前工作频率以及工作频率范围(推荐)
cpupower –c all frequency-info    #
查看所有核心/线程当前工作模式、当前工作频率以及工作频率范围

4.jpg

cpupower frequency-info命令执行结果

上图中几个参数释义:

hardware limit 1.20 GHz – 4.20 GHz:cpu支持的频率范围(因在BIOS里默认Performance开启了Turbo Boost,所以这里的上限阈值是通常我们所说的睿频)

available cpufreq governors: performance powersave:CPU调控的两种工作模式,performance和powersave模式

current policy:当前CPU工作模式为Performance

current CPU frequency: 4.10 GHz (asserted by call to hardware):当前CPU的频率(可看到值为睿频值)

 结合以上信息:

一是可以上网找对应的CPU参数做对比;

二是可以与lscpu命令所列出的cpu信息做一下对比:

由lscpu命令可看到此CPU主频3.30GHz,当前频率4099.822GHz,频率范围为1200.0000GHz ~ 4200.0000GHz

也就是说,当BIOS为Performance模式时,同时系统下使用cpupowerutils配置为Performance模式时,无论空载/满载工况下,CPU运行频率均为最高,但实际频率会和睿频有微小差距,比如会有0.1~0.3GHz的差值。

5.jpg

 也可使用如下命令查看cpu当前运行频率:

grep –i mhz /proc/cpuinfo

6.jpg

上图为grep –I mhz /proc/cpuinfo的结果,仅截取部分

 使用如下命令查看:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

7.jpg

上图为cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor的结果,仅截取部分

 参考链接:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/performance_tuning_guide/s-cpu-cpufreq
https://www.linuxquestions.org/questions/linux-newbie-8/cpu-frequency-scale-4175535615/
https://access.redhat.com/zh_CN/support/policy/updates/errata
https://support.lenovo.com/be/th/solutions/ht505201-rhel69-error-inserting-intel_pstate-on-certain-intel-xeon-scalable-processors-lenovo-thinksystem
https://blog.csdn.net/zyxpaomian/article/details/113316580

(3) tuned/tuned-adm

在cpupowerutils的参考链接里推荐了tuned/tuned-adm,所以我们也看一下这个工具。

yum install tuned –y   #安装tuned/tuned-adm
systemctl start tuned  #
开启tuned服务

tuned其实与cpupowerutils在使用上差别不大,都是以指定预设模式的方法调整CPU工作模式,但tuned的模式更丰富,貌似其中的virtual-guest和virtual-host模式对虚拟化有所优化。

 Tuend实际的操作命令都是tuned-adm

tuned-adm list           #列出tuned支持的模式

8.jpg

 主要模式详解:

throughput-performance吞吐量性能

服务器配置文件的重点在于提高吞吐量。这是默认配置文件,并是为大多数系统推荐的。

通过设置 intel_pstate 和 max_perf_pct=100,与节约能耗相比,该配置文件更注重性能表现。它能启用透明大页面,使用 cpupower 来设置 performance CPU 频率管理器,并将输入/输出调度器设置为 deadline。它同样将 kernel.sched_min_granularity_ns 设置为 10 μ s,将 kernel.sched_wakeup_granularity_ns 设置为 15 μ s,以及将 vm.dirty_ratio 设置 40%。
latency-performance延迟性能

服务器配置文件的重点在于降低延迟。该配置文件是为延迟敏感的工作负载所推荐的,其中工作负载会从 c- 状态调整和透明大页面增加的 TLB 高效性中获益。

通过设置 intel_pstate 和 max_perf_pct=100,与节约能耗相比,该配置文件更注重性能表现。它能启用透明大页面,使用 cpupower 来设置 performance CPU 频率管理器,并请求值为 1 的 cpu_dma_latency。
network-throughput网络延迟

服务器配置文件的重点在于降低网络延迟。

通过设置 intel_pstate 和 max_perf_pct=100,与节约能耗相比,该配置文件更注重性能表现。它禁用透明大页面以及自动 NUMA 平衡 。它使用 cpupower 来设置 performance CPU 频率管理器,并请求值为 1 的 cpu_dma_latency。它同样将 busy_read 和 busy_poll 的时间设置为 50 μ s,并将 tcp_fastopen 设置为 3。
virtual-guest虚拟来宾

虚拟来宾是一个重点在于优化红帽企业版 Linux 7 虚拟机器性能的配置文件。

通过设置 intel_pstate 和 max_perf_pct=100,与节约能耗相比,该配置文件更注重性能表现。它降低了虚拟内存的交换。启用透明大页面,使用 cpupower 来设置 performance CPU 频率管理器。它也能将 kernel.sched_min_granularity_ns 设置为 10 μ s,kernel.sched_wakeup_granularity_ns 设置为 15 μ s,以及将 vm.dirty_ratio 设置为 40%。
virtual-host虚拟-主机

虚拟主机是一个重点在于优化红帽企业版Linux 7虚拟主机的性能的配置文件。

通过设置 intel_pstate 和 max_perf_pct=100,相比节约能耗,该配置文件更注重性能表现。它降低了虚拟内存的交换。它能启用透明大页面,更频繁地重写脏页到磁盘。使用 cpupower 来设置 performance CPU 频率管理器,它将 kernel.sched_min_granularity_ns 设置为 10 μ 秒,kernel.sched_wakeup_granularity_ns 设置为 15 μ 秒,kernel.sched_migration_cost 设置为 5 μ 秒,以及 vm.dirty_ratio 设置为 40%

 模式如何选择可以参考下图:

9.jpg

由图可看到,latency-Performance模式应该是最适合我们的

tuned-adm profile latency-performance   #设置为latency-performance模式
tuned-adm active                        #
激活当前模式
tuned-adm off                           #
关闭当前模式(一般情况下不用)

实测过程中发现,tuned与cpupowerutils两者存在冲突,比如说将tuned模式设置为balance时,cpupowerutils的模式也会改为powersave,所以这两个工具之间择一即可

 参考链接:

https://access.redhat.com/documentation/enus/red_hat_enterprise_linux/6/html/performance_tuning_guide/main-analyzeperf-tuned
https://www.yumpu.com/en/document/read/51869986/performance-analysis-and-tuning-a-part-2-red-hat-summit
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/virtualization_tuning_and_optimization_guide/sect-virtualization_tuning_optimization_guide-tuned-tuned_and_tunedadm
https://blog.csdn.net/Perfect886/article/details/119936267
https://www.jianshu.com/p/d8fc2341e312

4 总结

       总结来说,如果想要用最简单的方法实现物理服务器的CPU性能最大化,可采取的方法是:

1、BIOS里设置Performance,同时设置cpupowerutils模式为performance

2、BIOS里设置Performance,同时设置tuned模式为latency-performance

     闲来之际想起来这么个问题才研究了一下,貌似意义其实也不大,因为主流方法也是如此。本人才疏学浅,如有理解错误或描述谬误的地方,请专家批评指正,不胜感激。

 

 

 


相关推荐:

网友留言:

您需要 登录账户 后才能发表评论

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码