runnext里面的G为什么不是放在本地队列

runnext里面的G为什么不是放在本地队列

根据局部原理,为什么会把runnext里面的G一起放在全局队列里面?理论上来说runnext里面的G放在本地队列不是更符合局部性原理么

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
Xargin 2021-05-18 16:00:17

我个人的猜测:

  1. 局部队列满的时候,说明系统整体的压力已经比较大了,至少是当前的 p 压力很大

  2. 这时候把踢出的 g 放进全局队列,可能有更多的机会被其它 p 执行,如果待在本地队列,可能被前面的慢任务堵着

不过真实的原因只能去问问官方了

  • 第2种解释还不是很明白,如果是放在全局队列中,为什么有更多机会被其它P执行了?其他P如果空闲,执行work stealing也是从其他P的local queue队头偷,放在loacl更容易被偷走执行;放在全局中唯一被执行的可能性是其他P执行了61徇环到全局中去拿一次而已

    2021-05-20 16:17:07
  • work stealing 的优先级在从全局队列里拿之后呢,


    这个课程的动画应该画的挺清楚的,你需要手动点点玩玩

    2021-05-20 17:00:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师