场景:在一个 16 核的节点上,一个 Go 服务/容器运行在一个 pod 和另一个容器中,另一个容器分配了 4 个核心,并且该 go 容器设置为使用GOMAXPROCS.
在使用 goroutine 的请求中,Go 程序是否会利用所有可用的 CPU。我认为这取决于GOMAXPROCS,但我不确定它是否只看到在 pod 启动时使用的 1 个核心都在机器上。
理想情况下,我希望 CPU 密集型请求使用所有可用的 CPU,但很难测量运行时实际发生的情况(GKE)。
kube top显示空闲时的预期:
POD NAME CPU(cores) MEMORY(bytes)
pod-go-py go-service 1m 862Mi
pod-go-py py-service 4m 489Mi
fmt.Println(runtime.NumCPU())显示 16 个内核可用。所以我可以相信 Go 程序会在请求中使用它们?我还想象,当我在节点上扩展 Pod 时,我必须注意节流。
慕莱坞森
相关分类