Go 语言在并发编程方面有强大的能力,这离不开语言层面对并发编程的支持。本节会介绍 Go 语言运行时调度器的实现原理,其中包含调度器的设计与实现原理、演变过程以及与运行时调度相关的数据结构。
谈到 Go 语言调度器,我们绕不开的是操作系统、进程与线程这些概念,线程是操作系统调度时的最基本单元,而 Linux 在调度器并不区分进程和线程的调度,它们在不同操作系统上也有不同的实现,但是在大多数的实现中线程都属于进程:
![](data:image/png;base64,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)
图 6-25 进程和线程
多个线程可以属于同一个进程并共享内存空间。因为多线程不需要创建新的虚拟内存空间,所以它们也不需要内存管理单元处理上下文的切换,线程之间的通信也正是基于共享的内存进行的,与重量级的进程相比,线程显得比较轻量。
虽然线程比较轻量,但是在调度时也有比较大的额外开销。每个线程会都占用 1M 以上的内存空间,在切换线程时不止会消耗较多的内存,恢复寄存器中的内容还需要向操作系统申请或者销毁资源,每一次线程上下文的切换都需要消耗 ~1us 左右的时间1,但是 Go 调度器对 Goroutine 的上下文切换约为 ~0.2us,减少了 80% 的额外开销2。
![](data:image/png;base64,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)
图 6-26 线程与 Goroutine
Go 语言的调度器通过使用与 CPU 数量相等的线程减少线程频繁切换的内存开销,同时在每一个线程上执行额外开销更低的 Goroutine 来降低操作系统和硬件的负载。
6.5.1 设计原理
今天的 Go 语言调度器有着优异的性能,但是如果我们回头看 Go 语言的 0.x 版本的调度器会发现最初的调度器不仅实现非常简陋,也无法支撑高并发的服务。调度器经过几个大版本的迭代才有今天的优异性能,历史上几个不同版本的调度器引入了不同的改进,也存在着不同的缺陷:
1.单线程调度器 · 0.x
1.1只包含 40 多行代码;
1.2程序中只能存在一个活跃线程,由 G-M 模型组成;
2.多线程调度器 · 1.0
2.1允许运行多线程的程序;
2.2全局锁导致竞争严重;
3.任务窃取调度器 · 1.1
3.1引入了处理器 P,构成了目前的 G-M-P 模型;
3.2在处理器 P 的基础上实现了基于工作窃取的调度器;
3.3在某些情况下,Goroutine 不会让出线程,进而造成饥饿问题;
3.4时间过长的垃圾回收(Stop-the-world,STW)会导致程序长时间无法工作;
4.抢占式调度器 · 1.2 ~ 至今
4.1基于协作的抢占式调度器 - 1.2 ~ 1.13
通过编译器在函数调用时插入抢占检查指令,在函数调用时检查当前 Goroutine 是否发起了抢占请求,实现基于协作的抢占式调度;
Goroutine 可能会因为垃圾回收和循环长时间占用资源导致程序暂停;
4.2基于信号的抢占式调度器 - 1.14 ~ 至今
.实现基于信号的真抢占式调度;
.垃圾回收在扫描栈时会触发抢占调度;
.抢占的时间点不够多,还不能覆盖全部的边缘情况;
5.非均匀存储访问调度器 · 提案
5.1对运行时的各种资源进行分区;
5.2实现非常复杂,到今天还没有提上日程;
除了多线程、任务窃取和抢占式调度器之外,Go 语言社区目前还有一个非均匀存储访问(Non-uniform memory access,NUMA)调度器的提案。在这一节中,我们将依次介绍不同版本调度器的实现原理以及未来可能会实现的调度器提案。
单线程调度器
0.x 版本调度器只包含表示 Goroutine 的 G 和表示线程的 M 两种结构,全局也只有一个线程。我们可以在 clean up scheduler 提交中找到单线程调度器的源代码,在这时 Go 语言的调度器还是由 C 语言实现的,调度函数 runtime.scheduler:9682400 也只包含 40 多行代码 :
static void scheduler(void) {
G * gp;
lock( & sched);
if (gosave( & m - > sched)) {
lock( & sched);
gp = m - > curg;
switch (gp - > status) {
case Grunnable:
case Grunning:
gp - > status = Grunnable;
gput(gp);
break;
...
}
notewakeup( & gp - > stopped);
}
gp = nextgandunlock();
noteclear( & gp - > stopped);
gp - > status = Grunning;
m - > curg = gp;
g = gp;
gogo( & gp - > sched);
}
该函数会遵循如下的过程调度 Goroutine:
1.获取调度器的全局锁;
2.调用 runtime.gosave:9682400 保存栈寄存器和程序计数器;
3.调用 runtime.nextgandunlock:9682400 获取下一个需要运行的 Goroutine 并解锁调度器;
4.修改全局线程 m 上要执行的 Goroutine;
5.调用 runtime.gogo:9682400 函数运行最新的 Goroutine;
虽然这个单线程调度器的唯一优点就是能运行,但是这次提交已经包含了 G 和 M 两个重要的数据结构,也建立了 Go 语言调度器的框架。
多线程调度器
Go 语言在 1.0 版本正式发布时就支持了多线程的调度器,与上一个版本几乎不可用的调度器相比,Go 语言团队在这一阶段实现了从不可用到可用的跨越。我们可以在 pkg/runtime/proc.c 文件中找到 1.0.1 版本的调度器,多线程版本的调度函数 runtime.schedule:go1.0.1 包含 70 多行代码,我们在这里保留了该函数的核心逻辑:
static void schedule(G * gp) {
schedlock();
if (gp != nil) {
gp - > m = nil;
uint32 v = runtime· xadd( & runtime· sched.atomic, -1 << mcpuShift);
if (atomic_mcpu(v) > maxgomaxprocs)
runtime·
throw ("negative mcpu in scheduler");
switch (gp - > status) {
case Grunning:
gp - > status = Grunnable;
gput(gp);
break;
case ...:
}
} else {
...
}
gp = nextgandunlock();
gp - > status = Grunning;
m - > curg = gp;
gp - > m = m;
runtime· gogo( & gp - > sched, 0);
}
整体的逻辑与单线程调度器没有太多区别,因为我们的程序中可能同时存在多个活跃线程,所以多线程调度器引入了 GOMAXPROCS 变量帮助我们灵活控制程序中的最大处理器数,即活跃线程数。
多线程调度器的主要问题是调度时的锁竞争会严重浪费资源,Scalable Go Scheduler Design Doc 中对调度器做的性能测试发现 14% 的时间都花费在 runtime.futex:go1.0.1 上3,该调度器有以下问题需要解决:
1.调度器和锁是全局资源,所有的调度状态都是中心化存储的,锁竞争问题严重;
2.线程需要经常互相传递可运行的 Goroutine,引入了大量的延迟;
3.每个线程都需要处理内存缓存,导致大量的内存占用并影响数据局部性;
4.系统调用频繁阻塞和解除阻塞正在运行的线程,增加了额外开销;
这里的全局锁问题和 Linux 操作系统调度器在早期遇到的问题比较相似,解决的方案也都大同小异。
任务窃取调度器
2012 年 Google 的工程师 Dmitry Vyukov 在 Scalable Go Scheduler Design Doc 中指出了现有多线程调度器的问题并在多线程调度器上提出了两个改进的手段:
1.在当前的 G-M 模型中引入了处理器 P,增加中间层;
2.在处理器 P 的基础上实现基于工作窃取的调度器;
基于任务窃取的 Go 语言调度器使用了沿用至今的 G-M-P 模型,我们能在 runtime: improved scheduler 提交中找到任务窃取调度器刚被实现时的源代码,调度器的 runtime.schedule:779c45a 在这个版本的调度器中反而更简单了:
static void schedule(void) {
G *gp;
top:
if(runtime·gcwaiting) {
gcstopm();
goto top;
}
gp = runqget(m->p);
if(gp == nil)
gp = findrunnable();
...
execute(gp);
}
1.如果当前运行时在等待垃圾回收,调用 runtime.gcstopm:779c45a 函数;
2.调用 runtime.runqget:779c45a 和 runtime.findrunnable:779c45a 从本地或者全局的运行队列中获取待执行的 Goroutine;
3.调用 runtime.execute:779c45a 在当前线程 M 上运行 Goroutine;
当前处理器本地的运行队列中不包含 Goroutine 时,调用 runtime.findrunnable:779c45a 会触发工作窃取,从其它的处理器的队列中随机获取一些 Goroutine。
运行时 G-M-P 模型中引入的处理器 P 是线程和 Goroutine 的中间层,我们从它的结构体中就能看到处理器与 M 和 G 的关系:
struct P {
Lock;
uint32 status;
P * link;
uint32 tick;
M * m;
MCache * mcache;
G * * runq;
int32 runqhead;
int32 runqtail;
int32 runqsize;
G * gfree;
int32 gfreecnt;
};
处理器持有一个由可运行的 Goroutine 组成的环形的运行队列 runq,还反向持有一个线程。调度器在调度时会从处理器的队列中选择队列头的 Goroutine 放到线程 M 上执行。如下所示的图片展示了 Go 语言中的线程 M、处理器 P 和 Goroutine 的关系。
![](data:image/png;base64,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)
图 6-27 - G-M-P 模型
基于工作窃取的多线程调度器将每一个线程绑定到了独立的 CPU 上,这些线程会被不同处理器管理,不同的处理器通过工作窃取对任务进行再分配实现任务的平衡,也能提升调度器和 Go 语言程序的整体性能,今天所有的 Go 语言服务都受益于这一改动。
抢占式调度器
对 Go 语言并发模型的修改提升了调度器的性能,但是 1.1 版本中的调度器仍然不支持抢占式调度,程序只能依靠 Goroutine 主动让出 CPU 资源才能触发调度。Go 语言的调度器在 1.2 版本4中引入基于协作的抢占式调度解决下面的问题5:
1.某些 Goroutine 可以长时间占用线程,造成其它 Goroutine 的饥饿;
2.垃圾回收需要暂停整个程序(Stop-the-world,STW),最长可能需要几分钟的时间6,导致整个程序无法工作;
1.2 版本的抢占式调度虽然能够缓解这个问题,但是它实现的抢占式调度是基于协作的,在之后很长的一段时间里 Go 语言的调度器都有一些无法被抢占的边缘情况,例如:for 循环或者垃圾回收长时间占用线程,这些问题中的一部分直到 1.14 才被基于信号的抢占式调度解决。
基于协作的抢占式调度
我们可以在 pkg/runtime/proc.c 文件中找到引入基于协作的抢占式调度后的调度器。Go 语言会在分段栈的机制上实现抢占调度,利用编译器在分段栈上插入的函数,所有 Goroutine 在函数调用时都有机会进入运行时检查是否需要执行抢占。Go 团队通过以下的多个提交实现该特性:
runtime: add stackguard0 to G
为 Goroutine 引入 stackguard0 字段,该字段被设置成 StackPreempt 意味着当前 Goroutine 发出了抢占请求;
runtime: introduce preemption function (not used for now)
引入抢占函数 runtime.preemptone:1e112cd 和 runtime.preemptall:1e112cd,这两个函数会改变 Goroutine 的 stackguard0 字段发出抢占请求;
定义抢占请求 StackPreempt;
runtime: preempt goroutines for GC
在 runtime.stoptheworld:1e112cd 中调用 runtime.preemptall:1e112cd 设置所有处理器上正在运行的 Goroutine 的 stackguard0 为 StackPreempt;
在 runtime.newstack:1e112cd 中增加抢占的代码,当 stackguard0 等于 StackPreempt 时触发调度器抢占让出线程;
runtime: preempt long-running goroutines
在系统监控中,如果一个 Goroutine 的运行时间超过 10ms,就会调用 runtime.retake:1e112cd 和 runtime.preemptone:1e112cd;
runtime: more reliable preemption
修复 Goroutine 因为周期性执行非阻塞的 CGO 或者系统调用不会被抢占的问题;
上面的多个提交实现了抢占式调度,但是还缺少最关键的一个环节 — 编译器如何在函数调用前插入函数,我们能在非常古老的提交 runtime: stack growth adjustments, cleanup 中找到编译器插入函数的雏形,最新版本的 Go 语言会通过 cmd/internal/obj/x86.stacksplit 插入 runtime.morestack,该函数可能会调用 runtime.newstack 触发抢占。从上面的多个提交中,我们能归纳出基于协作的抢占式调度的工作原理:
1.编译器会在调用函数前插入 runtime.morestack;
2.Go 语言运行时会在垃圾回收暂停程序、系统监控发现 Goroutine 运行超过 10ms 时发出抢占请求 StackPreempt;
3.当发生函数调用时,可能会执行编译器插入的 runtime.morestack,它调用的 runtime.newstack 会检查 Goroutine 的 stackguard0 字段是否为 StackPreempt;
4.如果 stackguard0 是 StackPreempt,就会触发抢占让出当前线程;
这种实现方式虽然增加了运行时的复杂度,但是实现相对简单,也没有带来过多的额外开销,总体来看还是比较成功的实现,也在 Go 语言中使用了 10 几个版本。因为这里的抢占是通过编译器插入函数实现的,还是需要函数调用作为入口才能触发抢占,所以这是一种协作式的抢占式调度。
基于信号的抢占式调度
基于协作的抢占式调度虽然实现巧妙,但是并不完备,我们能在 runtime: non-cooperative goroutine preemption 中找到一些遗留问题:
runtime: tight loops should be preemptible #10958
An empty for{} will block large slice allocation in another goroutine, even with GOMAXPROCS > 1 ? #17174
runtime: tight loop hangs process completely after some time #15442
…
Go 语言在 1.14 版本中实现了非协作的抢占式调度,在实现的过程中我们重构已有的逻辑并为 Goroutine 增加新的状态和字段来支持抢占。Go 团队通过下面的一系列提交实现了这一功能,我们可以按时间顺序分析相关提交理解它的工作原理:
runtime: add general suspendG/resumeG
挂起 Goroutine 的过程是在垃圾回收的栈扫描时完成的,我们通过 runtime.suspendG 和 runtime.resumeG 两个函数重构栈扫描这一过程;
调用 runtime.suspendG 时会将处于运行状态的 Goroutine 的 preemptStop 标记成 true;
调用 runtime.preemptPark 可以挂起当前 Goroutine、将其状态更新成 _Gpreempted 并触发调度器的重新调度,该函数能够交出线程控制权;
runtime: asynchronous preemption function for x86
在 x86 架构上增加异步抢占的函数 runtime.asyncPreempt 和 runtime.asyncPreempt2;
runtime: use signals to preempt Gs for suspendG
支持通过向线程发送信号的方式暂停运行的 Goroutine;
在 runtime.sighandler 函数中注册 SIGURG 信号的处理函数 runtime.doSigPreempt;
实现 runtime.preemptM,它可以通过 SIGURG 信号向线程发送抢占请求;
runtime: implement async scheduler preemption
修改 runtime.preemptone 函数的实现,加入异步抢占的逻辑;
目前的抢占式调度也只会在垃圾回收扫描任务时触发,我们可以梳理一下上述代码实现的抢占式调度过程:
1.程序启动时,在 runtime.sighandler 中注册 SIGURG 信号的处理函数 runtime.doSigPreempt;
2.在触发垃圾回收的栈扫描时会调用 runtime.suspendG 挂起 Goroutine,该函数会执行下面的逻辑:
2.1.将 _Grunning 状态的 Goroutine 标记成可以被抢占,即将 preemptStop 设置成 true;
2.2.调用 runtime.preemptM 触发抢占;
3..runtime.preemptM 会调用 runtime.signalM 向线程发送信号 SIGURG;
4.操作系统会中断正在运行的线程并执行预先注册的信号处理函数 runtime.doSigPreempt;
5.runtime.doSigPreempt 函数会处理抢占信号,获取当前的 SP 和 PC 寄存器并调用 runtime.sigctxt.pushCall;
6.runtime.sigctxt.pushCall 会修改寄存器并在程序回到用户态时执行 runtime.asyncPreempt;
7.汇编指令 runtime.asyncPreempt 会调用运行时函数 runtime.asyncPreempt2;
8.runtime.asyncPreempt2 会调用 runtime.preemptPark;
9.runtime.preemptPark 会修改当前 Goroutine 的状态到 _Gpreempted 并调用 runtime.schedule 让当前函数陷入休眠并让出线程,调度器会选择其它的 Goroutine 继续执行;
上述 9 个步骤展示了基于信号的抢占式调度的执行过程。除了分析抢占的过程之外,我们还需要讨论一下抢占信号的选择,提案根据以下的四个原因选择 SIGURG 作为触发异步抢占的信号;
1.该信号需要被调试器透传;
2.该信号不会被内部的 libc 库使用并拦截;
3.该信号可以随意出现并且不触发任何后果;
4.我们需要处理多个平台上的不同信号;
STW 和栈扫描是一个可以抢占的安全点(Safe-points),所以 Go 语言会在这里先加入抢占功能8。基于信号的抢占式调度只解决了垃圾回收和栈扫描时存在的问题,它到目前为止没有解决所有问题,但是这种真抢占式调度是调度器走向完备的开始,相信在未来我们会在更多的地方触发抢占。
非均匀内存访问调度器
非均匀内存访问(Non-uniform memory access,NUMA)调度器现在只是 Go 语言的提案9。该提案的原理就是通过拆分全局资源,让各个处理器能够就近获取,减少锁竞争并增加数据的局部性。
在目前的运行时中,线程、处理器、网络轮询器、运行队列、全局内存分配器状态、内存分配缓存和垃圾收集器都是全局资源。运行时没有保证本地化,也不清楚系统的拓扑结构,部分结构可以提供一定的局部性,但是从全局来看没有这种保证。
![](data:image/png;base64,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)
图 6-28 - Go 语言 NUMA 调度器
如上图所示,堆栈、全局运行队列和线程池会按照 NUMA 节点进行分区,网络轮询器和计时器会由单独的处理器持有。这种方式虽然能够利用局部性提高调度器的性能,但是本身的实现过于复杂,所以 Go 语言团队还没有着手实现这一提案。
小结
Go 语言的调度器在最初的几个版本中迅速迭代,但是从 1.2 版本之后调度器就没有太多的变化,直到 1.14 版本引入了真正的抢占式调度才解决了自 1.2 以来一直存在的问题。在可预见的未来,Go 语言的调度器还会进一步演进,增加触发抢占式调度的时间点以减少存在的边缘情况。
6.5.2 数据结构
相信各位读者已经对 Go 语言调度相关的数据结构已经非常熟悉了,但是我们在一些还是要回顾一下运行时调度器的三个重要组成部分 — 线程 M、Goroutine G 和处理器 P:
![](data:image/png;base64,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)
图 6-29 Go 语言调度器
G — 表示 Goroutine,它是一个待执行的任务;
M — 表示操作系统的线程,它由操作系统的调度器调度和管理;
P — 表示处理器,它可以被看做运行在线程上的本地调度器;
我们会在这一节中分别介绍不同的结构体,详细介绍它们的作用、数据结构以及在运行期间可能处于的状态。
G
Goroutine 是 Go 语言调度器中待执行的任务,它在运行时调度器中的地位与线程在操作系统中差不多,但是它占用了更小的内存空间,也降低了上下文切换的开销。
Goroutine 只存在于 Go 语言的运行时,它是 Go 语言在用户态提供的线程,作为一种粒度更细的资源调度单元,如果使用得当能够在高并发的场景下更高效地利用机器的 CPU。
Goroutine 在 Go 语言运行时使用私有结构体 runtime.g 表示。这个私有结构体非常复杂,总共包含 40 多个用于表示各种状态的成员变量,这里也不会介绍所有的字段,仅会挑选其中的一部分,首先是与栈相关的两个字段:
type g struct {
stack stack
stackguard0 uintptr
}
其中 stack 字段描述了当前 Goroutine 的栈内存范围 [stack.lo, stack.hi),另一个字段 stackguard0 可以用于调度器抢占式调度。除了 stackguard0 之外,Goroutine 中还包含另外三个与抢占密切相关的字段:
type g struct {
preempt bool // 抢占信号
preemptStop bool // 抢占时将状态修改成 `_Gpreempted`
preemptShrink bool // 在同步安全点收缩栈
}
Goroutine 与我们在前面章节提到的 defer 和 panic 也有千丝万缕的联系,每一个 Goroutine 上都持有两个分别存储 defer 和 panic 对应结构体的链表:
type g struct {
_panic * _panic // 最内侧的 panic 结构体
_defer * _defer // 最内侧的延迟函数结构体
}
最后,我们再节选一些作者认为比较有趣或者重要的字段:
type g struct {
m * m
sched gobuf
atomicstatus uint32
goid int64
}
m — 当前 Goroutine 占用的线程,可能为空;
atomicstatus — Goroutine 的状态;
sched — 存储 Goroutine 的调度相关的数据;
goid — Goroutine 的 ID,该字段对开发者不可见,Go 团队认为引入 ID 会让部分 Goroutine 变得更特殊,从而限制语言的并发能力10;
上述四个字段中,我们需要展开介绍 sched 字段的 runtime.gobuf 结构体中包含哪些内容:
type gobuf struct {
sp uintptr
pc uintptr
g guintptr
ret sys.Uintreg
...
}
sp — 栈指针;
pc — 程序计数器;
g — 持有 runtime.gobuf 的 Goroutine;
ret — 系统调用的返回值;
这些内容会在调度器保存或者恢复上下文的时候用到,其中的栈指针和程序计数器会用来存储或者恢复寄存器中的值,改变程序即将执行的代码。
结构体 runtime.g 的 atomicstatus 字段存储了当前 Goroutine 的状态。除了几个已经不被使用的以及与 GC 相关的状态之外,Goroutine 可能处于以下 9 种状态:
![](data:image/png;base64,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)
表 7-3 Goroutine 的状态
上述状态中比较常见是 _Grunnable、_Grunning、_Gsyscall、_Gwaiting 和 _Gpreempted 五个状态,这里会重点介绍这几个状态。Goroutine 的状态迁移是个复杂的过程,触发 Goroutine 状态迁移的方法也很多,在这里我们也没有办法介绍全部的迁移路线,只会从中选择一些介绍。
![](data:image/png;base64,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)
图 6-30 Goroutine 的状态
虽然 Goroutine 在运行时中定义的状态非常多而且复杂,但是我们可以将这些不同的状态聚合成三种:等待中、可运行、运行中,运行期间会在这三种状态来回切换:
等待中:Goroutine 正在等待某些条件满足,例如:系统调用结束等,包括 _Gwaiting、_Gsyscall 和 _Gpreempted 几个状态;
可运行:Goroutine 已经准备就绪,可以在线程运行,如果当前程序中有非常多的 Goroutine,每个 Goroutine 就可能会等待更多的时间,即 _Grunnable;
运行中:Goroutine 正在某个线程上运行,即 _Grunning;
![](data:image/png;base64,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)
图 6-31 Goroutine 的常见状态迁移
上图展示了 Goroutine 状态迁移的常见路径,其中包括创建 Goroutine 到 Goroutine 被执行、触发系统调用或者抢占式调度器的状态迁移过程。
M
Go 语言并发模型中的 M 是操作系统线程。调度器最多可以创建 10000 个线程,但是其中大多数的线程都不会执行用户代码(可能陷入系统调用),最多只会有 GOMAXPROCS 个活跃线程能够正常运行。
在默认情况下,运行时会将 GOMAXPROCS 设置成当前机器的核数,我们也可以在程序中使用 runtime.GOMAXPROCS 来改变最大的活跃线程数。
![](data:image/png;base64,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)
图 6-32 CPU 和活跃线程
在默认情况下,一个四核机器会创建四个活跃的操作系统线程,每一个线程都对应一个运行时中的 runtime.m 结构体。
在大多数情况下,我们都会使用 Go 的默认设置,也就是线程数等于 CPU 数,默认的设置不会频繁触发操作系统的线程调度和上下文切换,所有的调度都会发生在用户态,由 Go 语言调度器触发,能够减少很多额外开销。
Go 语言会使用私有结构体 runtime.m 表示操作系统线程,这个结构体也包含了几十个字段,这里先来了解几个与 Goroutine 相关的字段:
type m struct {
g0 * g
curg * g
...
}
其中 g0 是持有调度栈的 Goroutine,curg 是在当前线程上运行的用户 Goroutine,这也是操作系统线程唯一关心的两个 Goroutine。
![](data:image/png;base64,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)
图 6-33 调度 Goroutine 和运行 Goroutine
g0 是一个运行时中比较特殊的 Goroutine,它会深度参与运行时的调度过程,包括 Goroutine 的创建、大内存分配和 CGO 函数的执行。在后面的小节中,我们会经常看到 g0 的身影。
runtime.m 结构体中还存在三个与处理器相关的字段,它们分别表示正在运行代码的处理器 p、暂存的处理器 nextp 和执行系统调用之前使用线程的处理器 oldp:
type m struct {
p puintptr
nextp puintptr
oldp puintptr
}
除了在上面介绍的字段之外,runtime.m 还包含大量与线程状态、锁、调度、系统调用有关的字段,我们会在分析调度过程时详细介绍它们。
P
调度器中的处理器 P 是线程和 Goroutine 的中间层,它能提供线程需要的上下文环境,也会负责调度线程上的等待队列,通过处理器 P 的调度,每一个内核线程都能够执行多个 Goroutine,它能在 Goroutine 进行一些 I/O 操作时及时让出计算资源,提高线程的利用率。
因为调度器在启动时就会创建 GOMAXPROCS 个处理器,所以 Go 语言程序的处理器数量一定会等于 GOMAXPROCS,这些处理器会绑定到不同的内核线程上。
runtime.p 是处理器的运行时表示,作为调度器的内部实现,它包含的字段也非常多,其中包括与性能追踪、垃圾回收和计时器相关的字段,这些字段也非常重要,但是在这里就不展示了,我们主要关注处理器中的线程和运行队列:
type p struct {
m muintptr
runqhead uint32
runqtail uint32
runq[256] guintptr
runnext guintptr
...
}
反向存储的线程维护着线程与处理器之间的关系,而 runqhead、runqtail 和 runq 三个字段表示处理器持有的运行队列,其中存储着待执行的 Goroutine 列表,runnext 中是线程下一个需要执行的 Goroutine。
runtime.p 结构体中的状态 status 字段会是以下五种中的一种:
![](data:image/png;base64,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)
表 7-4 处理器的状态
通过分析处理器 P 的状态,我们能够对处理器的工作过程有一些简单理解,例如处理器在执行用户代码时会处于 _Prunning 状态,在当前线程执行 I/O 操作时会陷入 _Psyscall 状态。
小结
我们在这一小节简单介绍了 Go 语言调度器中常见的数据结构,包括线程 M、处理器 P 和 Goroutine G,它们在 Go 语言运行时中分别使用不同的私有结构体表示,我们在下面会深入分析 Go 语言调度器的实现原理。
6.5.3 调度器启动
调度器的启动过程是我们平时比较难以接触的过程,不过作为程序启动前的准备工作,理解调度器的启动过程对我们理解调度器的实现原理很有帮助,运行时通过 runtime.schedinit 初始化调度器:
func schedinit() {
_g_: = getg()
...
sched.maxmcount = 10000
...
sched.lastpoll = uint64(nanotime())
procs: = ncpu
if n,
ok: = atoi32(gogetenv("GOMAXPROCS"));ok && n > 0 {
procs = n
}
if procresize(procs) != nil {
throw ("unknown runnable goroutine during bootstrap")
}
}
在调度器初始函数执行的过程中会将 maxmcount 设置成 10000,这也就是一个 Go 语言程序能够创建的最大线程数,虽然最多可以创建 10000 个线程,但是可以同时运行的线程还是由 GOMAXPROCS 变量控制。
我们从环境变量 GOMAXPROCS 获取了程序能够同时运行的最大处理器数之后就会调用 runtime.procresize 更新程序中处理器的数量,在这时整个程序不会执行任何用户 Goroutine,调度器也会进入锁定状态,runtime.procresize 的执行过程如下:
1.如果全局变量 allp 切片中的处理器数量少于期望数量,会对切片进行扩容;
2.使用 new 创建新的处理器结构体并调用 runtime.p.init 初始化刚刚扩容的处理器;
3.通过指针将线程 m0 和处理器 allp[0] 绑定到一起;
4.调用 runtime.p.destroy 释放不再使用的处理器结构;
5.通过截断改变全局变量 allp 的长度保证与期望处理器数量相等;
6.将除 allp[0] 之外的处理器 P 全部设置成 _Pidle 并加入到全局的空闲队列中;
调用 runtime.procresize 是调度器启动的最后一步,在这一步过后调度器会完成相应数量处理器的启动,等待用户创建运行新的 Goroutine 并为 Goroutine 调度处理器资源。
6.5.4 创建 Goroutine
想要启动一个新的 Goroutine 来执行任务时,我们需要使用 Go 语言的 go 关键字,编译器会通过 cmd/compile/internal/gc.state.stmt 和 cmd/compile/internal/gc.state.call 两个方法将该关键字转换成 runtime.newproc 函数调用:
func(s * state) call(n * Node, k callKind) * ssa.Value {
if k == callDeferStack {
...
} else {
switch {
case k == callGo:
call = s.newValue1A(ssa.OpStaticCall, types.TypeMem, newproc, s.mem())
default:
}
}
...
}
runtime.newproc 的入参是参数大小和表示函数的指针 funcval,它会获取 Goroutine 以及调用方的程序计数器,然后调用 runtime.newproc1 函数获取新的 Goroutine 结构体、将其加入处理器的运行队列并在满足条件时调用 runtime.wakep 唤醒新的处理执行 Goroutine:
func newproc(siz int32, fn * funcval) {
argp: = add(unsafe.Pointer( & fn), sys.PtrSize)
gp: = getg()
pc: = getcallerpc()
systemstack(func() {
newg: = newproc1(fn, argp, siz, gp, pc)
_p_: = getg().m.p.ptr()
runqput(_p_, newg, true)
if mainStarted {
wakep()
}
})
}
runtime.newproc1 会根据传入参数初始化一个 g 结构体,我们可以将该函数分成以下几个部分介绍它的实现:
1.获取或者创建新的 Goroutine 结构体;
2.将传入的参数移到 Goroutine 的栈上;
3.更新 Goroutine 调度相关的属性;
首先是 Goroutine 结构体的创建过程:
func newproc1(fn * funcval, argp unsafe.Pointer, narg int32, callergp * g, callerpc uintptr) * g {
_g_: = getg()
siz: = narg
siz = (siz + 7) & ^ 7
_p_: = _g_.m.p.ptr()
newg: = gfget(_p_)
if newg == nil {
newg = malg(_StackMin)
casgstatus(newg, _Gidle, _Gdead)
allgadd(newg)
}
...
上述代码会先从处理器的 gFree 列表中查找空闲的 Goroutine,如果不存在空闲的 Goroutine,会通过 runtime.malg 创建一个栈大小足够的新结构体。
接下来,我们会调用 runtime.memmove 将 fn 函数的所有参数拷贝到栈上,argp 和 narg 分别是参数的内存空间和大小,我们在该方法中会将参数对应的内存空间整块拷贝到栈上:
...
totalSize: = 4 * sys.RegSize + uintptr(siz) + sys.MinFrameSize
totalSize += -totalSize & (sys.SpAlign - 1)
sp: = newg.stack.hi - totalSize
spArg: = sp
if narg > 0 {
memmove(unsafe.Pointer(spArg), argp, uintptr(narg))
}
...
拷贝了栈上的参数之后,runtime.newproc1 会设置新的 Goroutine 结构体的参数,包括栈指针、程序计数器并更新其状态到 _Grunnable 并返回:
...
memclrNoHeapPointers(unsafe.Pointer(&newg.sched), unsafe.Sizeof(newg.sched))
newg.sched.sp = sp
newg.stktopsp = sp
newg.sched.pc = funcPC(goexit) + sys.PCQuantum
newg.sched.g = guintptr(unsafe.Pointer(newg))
gostartcallfn(&newg.sched, fn)
newg.gopc = callerpc
newg.startpc = fn.fn
casgstatus(newg, _Gdead, _Grunnable)
newg.goid = int64(_p_.goidcache)
_p_.goidcache++
return newg
}
我们在分析 runtime.newproc 的过程中,保留了主干省略了用于获取结构体的 runtime.gfget、runtime.malg、将 Goroutine 加入运行队列的 runtime.runqput 以及设置调度信息的过程,下面会依次分析这些函数。
初始化结构体
runtime.gfget 通过两种不同的方式获取新的 runtime.g:
1.从 Goroutine 所在处理器的 gFree 列表或者调度器的 sched.gFree 列表中获取 runtime.g;
2.调用 runtime.malg 生成一个新的 runtime.g 并将结构体追加到全局的 Goroutine 列表 allgs 中。
![](data:image/png;base64,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)
图 6-34 获取 Goroutine 结构体的三种方法
runtime.gfget 中包含两部分逻辑,它会根据处理器中 gFree 列表中 Goroutine 的数量做出不同的决策:
1.当处理器的 Goroutine 列表为空时,会将调度器持有的空闲 Goroutine 转移到当前处理器上,直到 gFree 列表中的 Goroutine 数量达到 32;
2.当处理器的 Goroutine 数量充足时,会从列表头部返回一个新的 Goroutine;
func gfget(_p_ * p) * g {
retry: if _p_.gFree.empty() && (!sched.gFree.stack.empty() || !sched.gFree.noStack.empty()) {
for _p_.gFree.n < 32 {
gp: = sched.gFree.stack.pop()
if gp == nil {
gp = sched.gFree.noStack.pop()
if gp == nil {
break
}
}
_p_.gFree.push(gp)
}
goto retry
}
gp: = _p_.gFree.pop()
if gp == nil {
return nil
}
return gp
}
当调度器的 gFree 和处理器的 gFree 列表都不存在结构体时,运行时会调用 runtime.malg 初始化新的 runtime.g 结构,如果申请的堆栈大小大于 0,这里会通过 runtime.stackalloc 分配 2KB 的栈空间:
func malg(stacksize int32) * g {
newg: = new(g)
if stacksize >= 0 {
stacksize = round2(_StackSystem + stacksize)
newg.stack = stackalloc(uint32(stacksize))
newg.stackguard0 = newg.stack.lo + _StackGuard
newg.stackguard1 = ^ uintptr(0)
}
return newg
}
runtime.malg 返回的 Goroutine 会存储到全局变量 allgs 中。
简单总结一下,runtime.newproc1 会从处理器或者调度器的缓存中获取新的结构体,也可以调用 runtime.malg 函数创建。
运行队列
runtime.runqput 会将 Goroutine 放到运行队列上,这既可能是全局的运行队列,也可能是处理器本地的运行队列:
func runqput(_p_ * p, gp * g, next bool) {
if next {
retryNext: oldnext: = _p_.runnext
if !_p_.runnext.cas(oldnext, guintptr(unsafe.Pointer(gp))) {
goto retryNext
}
if oldnext == 0 {
return
}
gp = oldnext.ptr()
}
retry:
h: = atomic.LoadAcq( & _p_.runqhead)
t: = _p_.runqtail
if t - h < uint32(len(_p_.runq)) {
_p_.runq[t % uint32(len(_p_.runq))].set(gp)
atomic.StoreRel( & _p_.runqtail, t + 1)
return
}
if runqputslow(_p_, gp, h, t) {
return
}
goto retry
}
1.当 next 为 true 时,将 Goroutine 设置到处理器的 runnext 作为下一个处理器执行的任务;
2.当 next 为 false 并且本地运行队列还有剩余空间时,将 Goroutine 加入处理器持有的本地运行队列;
3.当处理器的本地运行队列已经没有剩余空间时就会把本地队列中的一部分 Goroutine 和待加入的 Goroutine 通过 runtime.runqputslow 添加到调度器持有的全局运行队列上;
处理器本地的运行队列是一个使用数组构成的环形链表,它最多可以存储 256 个待执行任务。
![](data:image/png;base64,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)
图 6-35 全局和本地运行队列
简单总结一下,Go 语言有两个运行队列,其中一个是处理器本地的运行队列,另一个是调度器持有的全局运行队列,只有在本地运行队列没有剩余空间时才会使用全局队列。
调度信息
运行时创建 Goroutine 时会通过下面的代码设置调度相关的信息,前两行代码会分别将程序计数器和 Goroutine 设置成 runtime.goexit 和新创建 Goroutine 运行的函数:
...
newg.sched.pc = funcPC(goexit) + sys.PCQuantum
newg.sched.g = guintptr(unsafe.Pointer(newg))
gostartcallfn( & newg.sched, fn)
...
上述调度信息 sched 不是初始化后的 Goroutine 的最终结果,它还需要经过 runtime.gostartcallfn 和 runtime.gostartcall 的处理:
func gostartcallfn(gobuf * gobuf, fv * funcval) {
gostartcall(gobuf, unsafe.Pointer(fv.fn), unsafe.Pointer(fv))
}
func gostartcall(buf * gobuf, fn, ctxt unsafe.Pointer) {
sp: = buf.sp
if sys.RegSize > sys.PtrSize {
sp -= sys.PtrSize * ( * uintptr)(unsafe.Pointer(sp)) = 0
}
sp -= sys.PtrSize * ( * uintptr)(unsafe.Pointer(sp)) = buf.pc
buf.sp = sp
buf.pc = uintptr(fn)
buf.ctxt = ctxt
}
调度信息的 sp 中存储了 runtime.goexit 函数的程序计数器,而 pc 中存储了传入函数的程序计数器。因为 pc 寄存器的作用就是存储程序接下来运行的位置,所以 pc 的使用比较好理解,但是 sp 中存储的 runtime.goexit 会让人感到困惑,我们需要配合下面的调度循环来理解它的作用。
6.5.5 调度循环
调度器启动之后,Go 语言运行时会调用 runtime.mstart 以及 runtime.mstart1,前者会初始化 g0 的 stackguard0 和 stackguard1 字段,后者会初始化线程并调用 runtime.schedule 进入调度循环:
func schedule() {
_g_: = getg()
top: var gp * g
var inheritTime bool
if gp == nil {
if _g_.m.p.ptr().schedtick % 61 == 0 && sched.runqsize > 0 {
lock( & sched.lock)
gp = globrunqget(_g_.m.p.ptr(), 1)
unlock( & sched.lock)
}
}
if gp == nil {
gp, inheritTime = runqget(_g_.m.p.ptr())
}
if gp == nil {
gp, inheritTime = findrunnable()
}
execute(gp, inheritTime)
}
runtime.schedule 函数会从下面几个地方查找待执行的 Goroutine:
1.为了保证公平,当全局运行队列中有待执行的 Goroutine 时,通过 schedtick 保证有一定几率会从全局的运行队列中查找对应的 Goroutine;
2.从处理器本地的运行队列中查找待执行的 Goroutine;
3.如果前两种方法都没有找到 Goroutine,会通过 runtime.findrunnable 进行阻塞地查找 Goroutine;
runtime.findrunnable 的实现非常复杂,这个 300 多行的函数通过以下的过程获取可运行的 Goroutine:
1.从本地运行队列、全局运行队列中查找;
2.从网络轮询器中查找是否有 Goroutine 等待运行;
3.通过 runtime.runqsteal 尝试从其他随机的处理器中窃取待运行的 Goroutine,该函数还可能窃取处理器的计时器;
因为函数的实现过于复杂,上述的执行过程是经过简化的,总而言之,当前函数一定会返回一个可执行的 Goroutine,如果当前不存在就会阻塞等待。
接下来由 runtime.execute 执行获取的 Goroutine,做好准备工作后,它会通过 runtime.gogo 将 Goroutine 调度到当前线程上。
func execute(gp * g, inheritTime bool) {
_g_: = getg()
_g_.m.curg = gp
gp.m = _g_.m
casgstatus(gp, _Grunnable, _Grunning)
gp.waitsince = 0
gp.preempt = false
gp.stackguard0 = gp.stack.lo + _StackGuard
if !inheritTime {
_g_.m.p.ptr().schedtick++
}
gogo( & gp.sched)
}
runtime.gogo 在不同处理器架构上的实现都不同,但是也都大同小异,下面是该函数在 386 架构上的实现:
TEXT runtime· gogo(SB), NOSPLIT, $8 - 4
MOVL buf + 0(FP), BX // 获取调度信息
MOVL gobuf_g(BX), DX
MOVL 0(DX), CX // 保证 Goroutine 不为空
get_tls(CX)
MOVL DX, g(CX)
MOVL gobuf_sp(BX), SP // 将 runtime.goexit 函数的 PC 恢复到 SP 中
MOVL gobuf_ret(BX), AX
MOVL gobuf_ctxt(BX), DX
MOVL $0, gobuf_sp(BX)
MOVL $0, gobuf_ret(BX)
MOVL $0, gobuf_ctxt(BX)
MOVL gobuf_pc(BX), BX // 获取待执行函数的程序计数器
JMP BX // 开始执行
它从 runtime.gobuf 中取出了 runtime.goexit 的程序计数器和待执行函数的程序计数器,其中:
runtime.goexit 的程序计数器被放到了栈 SP 上;
待执行函数的程序计数器被放到了寄存器 BX 上;
在函数调用一节中,我们曾经介绍过 Go 语言的调用惯例,正常的函数调用都会使用 CALL 指令,该指令会将调用方的返回地址加入栈寄存器 SP 中,然后跳转到目标函数;当目标函数返回后,会从栈中查找调用的地址并跳转回调用方继续执行剩下的代码。
runtime.gogo 就利用了 Go 语言的调用惯例成功模拟这一调用过程,通过以下几个关键指令模拟 CALL 的过程:
MOVL gobuf_sp(BX), SP // 将 runtime.goexit 函数的 PC 恢复到 SP 中
MOVL gobuf_pc(BX), BX // 获取待执行函数的程序计数器
JMP BX // 开始执行
![](data:image/png;base64,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)
图 6-36 runtime.gogo 栈内存
上图展示了调用 JMP 指令后的栈中数据,当 Goroutine 中运行的函数返回时,程序会跳转到 runtime.goexit 所在位置执行该函数:
TEXT runtime·goexit(SB),NOSPLIT,$0-0
CALL runtime·goexit1(SB)
func goexit1() {
mcall(goexit0)
}
经过一系列复杂的函数调用,我们最终在当前线程的 g0 的栈上调用 runtime.goexit0 函数,该函数会将 Goroutine 转换会 _Gdead 状态、清理其中的字段、移除 Goroutine 和线程的关联并调用 runtime.gfput 重新加入处理器的 Goroutine 空闲列表 gFree:
func goexit0(gp * g) {
_g_: = getg()
casgstatus(gp, _Grunning, _Gdead)
gp.m = nil
...
gp.param = nil
gp.labels = nil
gp.timer = nil
dropg()
gfput(_g_.m.p.ptr(), gp)
schedule()
}
在最后 runtime.goexit0 会重新调用 runtime.schedule 触发新一轮的 Goroutine 调度,Go 语言中的运行时调度循环会从 runtime.schedule 开始,最终又回到 runtime.schedule,我们可以认为调度循环永远都不会返回。
![](data:image/png;base64,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)
图 6-36 调度循环
这里介绍的是 Goroutine 正常执行并退出的逻辑,实际情况会复杂得多,多数情况下 Goroutine 在执行的过程中都会经历协作式或者抢占式调度,它会让出线程的使用权等待调度器的唤醒。
6.5.6 触发调度
这里简单介绍下所有触发调度的时间点,因为调度器的 runtime.schedule 会重新选择 Goroutine 在线程上执行,所以我们只要找到该函数的调用方就能找到所有触发调度的时间点,经过分析和整理,我们能得到如下的树形结构:
![](data:image/png;base64,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)
图 6-37 调度时间点
除了上图中可能触发调度的时间点,运行时还会在线程启动 runtime.mstart 和 Goroutine 执行结束 runtime.goexit0 触发调度。我们在这里会重点介绍运行时触发调度的几个路径:
主动挂起 — runtime.gopark -> runtime.park_m
系统调用 — runtime.exitsyscall -> runtime.exitsyscall0
协作式调度 — runtime.Gosched -> runtime.gosched_m -> runtime.goschedImpl
系统监控 — runtime.sysmon -> runtime.retake -> runtime.preemptone
我们在这里介绍的调度时间点不是将线程的运行权直接交给其他任务,而是通过调度器的 runtime.schedule 重新调度。
主动挂起
runtime.gopark 是触发调度最常见的方法,该函数会将当前 Goroutine 暂停,被暂停的任务不会放回运行队列,我们来分析该函数的实现原理:
func gopark(unlockf func( * g, unsafe.Pointer) bool, lock unsafe.Pointer, reason waitReason, traceEv byte, traceskip int) {
mp: = acquirem()
gp: = mp.curg
mp.waitlock = lock
mp.waitunlockf = unlockf
gp.waitreason = reason
mp.waittraceev = traceEv
mp.waittraceskip = traceskip
releasem(mp)
mcall(park_m)
}
上述会通过 runtime.mcall 切换到 g0 的栈上调用 runtime.park_m:
func park_m(gp * g) {
_g_: = getg()
casgstatus(gp, _Grunning, _Gwaiting)
dropg()
schedule()
}
runtime.park_m 会将当前 Goroutine 的状态从 _Grunning 切换至 _Gwaiting,调用 runtime.dropg 移除线程和 Goroutine 之间的关联,在这之后就可以调用 runtime.schedule 触发新一轮的调度了。
当 Goroutine 等待的特定条件满足后,运行时会调用 runtime.goready 将因为调用 runtime.gopark 而陷入休眠的 Goroutine 唤醒。
func goready(gp * g, traceskip int) {
systemstack(func() {
ready(gp, traceskip, true)
})
}
func ready(gp * g, traceskip int, next bool) {
_g_: = getg()
casgstatus(gp, _Gwaiting, _Grunnable)
runqput(_g_.m.p.ptr(), gp, next)
if atomic.Load( & sched.npidle) != 0 && atomic.Load( & sched.nmspinning) == 0 {
wakep()
}
}
runtime.ready 会将准备就绪的 Goroutine 的状态切换至 _Grunnable 并将其加入处理器的运行队列中,等待调度器的调度。
系统调用
系统调用也会触发运行时调度器的调度,为了处理特殊的系统调用,我们甚至在 Goroutine 中加入了 _Gsyscall 状态,Go 语言通过 syscall.Syscall 和 syscall.RawSyscall 等使用汇编语言编写的方法封装操作系统提供的所有系统调用,其中 syscall.Syscall 的实现如下:
#
define INVOKE_SYSCALL INT $0x80
TEXT· Syscall(SB), NOSPLIT, $0 - 28
CALL runtime· entersyscall(SB)
...
INVOKE_SYSCALL
...
CALL runtime· exitsyscall(SB)
RET
ok:
...
CALL runtime· exitsyscall(SB)
RET
在通过汇编指令 INVOKE_SYSCALL 执行系统调用前后,上述函数会调用运行时的 runtime.entersyscall 和 runtime.exitsyscall,正是这一层包装能够让我们在陷入系统调用前触发运行时的准备和清理工作。
![](data:image/png;base64,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)
图 6-38 Go 语言系统调用
不过出于性能的考虑,如果这次系统调用不需要运行时参与,就会使用 syscall.RawSyscall 简化这一过程,不再调用运行时函数。这里包含 Go 语言对 Linux 386 架构上不同系统调用的分类,我们会按需决定是否需要运行时的参与。
![](data:image/png;base64,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qMDQ0LBBgyA6hYWFjBs3jtTUVL3p1dXVVFZWIpfLb3rRN3aZ7oSHhwc+Pj58/fXXjdInqSOTyfD392ffvn18/vnntG/fvtGa5A+bQYMGYWtrS0JCgtQnm5KSglKppGfPnhgZGQHX+oNrkslkeHh48Msvv7Bp0yapaezq6kpqairr16/Hw8NDqq9Hjx5l7NixtV56V6vVUr3UUSqVGBsbM3XqVHr27EmLFtf+C9bq6mo+/fRTPv74Y9RqNYaGhri5uREcHExmZialpaXY29tjZmbGwYMHpe1pNBoWL17MrFmz+Pvvv8nLy6OwsBBfX1+pm6C8vJwrV6405qG9I/dlIJqZmfHiiy/y448/EhkZyYEDBygsLGTt2rVMnTqVp556ikcffbTB2+vYsSMhISFMnjyZ5cuXc+bMGY4fP86cOXP47rvvGDBgwE379m61TJWVlZw/f56SkhK9T2MEmLGxMSEhIfz+++96o48AV69erbXPCxcu1DnwU5d27drRuXNnli1bxtChQzEzM7vj8j6MrKysCA0NZcWKFdJrN126dGHDhg0kJiZy/Phxli5dyoQJE2qt6+TkBFxr5uqaxm3btqVFixZcunRJmg/g6emJt7c3b7/9NuvWraOwsJADBw4QGRlJWloafn5+0rK6FgD80ycN155uXV1d+frrr0lISKCoqIj9+/eTkJCAu7s7LVq0QKFQMHr0aKKjo9mwYQNFRUWsXr2aL7/8kt69e/Of//wHe3t7TExMWLZsGUePHmXLli28/vrrbN++/e4c5NtwXwYiQN++fdm0aROXL19myJAhtGzZkpiYGF5++WWioqJuadTT0NCQSZMmMW/ePNauXUvnzp3p3r07e/fuJSEhgWHDhjV6mb799lvatGmDtbW13mfNmjW3fCzqolQqGTJkCEuXLtV7ypg1a1atfQYHB9fqc62PqakpAwYM4KmnnsLT07NRyvqw6tevH05OTixfvpyqqioGDx7MBx98wIwZM+jevTt5eXnMnj0blUql9zM7W1tbXF1d6dWrF5aWlsC1dxp79eqFq6srtra20rJmZmbMnTuXN998k/nz59OyZUuGDBnChQsXWL16tTSYAteePrt164anpyeOjo56ZfXz82PRokV899132NraMmrUKPr06cOkSZOkFlRQUBCTJ09m+vTp2NrasmzZMmJiYqR3VB0cHJg7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)
表 7-5 系统调用的类型
由于直接进行系统调用会阻塞当前的线程,所以只有可以立刻返回的系统调用才可能会被设置成 RawSyscall 类型,例如:SYS_EPOLL_CREATE、SYS_EPOLL_WAIT(超时时间为 0)、SYS_TIME 等。
正常的系统调用过程相对比较复杂,下面将分别介绍进入系统调用前的准备工作和系统调用结束后的收尾工作。
准备工作
runtime.entersyscall 会在获取当前程序计数器和栈位置之后调用 runtime.reentersyscall,它会完成 Goroutine 进入系统调用前的准备工作:
func reentersyscall(pc, sp uintptr) {
_g_: = getg()
_g_.m.locks++
_g_.stackguard0 = stackPreempt
_g_.throwsplit = true
save(pc, sp)
_g_.syscallsp = sp
_g_.syscallpc = pc
casgstatus(_g_, _Grunning, _Gsyscall)
_g_.m.syscalltick = _g_.m.p.ptr().syscalltick
_g_.m.mcache = nil
pp: = _g_.m.p.ptr()
pp.m = 0
_g_.m.oldp.set(pp)
_g_.m.p = 0
atomic.Store( & pp.status, _Psyscall)
if sched.gcwaiting != 0 {
systemstack(entersyscall_gcwait)
save(pc, sp)
}
_g_.m.locks--
}
1.禁止线程上发生的抢占,防止出现内存不一致的问题;
2.保证当前函数不会触发栈分裂或者增长;
3.保存当前的程序计数器 PC 和栈指针 SP 中的内容;
4.将 Goroutine 的状态更新至 _Gsyscall;
5.将 Goroutine 的处理器和线程暂时分离并更新处理器的状态到 _Psyscall;
6.释放当前线程上的锁;
需要注意的是 runtime.reentersyscall 会使处理器和线程的分离,当前线程会陷入系统调用等待返回,在锁被释放后,会有其他 Goroutine 抢占处理器资源。
恢复工作
当系统调用结束后,会调用退出系统调用的函数 runtime.exitsyscall 为当前 Goroutine 重新分配资源,该函数有两个不同的执行路径:
1.调用 runtime.exitsyscallfast;
2.切换至调度器的 Goroutine 并调用 runtime.exitsyscall0;
func exitsyscall() {
_g_: = getg()
oldp: = _g_.m.oldp.ptr()
_g_.m.oldp = 0
if exitsyscallfast(oldp) {
_g_.m.p.ptr().syscalltick++
casgstatus(_g_, _Gsyscall, _Grunning)
...
return
}
mcall(exitsyscall0)
_g_.m.p.ptr().syscalltick++
_g_.throwsplit = false
}
这两种不同的路径会分别通过不同的方法查找一个用于执行当前 Goroutine 处理器 P,快速路径 runtime.exitsyscallfast 中包含两个不同的分支:
如果 Goroutine 的原处理器处于 _Psyscall 状态,会直接调用 wirep 将 Goroutine 与处理器进行关联;
如果调度器中存在闲置的处理器,会调用 runtime.acquirep 使用闲置的处理器处理当前 Goroutine;
另一个相对较慢的路径 runtime.exitsyscall0 会将当前 Goroutine 切换至 _Grunnable 状态,并移除线程 M 和当前 Goroutine 的关联:
当我们通过 runtime.pidleget 获取到闲置的处理器时就会在该处理器上执行 Goroutine;
在其它情况下,我们会将当前 Goroutine 放到全局的运行队列中,等待调度器的调度;
无论哪种情况,我们在这个函数中都会调用 runtime.schedule 触发调度器的调度,因为上一节已经介绍过调度器的调度过程,所以在这里就不展开了。
协作式调度
我们在设计原理中介绍过了 Go 语言基于协作式和信号的两种抢占式调度,这里主要介绍其中的协作式调度。runtime.Gosched 函数会主动让出处理器,允许其他 Goroutine 运行。该函数无法挂起 Goroutine,调度器可能会将当前 Goroutine 调度到其他线程上:
func Gosched() {
checkTimeouts()
mcall(gosched_m)
}
func gosched_m(gp * g) {
goschedImpl(gp)
}
func goschedImpl(gp * g) {
casgstatus(gp, _Grunning, _Grunnable)
dropg()
lock( & sched.lock)
globrunqput(gp)
unlock( & sched.lock)
schedule()
}
经过连续几次跳转,我们最终在 g0 的栈上调用 runtime.goschedImpl,运行时会更新 Goroutine 的状态到 _Grunnable,让出当前的处理器并将 Goroutine 重新放回全局队列,在最后,该函数会调用 runtime.schedule 触发调度。
6.5.7 线程管理
Go 语言的运行时会通过调度器改变线程的所有权,它也提供了 runtime.LockOSThread 和 runtime.UnlockOSThread 让我们有能力绑定 Goroutine 和线程完成一些比较特殊的操作。Goroutine 应该在调用操作系统服务或者依赖线程状态的非 Go 语言库时调用 runtime.LockOSThread 函数11,例如:C 语言图形库等。
runtime.LockOSThread 会通过如下所示的代码绑定 Goroutine 和当前线程:
func LockOSThread() {
if atomic.Load( & newmHandoff.haveTemplateThread) == 0 && GOOS != "plan9" {
startTemplateThread()
}
_g_: = getg()
_g_.m.lockedExt++
dolockOSThread()
}
func dolockOSThread() {
_g_: = getg()
_g_.m.lockedg.set(_g_)
_g_.lockedm.set(_g_.m)
}
runtime.dolockOSThread 会分别设置线程的 lockedg 字段和 Goroutine 的 lockedm 字段,这两行代码会绑定线程和 Goroutine。
当 Goroutine 完成了特定的操作之后,会调用以下函数 runtime.UnlockOSThread 分离 Goroutine 和线程:
func UnlockOSThread() {
_g_: = getg()
if _g_.m.lockedExt == 0 {
return
}
_g_.m.lockedExt--
dounlockOSThread()
}
func dounlockOSThread() {
_g_: = getg()
if _g_.m.lockedInt != 0 || _g_.m.lockedExt != 0 {
return
}
_g_.m.lockedg = 0
_g_.lockedm = 0
}
函数执行的过程与 runtime.LockOSThread 正好相反。在多数的服务中,我们都用不到这一对函数,不过使用 CGO 或者经常与操作系统打交道的读者可能会见到它们的身影。
线程生命周期
Go 语言的运行时会通过 runtime.startm 启动线程来执行处理器 P,如果我们在该函数中没能从闲置列表中获取到线程 M 就会调用 runtime.newm 创建新的线程:
func newm(fn func(), _p_ * p, id int64) {
mp: = allocm(_p_, fn, id)
mp.nextp.set(_p_)
mp.sigmask = initSigmask
...
newm1(mp)
}
func newm1(mp * m) {
if iscgo {
...
}
newosproc(mp)
}
创建新的线程需要使用如下所示的 runtime.newosproc,该函数在 Linux 平台上会通过系统调用 clone 创建新的操作系统线程,它也是创建线程链路上距离操作系统最近的 Go 语言函数:
func newosproc(mp * m) {
stk: = unsafe.Pointer(mp.g0.stack.hi)
...
ret: = clone(cloneFlags, stk, unsafe.Pointer(mp), unsafe.Pointer(mp.g0), unsafe.Pointer(funcPC(mstart)))
...
}
使用系统调用 clone 创建的线程会在线程主动调用 exit、或者传入的函数 runtime.mstart 返回会主动退出,runtime.mstart 会执行调用 runtime.newm 时传入的匿名函数 fn,到这里也就完成了从线程创建到销毁的整个闭环。
6.5.8 小结
Goroutine 和调度器是 Go 语言能够高效地处理任务并且最大化利用资源的基础,本节介绍了 Go 语言用于处理并发任务的 G - M - P 模型,我们不仅介绍了它们各自的数据结构以及常见状态,还通过特定场景介绍调度器的工作原理以及不同数据结构之间的协作关系,相信能够帮助各位读者理解调度器的实现。