mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1153 字
3 分钟
Go 底层原理系列导读
2023-06-01

Go 以”简单”著称,但这份简单是有代价的。goroutine 的调度、GC 的停顿、interface 的内存布局、channel 的锁竞争,这些运行时细节在大多数时候对你透明,直到它们不透明:线上服务 P99 延迟突然飙升,pprof 显示 GC 占了 30% 的 CPU;goroutine 泄漏导致内存缓慢增长,但无法从代码表面看出哪里泄漏了;逃逸分析让一个看似栈分配的对象跑到了堆上,性能掉了 10 倍。

我写这个系列,是因为自己在排查这些问题时踩过太多坑。理解 Go Runtime 的底层机制,是为了在这些问题出现时有判断力:知道该看哪里、该调什么、该避免什么。本系列从 Go 程序的启动流程和 GMP 调度模型出发,逐层深入内存管理、GC、channel、interface 等核心机制,再到系统调用、netpoll、ELF 这些底层机制,最后落到性能调优。错误处理、泛型、并发模式、测试这些偏工程实践的内容另立普通博客,不收进这个系列,免得把 runtime 主线冲淡。

系列预期#

  • 帮你建立对 Go Runtime 内部机制的系统性理解,遇到性能问题、内存泄漏、调度异常时能快速定位方向
  • 提供可直接落地的性能调优思路:pprof 分析、GC 调参、逃逸分析
  • 不是 Go 语法教程,不会从零讲 if/for/struct
  • 不是源码逐行注释,重点在机制和设计思路,而非每一行代码的含义

知识准备#

  • 熟悉 Go 基本语法,能独立编写中小型项目
  • 了解操作系统基本概念:进程、线程、系统调用、虚拟内存
  • 对计算机体系结构有基本认知:CPU 缓存、内存对齐、指令执行
  • 接触过并发编程,知道锁、竞态条件、死锁这些概念

推荐书目和教程#

项目目录#

基础篇#

核心原理篇#

底层机制篇#

并发原语篇#

性能调优篇#

支持与分享

如果这篇文章对你有帮助,欢迎支持作者或分享给更多人

Go 底层原理系列导读
https://blog.souloss.cn/posts/golang/go-series-guide/
作者
Souloss
发布于
2023-06-01
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时