GO協(xié)程調度

調度模型---MPG

image.png
  • M(工作線程,它由系統(tǒng)調度): 一般比P個數多,做一些其他處理(如:runtime包的內置其他任務需要處理,當某個G發(fā)生系統(tǒng)調度產生阻塞時,多出來的M會接管剩余的本地G隊列),必須持有P才可以執(zhí)行代碼.
  • P(處理器,包含運行go代碼的必要資源和調度goroutine的能力): 一般小于等于cpu核數, 除了調度本地的runqueues還會周期性的調用全局的global runqueue
  • G(協(xié)程,由go關鍵字創(chuàng)建的): 分為兩個全局的G隊列(global runqueue) 和每個P自己維護的G隊列(runqueues)GO1.1之前只有全局的G隊列,多個處理器P通過互斥鎖調度,嚴重影響了并發(fā)執(zhí)行效率. 引入局部runqueues后,每個處理器P訪問自己的runqueuues時不需要加鎖,大大提高了效率.

調度策略

  • 隊列輪轉:
    每個處理器P調度自己維護的隊列中的G到M中執(zhí)行,執(zhí)行結束則繼續(xù)調度下一個,另外會定期檢查global runqueue中待運行的G并調度到M執(zhí)行,全局的global runqueue主要來自從系統(tǒng)調用恢復的G.周期性檢測防止G的得不到調度機會.
  • 系統(tǒng)調用
    當某個M所持有的P所調度的G,發(fā)生系統(tǒng)調用時,工作線程將會阻塞,即M將會阻塞,所以M個數要比P多,當發(fā)生阻塞時,在冗余的M中挑選一個接管P調度剩下的G,即做工作交接.當G系統(tǒng)調度結束后,如果有空閑的P,原M則會獲取一個P,繼續(xù)執(zhí)行G,否則將G放入全局的global runqueue,并將M放入到緩存池.
  • 工作量竊取
    即某個處理器P沒有需要調度的協(xié)程時,將從其他處理器中偷取一半的協(xié)程
  • 搶占式調度
    避免某個協(xié)程長時間執(zhí)行,而阻礙其他協(xié)程被調度的機制.在GO1.14之前如果協(xié)程沒有函數調用會無限的占用執(zhí)行權.如
go func() {
    for {
        // 無函數調用
    }
}

直到GO1.14,調度器引入了基于信號的搶占機制,這個問題才得以解決.

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子祈秕,更是在濱河造成了極大的恐慌,老刑警劉巖蓝纲,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異宣鄙,居然都是意外死亡乍恐,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門母剥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滞诺,“玉大人,你說我怎么就攤上這事环疼∶危” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵秦爆,是天一觀的道長。 經常有香客問我憔披,道長等限,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任芬膝,我火速辦了婚禮望门,結果婚禮上,老公的妹妹穿的比我還像新娘锰霜。我一直安慰自己筹误,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布癣缅。 她就那樣靜靜地躺著厨剪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪友存。 梳的紋絲不亂的頭發(fā)上祷膳,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音屡立,去河邊找鬼直晨。 笑死,一個胖子當著我的面吹牛膨俐,可吹牛的內容都是我干的勇皇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼焚刺,長吁一口氣:“原來是場噩夢啊……” “哼敛摘!你這毒婦竟也來了?” 一聲冷哼從身側響起檩坚,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤着撩,失蹤者是張志新(化名)和其女友劉穎诅福,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體拖叙,經...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡氓润,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了薯鳍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咖气。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖挖滤,靈堂內的尸體忽然破棺而出崩溪,到底是詐尸還是另有隱情,我是刑警寧澤斩松,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布伶唯,位于F島的核電站,受9級特大地震影響惧盹,放射性物質發(fā)生泄漏乳幸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一钧椰、第九天 我趴在偏房一處隱蔽的房頂上張望粹断。 院中可真熱鬧,春花似錦嫡霞、人聲如沸瓶埋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽养筒。三九已至,卻和暖如春娄徊,著一層夾襖步出監(jiān)牢的瞬間闽颇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工寄锐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留兵多,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓橄仆,卻偏偏與公主長得像剩膘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子盆顾,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355