GO Scheduler - 0 - 用 CPU utilization 畫正弦波
最近剛好在 FB 看到了這題
幾年前其實有看過, 是 Microsoft 的面試題. - Blog
一時興起, 也用 GO 寫了一個 - github
執行結果:
(mac 下, 用 活動監視器)
原理也很單純:
CPU 使用率按照 sin 分配 busy / idle
( 圖來自上述這個 Blog)
但細部深究的話, 學問也很多, 想要提高精準度, 會涉及到 多執行緒/ 作業系統 的深入了解
例如 GO 在 1.5 之後, GOMAXPROC 已經默認為 CPU 的核數 - runtime.NumCPU()
怎麼確定 這幾個 go routine 執行緒會個別一一配置到不同的 CPU 內核呢,
這就和 GO 的 scheduler 有關.
在網路上看到 Linux scheduler 時 - Linux 系統調度原理解析
也看到了這兩篇文章
The GO scheduler
golang 核武器 - goroutine 調度原理, channel 詳解
之後繼續研究..
幾年前其實有看過, 是 Microsoft 的面試題. - Blog
一時興起, 也用 GO 寫了一個 - github
執行結果:
(mac 下, 用 活動監視器)
原理也很單純:
CPU 使用率按照 sin 分配 busy / idle
( 圖來自上述這個 Blog)
但細部深究的話, 學問也很多, 想要提高精準度, 會涉及到 多執行緒/ 作業系統 的深入了解
例如 GO 在 1.5 之後, GOMAXPROC 已經默認為 CPU 的核數 - runtime.NumCPU()
怎麼確定 這幾個 go routine 執行緒會個別一一配置到不同的 CPU 內核呢,
這就和 GO 的 scheduler 有關.
在網路上看到 Linux scheduler 時 - Linux 系統調度原理解析
也看到了這兩篇文章
The GO scheduler
golang 核武器 - goroutine 調度原理, channel 詳解
之後繼續研究..
留言
張貼留言