近期协助出现场,解决了一个非常典型的UEFI 启动参数配置不当导致的服务器降效案例。错误的节能参数配置,导致价值几十万的服务器变成龟速服务器,并造成严重的生产事故。
1. 现象
朋友公司近期准备升级2010年就部署的服务器组,新升级的服务器使用了昂贵的大品牌 32 核64线程处理器,最高主频高达2.6GHz。服务器到位后,由于该配置比原先的12核心服务器不知道高了多少个档次,所以没有经过太细致的检测,就直接部署了生产逻辑。同时,鉴于新的服务器很刚,物理服务器机柜缩减了规模,服务器台数降低到1/2.
在新机器上线后,试着打开几个测试客户端,都没有问题。而后,试着运行智能客服、语音代理,也都打开了。可是到了第二天,大量用户反馈,语音客服半天没有反应,游戏的场景以及登入都变得异常缓慢。
运维初步查看日志,主要问题如下:
- 消息队列拥塞,写的没有落的快。
- NPC及智能场景算法在多用户高峰期无法实时,导致大量排队。
- 后台数据库查询缓慢,索引性能直线下降,比旧系统还慢了70%。
第一反应:是盘阵坏了?
2. 分析
- 首先怀疑盘阵损坏,导致kafka、数据库IO瓶颈。但查看指示灯、查询SMART和日志,盘阵并没有问题。
- 查看系统监视器,磁盘IO很空闲,只有5%。延迟很小,固态SSD不是吃素的。
- 既然不是磁盘,那kafka、数据库为什么慢?查询配置,Kafka使用了数据压缩,zstd模式9。可能是CPU来不及,CPU除了Kafka压缩,还有很多游戏的算法工作。
- 查看CPU,64核心竟然跑满了40%多。这种负荷即使在以前老的节点上也没有遇到过。
- 查看CPU状态,惊奇发现主频只有 0.9GHz (该CPU理论上能达到3.1GHz峰值速率)。
3. 初步调整
这个情况运维一看,遇到过啊!就是电源节能的问题。
- 确认操作系统电源模式为主动散热,最大性能。没问题。
- 风扇是否损坏,导致CPU过热保护?查看温度,50度,这,感觉CPU在摸鱼,看似很忙其实没有出力。
- 试着调整各种OS参数,CPU主频始终在1.2GHz以下。
整到这里,运维就晕了。认为是服务器厂商忽悠买家,开始喷模式。老板找到老丁,连夜进驻。
4. 再次查看
老丁首先使用 CPU-Z 跑分,发现这个十几万的CPU跑分还没有我打游戏的i7好。无论多核还是单核,都是龟速。
而后,老丁也认为是电源管理问题,但了解后,认为OS层面已经做得差不多了。那,只剩主板层面的问题了。这种大厂服务器忽悠的可能性很小,更何况不可能每一台都有问题。一定是哪个配置不对。
吐槽一下:其实早该查看UEFI配置,无奈现在的服务器重启至少5分钟起步,老板不让下线,宁可保持着在线用户游戏到晚上再关机,也不能白天下线。
5. 锁定原因
老丁身体不好,等不及夜里3点了。找一个kafka节点服务器重启, 只要factor优于门限,应该不会影响客户体验。说干就干,F1进入 UEFI配置。
UEFI Setup——System Settings——Operating Modes
马上发现问题,系统被设置为节能模式。
直接修改为最大性能,保存重启。
服务器风扇开始暴躁模式100%Max,进入OS后,风扇开始减速,查看CPU主频到3.1GHz,完毕。
如法炮制,夜里三点,重启配置所有服务器全速工作,游戏进程流畅无比。性能比预想的还好,服务器还可以扩充其他用途。
6. 处理器电源管理参数设置
当代服务器和10年前相比,出场配置一般都是“绿色节能”模式。这种模式下,CPU是根本不能跑出满分的。本文为了照顾面子,就不贴图了。不管有没有遇到性能问题,都可以检查一下自己的服务器的CPU主频,是不是设置为节能模式了。个人认为,极端节能模式大可不必,只要允许最简单的动态频率即可。为了单个服务器的节能,导致需要部署更多的服务器来横向扩展,功耗反而更大了。
主要设置:
[BIOS]
Power-Saving Mod: Maximum Performance
Maximum Performance
C-States: Disable
C1 Enhanced Mode : Disable
Energy Efficient Turbo: Disable
如此配置后,在操作系统层面再设置为“Maximum Performance”模式,即可获得最大性能。如果需要动态频率,则适当打开C1等开关。注意的是不管开关如何,所有策略都选择“最佳性能”,就不会太差。
后记
服务器的节能指标固然重要,但为了满足业务流要求,使用单台高性能服务器还是要比横向扩展多台节能服务器要划算。用户在考虑配置时,要根据自身的情况来优化。