了解 Go 運行時的調度模型對於優化應用程式效能至關重要。該模型的一個關鍵方面是 M(機器)和 P(處理器)的分配。
何時建立 M 和 P?
M 處理器在何時創建:
P 處理器是在所有本地運行隊列已滿時創建的,一個goroutine 正在運行,其鄰居goroutine 準備好運行被放入全域隊列中,並且它包含一個p。
阻塞任務和 P 重用
在提供的測試程式碼中,goroutine 執行阻塞資料庫操作。阻塞任務會從 P 個處理器移除 M 個處理器。
在這種情況下,需要建立新的 M 個處理器來處理阻塞的 goroutine。最初的 8 個(虛擬核心數)M 個處理器對於第二批來說是不夠的。新的 M 個處理器將根據需要分配。
其他資源
以上是Go 調度程序何時以及為何分配新的 M 和 P 處理器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!