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 詳解

之後繼續研究..



留言

熱門文章