1 前提:
本文所述测试环境:
硬件:DELL R740
系统:CentOS 7.9.2009
服务器性能模式调节的几种方法:
l 通过BIOS调节性能模式
l 通过系统工具调节服务器性能模式
2 通过BIOS调节性能模式
BIOS设置:
F2 -> SYSTEM BIOS Settings -> System Profile Settings -> System Profile (一共五种,我们的目的是用内建的前四种模式筛选最优模式)
我们可以在设置中看到如下几种模式:
下面来介绍一下各种模式的含义:
(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
从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运行频率依然会处于最低阈值。
此图为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 #查看所有核心
/
线程当前工作模式、当前工作频率以及工作频率范围
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的差值。
也可使用如下命令查看cpu当前运行频率:
grep –i mhz /proc/cpuinfo
上图为grep –I mhz /proc/cpuinfo的结果,仅截取部分
使用如下命令查看:
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
上图为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支持的模式
主要模式详解:
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%
模式如何选择可以参考下图:
由图可看到,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
闲来之际想起来这么个问题才研究了一下,貌似意义其实也不大,因为主流方法也是如此。本人才疏学浅,如有理解错误或描述谬误的地方,请专家批评指正,不胜感激。
网友留言: