公司有一批宝德 Linux 服务器(AMD 的 EPYC-7313 的 cpu)的 cpu 频率很奇怪

2022-10-01 00:53:24 +08:00
 gouchaoer2

公司跑自动驾驶业务购买了一批宝德 Linux 服务器( AMD 的 EPYC-7313 的 cpu ,内存 128G 的 DDR4 ,RTX4000 显卡),再跑一个 cpu+GPU 计算量很高的视频解码任务时,就会偶发 cpu 消耗翻倍导致性能跟不上的情况……

我们一开始认为是宝德 linux 服务器开启了节能模式,如果折腾了 BIOS 啥的,还有用 cpupower frequency-set --governor performance 之类的来调整 CPU 运行模式,但是都没用……

具体现象为,当在跑任务的时候( Freq 一直在 1.2GHz 上不去):

cpupower monitor
    | Mperf              || Idle_Stats
 CPU| C0   | Cx   | Freq  || POLL | C1   | C2
   0| 74.68| 25.32|  1237||  0.82|  4.83| 20.66
  16| 77.94| 22.06|  1207||  0.50|  4.28| 17.86
   1| 77.36| 22.64|  1245||  1.03|  7.63| 15.25
  17| 78.28| 21.72|  1230||  1.10|  8.06| 13.88
   2| 82.80| 17.20|  1240||  0.76|  5.65| 11.79
  18| 79.85| 20.15|  1216||  1.20|  7.47| 13.03
   3| 81.80| 18.20|  1221||  0.73|  4.73| 13.61
  19| 81.68| 18.32|  1235||  1.17| 14.89|  3.64
   4| 77.61| 22.39|  1229||  0.91|  8.26| 14.33
  20| 76.68| 23.32|  1223||  0.97|  8.67| 14.93
   5| 78.99| 21.01|  1218||  1.24|  8.46| 12.82
  21| 77.96| 22.04|  1214||  0.91|  8.77| 13.45
   6| 81.66| 18.34|  1216||  1.10|  7.23| 11.36
  22| 77.06| 22.94|  1238||  0.86| 10.71| 12.48
   7| 82.22| 17.78|  1211||  1.25|  8.27|  9.83
  23| 75.71| 24.29|  1239||  1.01|  7.51| 16.85
   8| 82.42| 17.58|  1215||  1.27|  5.81| 12.03
  24| 80.49| 19.51|  1217||  1.24|  8.50| 11.21
   9| 76.53| 23.47|  1236||  1.26|  7.81| 15.97
  25| 76.46| 23.54|  1235||  1.25| 19.57|  4.35
  10| 80.01| 19.99|  1226||  1.38|  6.25| 13.95
  26| 80.47| 19.53|  1223||  1.05|  6.72| 13.06
  11| 79.42| 20.58|  1218||  1.43|  6.60| 14.39
  27| 78.63| 21.37|  1226||  0.87| 16.38|  5.16
  12| 79.08| 20.92|  1221||  1.02|  6.73| 14.35
  28| 76.58| 23.42|  1203||  0.89|  7.09| 16.52
  13| 78.86| 21.14|  1216||  1.07|  6.56| 14.90
  29| 81.06| 18.94|  1217||  1.23|  6.09| 13.03
  14| 80.43| 19.57|  1219||  1.29|  7.22| 12.54
  30| 77.07| 22.93|  1219||  0.77|  4.97| 18.12
  15| 80.07| 19.93|  1231||  1.18|  8.80| 11.41
  31| 75.65| 24.35|  1218||  1.17|  8.30| 16.31

当任务运行结束之后,Freq 反而上去了:

