请教大家一个关于 NUMA 架构下的 2 颗 CPU 使用率不均衡的问题

2023-01-08 16:31:14 +08:00
 zhoudaiyu

  有一台 K8s 的 Node 节点(红帽 7.6 系统、3.10 内核、k8s 版本 1.11 )最近有非流量高峰期 CPU 使用率高经常告警的问题,从 top 整体看进程的 CPU 使用率尚可,但是负载比较高( 40-60 ),Node 节点主要跑一些 tomcat 应用的 Pod (约占该机器总 Pod 数量 85%),还有几个区块链、php 工程等的 Pod ,top 按 1 和 2 分别查看单个 CPU 核心和每颗 CPU 的使用率发现 CPU0 明显高于 CPU1

  挑了一个 tomcat 应用进程看了可以使用多有 CPU 核心,但是内存只允许使用 CPU0 和 CPU1 的(这里不知道理解的对不对),因此猜测有没有可能是因为需要跨 numa node 访问内存导致 2 颗 CPU 使用率有相差?请问大家这个猜测是否有可能,如果有的话,如何验证&如何修复?

1182 次点击
所在节点    问与答
5 条回复
dazhangpan
2023-01-08 17:03:15 +08:00
Mems_allowed_list 是 NUMA 0 & 1 的意思,不是 CPU0 & 1
跨 NUMA 访问内存一般没这么大差别,在工作负载一致的情况下
你这个 Top 里 Node0 si 还多一些,感觉是网络收发包的中断都在 Node0 上,可以 cat 一下 interrupts 看看到底是啥
做个火焰图看看 CPU 上都跑了写啥
另外 load 相对 CPU 数量比较高,建议把 HT 打开
zhoudaiyu
2023-01-08 17:10:48 +08:00
@dazhangpan #1 perf top 看不出来啥,看来还是得弄出来火焰图才行。请问您最后说的 HT 是啥?超线程吗?超线程已经开了目前。
tftk
2023-01-08 17:25:35 +08:00
看下 kubelet 的 cpu-manager-policy 配置是不是有 numa 相关
zhoudaiyu
2023-01-08 17:37:08 +08:00
@tftk #3 策略是 none
zhoudaiyu
2023-01-08 21:11:33 +08:00
@dazhangpan #1 大佬,我错了,这台机器超线程确实被关了,其他的 node 都是打开的,感谢感谢!

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

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

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

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

© 2021 V2EX