使用背景:
我们在部署服务器基础环境的时候要求服务器关闭节能模式,采用CPU高性能模式,通过tuned-adm profile throughput-performance
和tuned-adm active
将Linux配置为高性能模式,通过cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
检查配置也是采用performance。但是通过cat /proc/cpuinfo |grep -i mhz
查看到CPU频率没有跑满CPU基准频率,故还是处于节能模式,如下图。
这就可能是BIOS设置有问题,比如H3C服务器关闭C状态节能模式,还需要将Monitor/Mwait指令关闭,否则服务器CPU并不能满频率运行,因为服务数量较多需要批量检查,可以通过下面的脚本进行检查。
Shell检查脚本:
脚本设置如果CPU频率超过2200Mhz则输出Pass,该值可以根据实际环境修改。
#!/bin/bash
vendor=$(dmidecode -t 1 | grep -Ei "Manufacturer")
if [[ $vendor == *H3C* ]];then
BMC_IP=$(ipmitool lan print 8 | grep -E "IP\s+Address\s+:" | awk '{print $4}')
else
BMC_IP=$(ipmitool lan print | grep -E "IP\s+Address\s+:" | awk '{print $4}')
fi
#厂商与型号获取
Vendor_out=$(dmidecode -t 1 | grep -Ei "Manufacturer" |cut -d " " -f 2)
Product=$(dmidecode -t 1 |grep "Product Name" |cut -d ":" -f 2)
#管理地址获取
bond0_net_01=`ls /etc/sysconfig/network-scripts/ifcfg-bond0.* | awk '{print $0}' |sed -n "1p"`
[ -e "$bond0_net_01" ] && bond0_ip=`cat $bond0_net_01 |grep IPADDR |tr -d '\r'|cut -d "=" -f 2`
rm -rf /tmp/CPU_mhz.tmp
sleep 3
until ((i>10))
do
cat /proc/cpuinfo |grep -i mhz | awk '{print $4}' |cut -d "." -f 1 >> /tmp/CPU_mhz.tmp
let sum+=i
let ++i
done
Min_CPU_MHZ=`cat /tmp/CPU_mhz.tmp | awk 'BEGIN {min = 65536} {if ($1+0 < min+0) min=$1} END {print min}'`
#CPU_mhz=`cat /proc/cpuinfo |grep -i mhz | awk '{print $4}' |cut -d "." -f 1`
#获取CPU频率列表
#Min_CPU_MHZ=`echo $CPU_mhz | awk 'BEGIN {min = 65536} {if ($1+0 < min+0) min=$1} END {print min}'`
#获取CPU最小频率
[ "$Min_CPU_MHZ" -ge 2200 ] && Chack_out="\033[32m Pass \033[0m" || Chack_out="\033[31m Fail \033[0m"
echo -e "服务器管理网IP:$bond0_ip IPMI地址:$BMC_IP 厂商:$Vendor_out 型号:$Product CPU最小频率:$Min_CPU_MHZ MHZ 结果:$Chack_out"