cpupower monitor
    | Mperf              || Idle_Stats
 CPU| C0   | Cx   | Freq  || POLL | C1   | C2
   0|  0.46| 99.54|  1836||  0.00|  1.20| 98.34
  16|  0.01| 99.99|  1954||  0.00|  0.00| 99.97
   1|  0.18| 99.82|  2214||  0.00|  0.07| 99.73
  17|  0.10| 99.90|  1880||  0.00|  0.00| 99.88
   2|  0.24| 99.76|  2393||  0.00|  1.38| 98.37
  18|  0.04| 99.96|  2300||  0.00|  0.02| 99.92
   3|  0.03| 99.97|  1833||  0.00|  0.00| 99.95
  19|  0.07| 99.93|  1862||  0.00|  0.00| 99.92
   4|  1.18| 98.82|  3511||  0.00|  0.00| 98.80
  20|  0.07| 99.93|  1855||  0.00|  0.00| 99.92
   5|  0.10| 99.90|  2266||  0.00|  0.16| 99.72
  21|  0.01| 99.99|  1898||  0.00|  0.00| 99.98
   6|  0.36| 99.64|  2946||  0.00|  0.10| 99.53
  22|  0.29| 99.71|  1978||  0.00|  0.10| 99.59
   7|  0.14| 99.86|  1906||  0.00|  1.07| 98.77
  23|  0.04| 99.96|  1969||  0.00|  0.00| 99.95
   8|  2.01| 97.99|  3704||  0.00|  0.00| 97.97
  24| 62.50| 37.50|  3700||  0.02| 36.97|  0.00
   9|  0.17| 99.83|  2976||  0.00|  0.08| 99.74
  25|  0.47| 99.53|  3425||  0.00|  1.20| 98.33
  10| 11.70| 88.30|  3702||  0.00|  6.11| 82.09
  26| 22.62| 77.38|  3699||  0.06| 74.15|  2.70
  11|  0.22| 99.78|  3041||  0.00|  1.82| 97.95
  27|  0.05| 99.95|  3016||  0.00|  0.00| 99.95
  12|  0.06| 99.94|  3671||  0.00|  0.00| 99.92
  28|  3.04| 96.96|  3696||  0.00|  6.87| 90.89
  13|  0.03| 99.97|  3003||  0.00|  0.00| 99.95
  29|  0.56| 99.44|  3090||  0.00|  1.40| 98.04
  14|  0.17| 99.83|  3269||  0.00|  0.11| 99.70
  30|  0.21| 99.79|  3175||  0.00|  2.82| 96.98
  15|  0.15| 99.85|  3050||  0.00|  0.14| 99.69
  31|  0.10| 99.90|  3020||  0.00|  0.44| 99.48

如果把相同的 cpu 换到另一个华硕的主板上,在跑任务的时候,Freq 就挺正常的:

 cpupower monitor
    | Mperf              || Idle_Stats
 CPU| C0   | Cx   | Freq  || POLL | C1   | C2
   0| 35.70| 64.30|  2578||  1.78|  1.75| 62.64
  16| 33.20| 66.80|  2525||  1.30|  3.03| 63.82
   1| 34.01| 65.99|  2589||  0.90|  1.20| 64.85
  17| 20.35| 79.65|  2731||  0.36|  1.01| 78.68
   2| 28.49| 71.51|  2613||  0.61|  1.32| 70.24
  18| 24.66| 75.34|  2672||  0.49|  1.74| 73.63
   3| 28.69| 71.31|  2923||  0.52|  1.80| 69.52
  19| 42.85| 57.15|  2694||  0.40|  1.35| 55.81
   4| 41.73| 58.27|  2856||  1.48|  1.73| 56.55
  20| 42.58| 57.42|  2791||  0.79|  1.29| 56.16
   5| 35.88| 64.12|  2808||  0.64|  1.57| 62.56
  21| 43.35| 56.65|  2803||  1.30|  2.93| 53.74
   6| 49.39| 50.61|  2869||  0.45|  0.60| 50.05
  22| 42.41| 57.59|  2910||  0.87|  1.23| 56.40
   7| 47.18| 52.82|  2823||  0.99|  1.33| 51.58
  23| 46.76| 53.24|  2859||  0.99|  1.87| 51.37
   8| 28.51| 71.49|  2744||  0.66|  0.31| 71.19
  24| 22.99| 77.01|  2779||  0.44|  1.32| 75.70
   9| 34.79| 65.21|  2648||  0.76|  2.88| 62.34
  25| 23.86| 76.14|  2727||  0.63|  1.59| 74.60
  10| 29.58| 70.42|  2562||  0.57|  2.24| 68.21
  26| 26.68| 73.32|  2615||  0.58|  2.49| 70.85
  11| 26.21| 73.79|  2758||  0.45|  0.78| 73.00
  27| 22.49| 77.51|  2801||  0.34|  0.65| 76.76
  12| 44.35| 55.65|  2695||  1.43|  2.13| 53.61
  28| 35.95| 64.05|  2825||  1.01|  1.77| 62.33
  13| 37.48| 62.52|  2726||  0.98|  2.34| 60.26
  29| 41.76| 58.24|  2824||  1.33|  3.24| 55.07
  14| 44.83| 55.17|  2755||  1.20|  2.04| 53.14
  30| 40.05| 59.95|  2838||  0.77|  1.51| 58.45
  15| 43.71| 56.29|  2893||  1.15|  2.40| 53.96
  31| 49.34| 50.66|  2834||  0.48|  0.63| 50.09

