亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Kubernetes 中,當另一個容器正在使用內核時,Go 容器是否會使用所有內核

在 Kubernetes 中,當另一個容器正在使用內核時,Go 容器是否會使用所有內核

Go
藍山帝景 2022-05-23 17:50:56
場景:在一個 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           862Mipod-go-py  py-service      4m           489Mifmt.Println(runtime.NumCPU())顯示 16 個內核可用。所以我可以相信 Go 程序會在請求中使用它們?我還想象,當我在節點上擴展 Pod 時,我必須注意節流。
查看完整描述

1 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

容器將看到機器上的所有核心。Kubernetes 的限制是設置 cgroup,告訴內核容器可以消耗多少 CPU。這意味著雖然 Go 會看到所有內核,但當他試圖超過限制時,內核會限制它。這實際上是一件壞事。您希望 Go 了解 cgroups 并適當地擴展 GOMAXPROCS。為此,您可以使用

看起來你想要的是超額認購。在第一個容器上將請求設置為非常低并限制為 4 個核心。將請求設置得非常低,但在第二個時限制為 16 個核心(或根本不設置限制)。這樣,第二個容器將能夠利用所有 CPU。


查看完整回答
反對 回復 2022-05-23
  • 1 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號