Kubernetes

我可以在 CPU 限制設置為 500 毫核的 Pod 中並行執行多個執行緒嗎?

  • June 5, 2021

我有一個多核 Kubernetes 集群,在其中我有多個配置為 CPU 限制為 500 毫核的 Pod:

       resources:
         limits:
           cpu: "500m"

在一個 pod 中是否可以有多個執行緒並行執行(同時,在同一時刻)?

據我了解,當限制小於 1000 毫核時,pod 永遠不會有多個執行緒並行執行。這是正確的嗎?

是的,Kubernetes 中的 CPU 限制是使用 Linux CPU 配額子系統實現的(至少在 Linux 上,在 Windows 上不確定)。該系統的工作原理是為 cgroup 提供允許執行的時間片總數,並每隔幾毫秒重新填充一次。如果一個任務(執行緒、程序)被標記為可執行並且它所在的組具有可用的配額令牌,那麼它將像往常一樣執行(並且儲存桶減少)。如果沒有令牌,則它不會執行並發出 timeslice_exceeded 事件。

將限制設置為 500m 意味著令牌重新填充速率將平均為每 1 秒掛鐘時間允許的 0.5 秒執行時間。但是,如果您有一百萬個核心,那麼如果您的任務都是可執行的,那麼您可以立即使用所有這些令牌。

引用自:https://serverfault.com/questions/1065763