大家帮忙看看这是为啥呢?已经确认 CPU 和内存都是一样的了,是主板原因还是啥原因?

4410 次点击
所在节点    Linux
31 条回复
cndns
2022-10-02 21:28:37 +08:00
买一个测算功耗表的设备,接宝德主板运行任务用了多少功耗,接华硕主板运行同样的任务用了多少功耗。就可以看出,算力几乎与功耗成正比。算力越大功耗就越高。
fisherwei
2022-10-02 22:02:58 +08:00
你们的解压程序有没有用到 AVX2 ?

看起来像是 bios bug ,找厂商解决一下吧
aaniao002
2022-10-06 13:36:05 +08:00
@GoodRui vs 干嘛非要打开上次一打开的文件,卡退了,然后再也打不开。
keepro
2022-10-08 22:35:11 +08:00
@gouchaoer2 使用 stress -c 32 压 cpu 时,这时候 gpu 应该是闲置状态吧,它的功耗非常小,而这个时候系统供电能力会不会刚刚好够 CPU 用?实际业务是导致 CPU 和 GPU 满载,BIOS 的策略会优先供电给 GPU ,所以 CPU 频率较低,限制了 CPU 。

有条件可以查查电源的额定功率,另外 cpu 的额定功率是 100w ,超频时肯定会超过 100w 。从以上提供的信息看我感觉还是供电不足。

以上猜测仅供参考,感谢各位大佬歪楼,哈哈哈(如果提供的信息没用还是建议问问厂商,一般情况下他们的知识库里都有相关的解决方案,解决不了也会有专门的工程师跟进,相对节省时间)。
kenneth104
2022-10-10 17:29:58 +08:00
早些时候也在折腾 epyc ,但由于穷所以都是二手配件,并且是二代
所以在拿到设备之后,都恢复默认并加载性能模式

但即使这样,这边的 hyper-v 负载还是上不去,最后把 windows server 的电源模式改为“高性能”就没问题了
这个情况在 Xeon 上从来没有过

上面说的寻求厂商帮助,的确是最佳选择,也可以开启 IPMI 让他们帮你整好
gouchaoer2
2022-10-28 11:21:22 +08:00
@geekvcn
@01dscum
@cndns
@keepro
@kenneth104

我今天来更新一下初步结论,原因应该是供应商下载了一个有问题的 ffmpeg 版本,这个 ffmpeg 版本应该只是某个分支的 CI 不稳定调试版本,这个版本的 ffmpeg 用 GPU 解压一个 h264 文件的时候,会打满所有的 cpu 核心,推测是用了多线程优化。但是当我们有 11 路的 h264 视频的时候,这个版本的 ffmpeg 的多线程优化就会有问题,运气不好不太稳定的话就会导致性能不够 fps 有问题,再更换稳定的 ffmpeg 发布版本之后,一切就正常了。楼上一切都让供应商解决,这个问题就不是服务器厂商的原因,而且这是偶发的 bug 特别困难,供应商和之前的解决办法就是力大砖飞,升级 cpu 升级显卡,最后测试还是偶发有问题。然而真的找到了原因,就会发现如果自己不去找原因,供应商根本没有兴趣去找原因
cndns
2022-10-28 12:33:30 +08:00
@gouchaoer2 找到原因就好
keepro
2022-10-28 18:04:14 +08:00
找到原因就好,软件的坑真的只能自己慢慢去找,涉及项太多了
gouchaoer2
2022-11-08 09:49:20 +08:00
@keepro
@cndns
@kenneth104
@keepro
@aaniao002
@fisherwei
@cndns
@01dscum
@GoodRui
@felixcode
@keepro
@Chihaya0824

结帖了,真的是主板供电不行,而且几乎所有的主板供电都有问题,必须手动调大 cTDP 才能正常工作。EPYC 7313 的标称 cTDP 是 180W ,但是 BIOS 里得调到 230W 才行。估计是我们这个主板厂家得问题
gouchaoer2
2022-11-08 09:50:04 +08:00
当然了之前得 ffmpeg 也好、绑定 cpu 核心也好,都是有效的优化,被这个问题搞得脱了一层皮,谢谢大家了
Chihaya0824
2022-11-08 10:04:56 +08:00
恭喜,找到原因就好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/884141

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX